rwadurian/backend/services/identity-service/test/manual-test-scenarios.md

177 lines
5.5 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.

# 手动测试场景
## 用户旅程测试
### 场景 1: 新用户完整注册流程
1. **自动创建账户**
```bash
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 用于后续测试!**
2. **查看个人资料**
```bash
curl -X GET http://localhost:3000/api/v1/user/my-profile \
-H "Authorization: Bearer {accessToken}"
```
- ✅ 返回正确的用户信息
3. **更新个人资料**
```bash
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号"
}'
```
- ✅ 更新成功
- ✅ 再次查询个人资料,确认更新生效
4. **查看设备列表**
```bash
curl -X GET http://localhost:3000/api/v1/user/my-devices \
-H "Authorization: Bearer {accessToken}"
```
- ✅ 看到 1 个设备
### 场景 2: 多设备管理
5. **在新设备上使用助记词恢复**
```bash
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
- ✅ 钱包地址与第一个设备相同
6. **查看设备列表(使用新设备的 token**
- ✅ 看到 2 个设备
7. **移除旧设备**
```bash
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 管理
8. **等待 access token 过期(或修改过期时间为 1 分钟测试)**
- ✅ 过期的 token 无法访问 API
9. **使用 refresh token 获取新的 access token**
```bash
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 认证
10. **提交 KYC 信息**
```bash
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: 推荐系统
11. **根据推荐码查询用户**
```bash
curl -X GET http://localhost:3000/api/v1/user/by-referral-code/{referralCode}
```
- ✅ 返回正确的账户信息
12. **使用推荐码注册新用户**
```bash
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 采集
### 备份和恢复
- [ ] 数据库备份
- [ ] 数据恢复测试
- [ ] 灾难恢复演练