Files
realizemultiagent/shared/reports/user-auth-test-plan.md
2026-04-02 00:59:42 +08:00

8.3 KiB
Raw Permalink Blame History

用户注册登录模块 — 测试计划

1. 文档变更记录

日期 版本 变更说明 作者
2026-03-28 v0.1 初始版本,接口 review + 测试用例设计 QA

2. 接口设计 Review

2.1 发现的问题

# 问题 严重程度 说明
P1 POST /api/auth/send-code 未限制发送频率 攻击者可无限发送短信验证码,造成资源浪费与安全隐患
P2 POST /api/auth/register 入参未校验 code 格式 未明确是 4 位还是 6 位数字,可能产生边界问题
P3 POST /api/auth/login 无登录失败次数限制 暴力破解风险,建议增加锁定机制
P4 POST /api/auth/change-password旧密码校验 只需手机号+验证码即可修改密码,账号被盗后攻击面大
P5 DELETE /api/auth/devices/:id 无被踢设备需确认机制 多设备并发操作可能导致误踢,建议增加二次确认字段
P6 Token 无刷新机制 access token 过期后需重新登录,用户体验差
P7 GET /api/auth/devices 未返回 lastActiveAt 字段 前端无法判断设备活跃状态,用户体验受影响

2.2 待确认项(已记录,需与 BE 确认)

  1. 验证码长度:是 4 位还是 6 位数字?
  2. 同一手机号重复注册时,错误码和错误信息是什么?
  3. Token 有效期是多久?(用于 V4 测试)
  4. 图形验证码有效期是多久?
  5. 多设备数量上限 3 个,是否包括当前登录设备本身?

3. 测试用例

F1 用户注册

ID 场景 操作步骤 预期结果 优先级 对应验收标准
TC-F1-01 正常注册流程 1. 获取图形验证码 2. 发送短信验证码 3. 填写手机号+验证码+6位密码提交 注册成功,返回 token 和 user 信息 P0
TC-F1-02 同一手机号重复注册V1 使用已注册手机号重新走注册流程 返回错误码,提示手机号已注册 P0 V1
TC-F1-03 图形验证码错误 发送短信时填入错误的图形验证码 返回错误,图形验证码校验失败 P0
TC-F1-04 短信验证码错误 注册时填入错误验证码 返回错误,验证码错误 P0
TC-F1-05 短信验证码过期V2 1. 发送验证码 2. 等待6分钟 3. 用过期验证码注册 返回错误,验证码已过期 P0 V2
TC-F1-06 密码长度不足V3 注册时填写5位密码 返回错误密码长度不符合要求≥6位 P0 V3
TC-F1-07 密码长度边界6位 注册时填写6位密码 注册成功 P1 V3
TC-F1-08 手机号格式错误 填入非手机号格式 返回错误,手机号格式不正确 P1
TC-F1-09 密码为空 注册时不填密码 返回错误,密码不能为空 P1

F2 用户登录

ID 场景 操作步骤 预期结果 优先级 对应验收标准
TC-F2-01 正常登录 手机号+正确密码登录 登录成功,返回 token 和 user 信息 P0
TC-F2-02 密码错误 输入错误密码登录 返回错误,密码错误(不暴露手机号是否存在) P0
TC-F2-03 未注册手机号登录 使用未注册手机号登录 返回错误,手机号未注册 P0
TC-F2-04 空密码登录 不填密码直接登录 返回错误,密码不能为空 P1
TC-F2-05 Token 正常有效性 登录后访问 GET /api/auth/devices 返回设备列表 P0

F3 修改密码

ID 场景 操作步骤 预期结果 优先级 对应验收标准
TC-F3-01 正常修改密码 手机号+验证码+新密码6位以上提交 修改成功,返回成功信息 P0
TC-F3-02 新密码长度不足 修改密码时填写5位新密码 返回错误,密码长度不符合要求 P0 V3
TC-F3-03 修改密码后原Token有效性 修改密码后用原 token 访问受保护接口 需确认Token 是否仍然有效 P1
TC-F3-04 修改密码后其他设备状态 一台设备修改密码后,检查其他设备 Token 建议:其他设备 Token 应失效(安全考虑) P1

