Files
gym-manage/TEST_REPORT_full_flow.md
T

106 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 全面端到端测试报告
## 测试概要
| 项目 | 值 |
|------|-----|
| 测试时间 | 2026-07-22T10:36:09.900Z ~ 2026-07-22T10:36:11.075Z |
| 总步骤数 | 14 |
| 通过 | 14 |
| 失败 | 0 |
| 课程ID | 33 |
| 课程名称 | 全流程测试-mrvy5z1v |
| 二维码路径 | D:\Work\BIG_project\week2\base14-update-test\gym-manage\QRCODE\全流程测试_mrvy5z1v.png |
| API地址 | http://192.168.110.64:8084 |
## 测试范围
| 模块 | 项目 | 测试内容 |
|------|------|----------|
| 后台管理系统 | `gym-manage-web` | 管理员登录、创建团课(无封面、张教练)、修改团课时间、保存二维码 |
| 会员端 | `gym-manage-uniapp` | 会员登录、预约团课、扫码签到 |
| 教练端 | `gym-manage-coach-uniapp` | 教练登录、手动开课、手动结课 |
| 后端API | `gym-manage-api` | 所有操作通过REST API完成 |
## 业务规则验证
| 规则 | 条件 | 测试策略 |
|------|------|----------|
| 预约时间限制 | 需在开课前 >= 30分钟 | 创建课程startTime为5小时后,预约成功 |
| 签到时间窗口 | 开课前2小时 ~ 课程结束 | 调整startTime为1小时后,签到成功 |
| 教练开课 | 开课时间后10分钟内正常开课 | 调整startTime为3分钟前,开课成功 |
| 教练结课 | 结束时间后10分钟内结课 | 调整endTime为2分钟前,结课 |
## 测试流程
```
1. Admin: Login -> Get coach list -> Create course -> Save QR code
2. Member: Login -> Book course
3. Admin: Adjust startTime (for sign-in window)
4. Member: Sign in (scan QR)
5. Admin: Adjust startTime to past (for coach start)
6. Coach: Login -> Start course
7. Admin: Adjust endTime to past (for coach end)
8. Coach: End course
```
## 详细步骤结果
| # | 步骤 | 状态 | 详情 | 时间 |
|---|------|------|------|------|
| 1 | 1a. 管理员登录 | PASS | admin / userId=1 | 2026-07-22T10:36:10.260Z |
| 2 | 1b. 获取教练列表 | PASS | 找到 coach_zhang, id=11, nickname=张教练(瑜伽) | 2026-07-22T10:36:10.291Z |
| 3 | 1c. 创建团课 | PASS | id=33, name="全流程测试-mrvy5z1v", coachId=11, 无封面, startTime=2026-07-22T23:36:10 | 2026-07-22T10:36:10.356Z |
| 4 | 1d. 保存二维码 | PASS | 已保存: D:\Work\BIG_project\week2\base14-update-test\gym-manage\QRCODE\全流程测试_mrvy5z1v.png (2121 bytes) | 2026-07-22T10:36:10.416Z |
| 5 | 2a. 会员登录 | PASS | memberId=16 | 2026-07-22T10:36:10.431Z |
| 6 | 2b. 预约团课 | PASS | courseId=33, bookingId=4, 距开课约5h>=30min要求) | 2026-07-22T10:36:10.468Z |
| 7 | 2c. 调整课程时间(签到用) | PASS | startTime→2026-07-22T19:36:101h后→满足签到2h窗口) | 2026-07-22T10:36:10.502Z |
| 8 | 2d. 扫码签到 | PASS | courseId=33, memberId=16, 签到时间距开课约1h(满足2h窗口) | 2026-07-22T10:36:10.535Z |
| 9 | 3a. 教练登录 | PASS | coach_zhang, userId=11 | 2026-07-22T10:36:10.903Z |
| 10 | 3b. 调整课程时间(开课用) | PASS | startTime→2026-07-22T18:33:103分钟前→教练可正常开课) | 2026-07-22T10:36:10.940Z |
| 11 | 3c. 手动开课 | PASS | courseId=33, status=3, msg=开课成功 | 2026-07-22T10:36:10.974Z |
| 12 | 3d. 调整结束时间(结课用) | PASS | endTime→2026-07-22T18:34:102分钟前→教练可结课) | 2026-07-22T10:36:11.002Z |
| 13 | 3e. 手动结课 | PASS | courseId=33, status=2, msg=结课成功 | 2026-07-22T10:36:11.032Z |
| 14 | 4. 最终课程状态 | PASS | name="全流程测试-mrvy5z1v", status=2, members=0, startTime=2026-07-22T18:33:10 | 2026-07-22T10:36:11.074Z |
## 使用的API端点
| 端点 | 方法 | 用途 | 认证 |
|------|------|------|------|
| `/api/auth/login` | POST | 管理员/教练登录 | HMAC签名 |
| `/api/coach/list` | GET | 获取教练列表 | JWT (Admin) |
| `/api/groupCourse` | POST | 创建团课 | JWT (Admin) |
| `/api/groupCourse/{id}` | PUT | 修改团课时间 | JWT (Admin) |
| `/api/groupCourse/{id}/detail` | GET | 获取课程详情(含二维码) | JWT (Admin) |
| `/api/member/auth/miniapp/login` | POST | 会员登录 | HMAC签名 |
| `/api/groupCourse/book` | POST | 预约团课 | JWT (Member) |
| `/api/groupCourse/signin/{memberId}` | POST | 扫码签到 | JWT (Member) |
| `/api/coach/courses/{courseId}/start` | POST | 教练手动开课 | JWT (Coach) |
| `/api/coach/courses/{courseId}/end` | POST | 教练手动结课 | JWT (Coach) |
## 认证机制
- **JWT Token**: `Authorization: Bearer {token}`
- **HMAC-SHA256**: `X-Signature`, `X-Timestamp`, `X-Nonce`
- **Secret Key**: `NovalonManageSystemSecretKey2026`
## 测试账号
| 角色 | 用户名 | 密码 |
|------|--------|------|
| 管理员 | admin | Test@123 |
| 会员 | (小程序code登录) | dev-test-fullflow-1784716569900 |
| 教练 | coach_zhang | Test@123 |
## 时间约束处理策略
本测试通过后台API动态调整课程时间,绕过各步骤的时间限制:
| 步骤 | 时间约束 | 处理方式 |
|------|----------|----------|
| 预约 | 需 >= 30分钟前 | 创建课程startTime=当前+5h |
| 签到 | 开课前2h ~ 课程结束 | PUT修改startTime=当前+1h |
| 开课 | 开课时间后10分钟内 | PUT修改startTime=当前-3min |
| 结课 | 结束时间后10分钟内 | PUT修改endTime=当前-2min |
> **注意**: 使用 `formatLocalTime()` 发送本地时间(无时区),确保与服务器 LocalDateTime 一致。