5.3 KiB
5.3 KiB
手动测试场景
用户旅程测试
场景 1: 新用户完整注册流程
-
自动创建账户
curl -X POST http://localhost:3000/api/v1/user/auto-create \ -H "Content-Type: application/json" \ -d '{ "deviceId": "manual-test-device-001", "deviceName": "iPhone 14 Pro", "provinceCode": "110000", "cityCode": "110100" }'- ✅ 返回 201
- ✅ 获得 userId, accountSequence, referralCode, mnemonic
- ✅ 获得 3 个钱包地址 (KAVA, DST, BSC)
- ✅ 获得 accessToken 和 refreshToken
- 保存 mnemonic 用于后续测试!
-
查看个人资料
curl -X GET http://localhost:3000/api/v1/user/my-profile \ -H "Authorization: Bearer {accessToken}"- ✅ 返回正确的用户信息
-
更新个人资料
curl -X PUT http://localhost:3000/api/v1/user/update-profile \ -H "Authorization: Bearer {accessToken}" \ -H "Content-Type: application/json" \ -d '{ "nickname": "测试用户", "avatarUrl": "https://example.com/avatar.jpg", "address": "北京市朝阳区测试路123号" }'- ✅ 更新成功
- ✅ 再次查询个人资料,确认更新生效
-
查看设备列表
curl -X GET http://localhost:3000/api/v1/user/my-devices \ -H "Authorization: Bearer {accessToken}"- ✅ 看到 1 个设备
场景 2: 多设备管理
-
在新设备上使用助记词恢复
curl -X POST http://localhost:3000/api/v1/user/recover-by-mnemonic \ -H "Content-Type: application/json" \ -d '{ "accountSequence": {accountSequence}, "mnemonic": "{mnemonic}", "newDeviceId": "manual-test-device-002", "deviceName": "iPad Pro" }'- ✅ 返回新的 token
- ✅ 钱包地址与第一个设备相同
-
查看设备列表(使用新设备的 token)
- ✅ 看到 2 个设备
-
移除旧设备
curl -X POST http://localhost:3000/api/v1/user/remove-device \ -H "Authorization: Bearer {newAccessToken}" \ -H "Content-Type: application/json" \ -d '{ "deviceId": "manual-test-device-001" }'- ✅ 移除成功
- ✅ 使用旧设备的 token 无法再访问 API
场景 3: Token 管理
-
等待 access token 过期(或修改过期时间为 1 分钟测试)
- ✅ 过期的 token 无法访问 API
-
使用 refresh token 获取新的 access token
curl -X POST http://localhost:3000/api/v1/user/auto-login \ -H "Content-Type: application/json" \ -d '{ "refreshToken": "{refreshToken}", "deviceId": "manual-test-device-002" }'- ✅ 获得新的 access token
- ✅ 新 token 可以正常使用
场景 4: KYC 认证
- 提交 KYC 信息
curl -X POST http://localhost:3000/api/v1/user/submit-kyc \ -H "Authorization: Bearer {accessToken}" \ -H "Content-Type: application/json" \ -d '{ "realName": "张三", "idCardNumber": "110101199001011234", "idCardFrontUrl": "https://example.com/id-front.jpg", "idCardBackUrl": "https://example.com/id-back.jpg" }'- ✅ 提交成功
- ✅ 查看个人资料,确认 KYC 信息存在且身份证号已脱敏
场景 5: 推荐系统
-
根据推荐码查询用户
curl -X GET http://localhost:3000/api/v1/user/by-referral-code/{referralCode}- ✅ 返回正确的账户信息
-
使用推荐码注册新用户
curl -X POST http://localhost:3000/api/v1/user/auto-create \ -H "Content-Type: application/json" \ -d '{ "deviceId": "manual-test-device-003", "deviceName": "Android Phone", "provinceCode": "110000", "cityCode": "110100", "inviterReferralCode": "{referralCode}" }'- ✅ 创建成功
- ✅ 新用户的 inviterSequence 正确
边界测试
设备限制测试
- 添加 5 个设备 → 成功
- 尝试添加第 6 个设备 → 失败,提示设备数量限制
- 移除 1 个设备后 → 可以再添加 1 个
并发测试(手动)
- 两个设备同时使用同一个 refresh token → 只有一个成功
- 两个用户同时创建账户 → 账户序列号不重复
- 同一个推荐码被多人使用 → 都成功
异常处理测试
- 数据库连接断开 → 返回 500 错误
- Redis 连接断开 → SMS 验证码功能失败
- Kafka 连接断开 → 事件发布失败(但主流程成功)
- 网络超时 → 合理的超时提示
数据一致性测试
- 创建账户失败(如数据库错误)→ 账户序列号不会被消耗
- 添加设备失败(如超过限制)→ 数据库没有脏数据
- Token 生成失败 → 账户仍然创建成功,可以重新登录
真实环境测试
部署到测试环境
- Docker Compose 一键启动
- Kubernetes 部署
- 环境变量配置正确
- 数据库迁移成功
- 健康检查端点响应正常
监控和日志
- 日志正确输出到文件/控制台
- 错误日志包含堆栈信息
- 性能指标可以被 Prometheus 采集
- 日志可以被 ELK/Loki 采集
备份和恢复
- 数据库备份
- 数据恢复测试
- 灾难恢复演练