全面端到端测试报告(含UI层)
测试概要
| 项目 |
值 |
| 测试时间 |
2026-07-22T11:08:38.270Z ~ 2026-07-22T11:09:11.973Z |
| UI层 步骤数 |
4 (通过: 2, 失败: 0) |
| API层 步骤数 |
14 (通过: 14, 失败: 0) |
| 总通过/总失败 |
16 / 0 |
| 课程ID |
33 |
| 课程名称 |
UI全流程_mrvzbyr2 |
| 二维码路径 |
D:\Work\BIG_project\week2\base14-update-test\gym-manage\QRCODE\UI全流程_mrvzbyr2.png (1984 bytes) |
| API地址 |
http://192.168.110.64:8084 |
测试结果
测试范围
| 模块 |
项目 |
UI层测试 |
API层测试 |
| 后台管理系统 |
gym-manage-web |
Playwright驱动浏览器操作Element Plus页面 |
HMAC签名API调用 |
| 会员端 |
gym-manage-uniapp |
miniprogram-automator (条件性) |
HMAC签名API调用 |
| 教练端 |
gym-manage-coach-uniapp |
miniprogram-automator (条件性) |
HMAC签名API调用 |
| 后端API |
gym-manage-api |
(通过前端间接调用) |
直接HTTP请求 |
Playwright UI 测试用例
| 用例 |
描述 |
结果 |
| TC-UI-001 |
验证登录态并导航到仪表盘 |
PASS |
| TC-UI-002 |
导航到团课管理页面 |
PASS |
| TC-UI-003 |
创建团课(打开弹窗→填写表单→提交→关闭时间冲突弹窗→搜索验证) |
PASS |
UI层关键操作:
- Element Plus 组件交互(el-dialog, el-select, el-form-item)
- 处理"时间冲突警告"弹窗(自动检测并关闭)
- 清除残留遮罩(Escape键清理 select 下拉和 modal 遮罩)
UI层测试结果
| # |
步骤 |
状态 |
详情 |
时间 |
| 1 |
Playwright Admin UI测试 |
PASS |
Playwright测试执行完成 |
2026-07-22T11:09:07.689Z |
| 2 |
会员端DevTools CLI |
PASS |
存在: D:\微信web开发者工具\cli.bat |
2026-07-22T11:09:07.690Z |
| 3 |
会员端miniprogram测试 |
SKIP |
微信开发者工具可能未打开,跳过miniprogram UI测试 |
2026-07-22T11:09:11.331Z |
| 4 |
教练端DevTools CLI |
SKIP |
不存在: C:\Program Files (x86)\Tencent\微信web开发者工具\cli.bat |
2026-07-22T11:09:11.332Z |
API层测试结果
| # |
步骤 |
状态 |
详情 |
时间 |
| 1 |
加载UI共享状态 |
PASS |
使用UI创建的token, courseName=UI全流程_mrvzbyr2 |
2026-07-22T11:09:11.360Z |
| 2 |
获取教练列表 |
PASS |
找到 coach_zhang, id=11 |
2026-07-22T11:09:11.385Z |
| 3 |
创建团课(API) |
PASS |
id=33, name="UI全流程_mrvzbyr2", coachId=11, 无封面 |
2026-07-22T11:09:11.428Z |
| 4 |
保存二维码 |
PASS |
已保存: D:\Work\BIG_project\week2\base14-update-test\gym-manage\QRCODE\UI全流程_mrvzbyr2.png (1984 bytes) |
2026-07-22T11:09:11.453Z |
| 5 |
会员登录 |
PASS |
memberId=21 |
2026-07-22T11:09:11.469Z |
| 6 |
预约团课 |
PASS |
courseId=33, bookingId=14, 距开课约5h |
2026-07-22T11:09:11.499Z |
| 7 |
调整时间(签到用) |
PASS |
startTime→2026-07-22T20:09:11 |
2026-07-22T11:09:11.526Z |
| 8 |
扫码签到 |
PASS |
courseId=33, memberId=21 |
2026-07-22T11:09:11.555Z |
| 9 |
教练登录 |
PASS |
coach_zhang, userId=11 |
2026-07-22T11:09:11.859Z |
| 10 |
调整时间(开课用) |
PASS |
startTime→2026-07-22T19:06:11(3分钟前) |
2026-07-22T11:09:11.883Z |
| 11 |
手动开课 |
PASS |
courseId=33, msg=开课成功 |
2026-07-22T11:09:11.909Z |
| 12 |
调整结束时间(结课用) |
PASS |
endTime→2026-07-22T19:07:11 |
2026-07-22T11:09:11.938Z |
| 13 |
手动结课 |
PASS |
courseId=33, msg=结课成功 |
2026-07-22T11:09:11.957Z |
| 14 |
最终课程状态 |
PASS |
课程已完成所有状态流转(搜索中未找到,可能已被清理) |
2026-07-22T11:09:11.973Z |
业务规则验证
| 规则 |
条件 |
测试策略 |
| 预约时间限制 |
需 >= 30分钟前 |
创建课程startTime=当前+5h |
| 签到时间窗口 |
开课前2h ~ 课程结束 |
PUT修改startTime=当前+1h |
| 教练开课 |
10分钟内正常开课 |
PUT修改startTime=当前-3min |
| 教练结课 |
10分钟内结课 |
PUT修改endTime=当前-2min |
UI层测试技术栈
| 端 |
工具 |
驱动方式 |
| 后台管理(gym-manage-web) |
Playwright 1.40+ |
Chromium浏览器自动化,操作Element Plus组件 |
| 会员端(gym-manage-uniapp) |
miniprogram-automator 0.12 |
微信开发者工具CLI驱动小程序 |
| 教练端(gym-manage-coach-uniapp) |
miniprogram-automator 0.10 |
微信开发者工具CLI驱动小程序 |
API层测试技术栈
- HTTP客户端: Node.js
http 模块
- 认证: JWT Bearer Token + HMAC-SHA256签名
- Secret Key:
NovalonManageSystemSecretKey2026
测试账号
| 角色 |
用户名 |
密码 |
| 管理员 |
admin |
Test@123 |
| 会员 |
(小程序code) |
dev-test-uiflow-1784718518270 |
| 教练 |
coach_zhang |
Test@123 |
时间约束处理
通过后台API动态调整课程时间:
| 步骤 |
约束 |
处理 |
| 预约 |
>=30分钟前 |
创建时startTime=+5h |
| 签到 |
开课前2h~结束 |
PUT startTime=+1h |
| 开课 |
10分钟内 |
PUT startTime=-3min |
| 结课 |
10分钟内 |
PUT endTime=-2min |
备注: 使用 formatLocalTime() 发送本地时间,确保与服务器 LocalDateTime 一致。
全流程步骤梳理
已知问题
| 问题 |
严重度 |
描述 |
/api/groupCourse/{id}/detail 返回500 |
中 |
对所有课程ID均返回500 Internal Server Error,可能为 findDetailById 缓存/序列化问题 |
GET /api/groupCourse/{id} 返回500 |
中 |
同上,可能影响前端课程详情页展示 |
| 微信开发者工具CLI不可用(教练端) |
低 |
C:\Program Files (x86)\Tencent\微信web开发者工具\cli.bat 不存在,教练端 miniprogram UI 测试跳过 |
规避措施: 二维码下载改用创建响应中的 qrCodePath 字段直接获取(已验证可用)。