F4 多设备管理

ID 场景 操作步骤 预期结果 优先级 对应验收标准
TC-F4-01 查看设备列表 登录后访问 GET /api/auth/devices 返回当前账号的登录设备列表 P0
TC-F4-02 强制下线指定设备 调用 DELETE /api/auth/devices/:id 下线非当前设备 指定设备被下线,返回成功 P0
TC-F4-03 强制下线当前设备 尝试下线自己 应允许,提示当前设备已下线 P1
TC-F4-04 下线不存在设备 用无效 deviceId 调用下线接口 返回错误,设备不存在 P1
TC-F4-05 第4设备踢出第1设备V5 1. 登录设备AB、C、D 2. 登录第4个设备D 3. 检查设备A的Token状态 设备A被踢出Token失效再次访问接口返回401 P0 V5
TC-F4-06 第4设备登录后立即访问 登录第4个设备后立刻用第1个设备发起请求 第1设备请求应被拒绝401 P0 V5

F5 Token 安全V4

ID 场景 操作步骤 预期结果 优先级 对应验收标准
TC-F5-01 Token 过期拒绝访问 1. 获取 Token 2. 等待 Token 过期(或手动篡改) 3. 用过期 Token 访问 GET /api/auth/devices 返回 401 UnauthorizedToken 已过期 P0 V4
TC-F5-02 伪造 Token 访问 使用伪造的 JWT Token 访问受保护接口 返回 401 Unauthorized P0 V4
TC-F5-03 无 Token 访问受保护接口 直接访问 GET /api/auth/devices 不带 Authorization 返回 401 Unauthorized P0 V4
TC-F5-04 畸形 Token 格式 发送格式错误的 Authorization header 返回 401 Unauthorized P1 V4

4. 测试数据要求

数据项 要求
手机号 至少准备 3 个有效手机号(用于多设备测试)
密码 准备 5 位无效、6位边界有效、8位正常有效各一个
短信验证码 由后端提供测试专用通道或 mock
图形验证码 由后端提供测试专用 key/code
设备名称 模拟 4 种不同设备名iPhone 14, Xiaomi 13, iPad Pro, Web Browser

5. 测试环境要求

  1. 数据库:测试环境独立数据库,支持数据清理
  2. 短信网关:测试环境使用日志打印或内存 mock不真实发送短信
  3. JWT Secret:测试环境使用固定密钥,支持手动构造过期 Token
  4. 多设备模拟:支持在 4 个不同"设备"上同时登录HTTP Header 或 Cookie 区隔)

6. 阻塞项(等待 BE/FE 完成后才能执行)

  • BE短信验证码发送与验证逻辑实现
  • BEJWT Token 生成与验证逻辑实现
  • BE多设备登录数量限制3个及踢出逻辑实现
  • BE密码加密存储及修改逻辑实现
  • FE注册/登录页面 UI 实现
  • FE多设备管理页面实现

7. 测试进度

模块 状态 开始时间 完成时间 备注
接口 Review 完成 2026-03-28 2026-03-28
测试用例设计 完成 2026-03-28 2026-03-28
测试环境准备 待开始 等待 BE
功能测试执行 待开始 等待 BE/FE
测试报告 待开始

8. 风险项

风险 影响 缓解措施
短信验证码 mock 依赖 BE 配合 测试进度可能受阻 提前约定 mock 接口格式
多设备并发测试难以在纯 HTTP 模拟 需明确设备唯一标识策略 与 BE 确认 Device Token 隔离机制
Token 过期等待时间较长V2 需等5分钟V4 需等 Token 过期) 延长测试周期 BE 提供 Token 过期时间配置,支持快速触发过期