Files
gym-manage/TEST_REPORT_full_flow_UI.md
T

7.0 KiB
Raw Blame History

全面端到端测试报告(含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 层: 通过 2 / 失败 0 / 总计 2
  API层: 通过 14 / 失败 0 / 总计 14
  总通过: 16  /  总失败: 0  /  总计: 16
═══════════════════════════════════════════

测试范围

模块 项目 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:113分钟前) 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 一致。

全流程步骤梳理

1. [UI-Playwright] 管理员登录后台 → 导航团课管理
2. [UI-Playwright] 点击"新增团课" → 填写表单(无封面、张教练) → 提交
3. [UI-Playwright] 关闭"时间冲突警告"弹窗 → 搜索验证课程创建成功
4. [API] 从创建响应提取 qrCodePath → 下载二维码到 QRCODE/ 目录 (1984 bytes) 
5. [API] 会员登录 → 预约团课 (距开课~5h,满足 ≥30min 要求)
6. [API] 管理员修改 startTime→+1h (满足签到窗口:开课前2h内)
7. [API] 会员扫码签到
8. [API] 管理员修改 startTime→-3min (满足开课窗口:10分钟内)
9. [API] 教练手动开课 → "开课成功"
10.[API] 管理员修改 endTime→-2min (满足结课窗口)
11.[API] 教练手动结课 → "结课成功"

已知问题

问题 严重度 描述
/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 字段直接获取(已验证可用)。