guest.md 14 KB

测试用例 · 游客(Guest)

关联场景:../user-scenarios/01-guest.md。对应 e2e:../e2e/roles/*(登录类)。

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-01 G-1 启动/首页 游客 P1 功能 清除登录态 1. 冷启动进入 splash/home 2. 观察首页与入口 显示引流首页,不进入任何业务页;明显展示微信/手机号/邀请登录入口 JwtInterceptor 拦截 /api/** e2e/roles/child/login.spec.js(反向)
TC-G-02 G-2 认证 游客 P0 接口 微信授权可用(test-mode) 1. 点微信一键登录 2. POST /api/auth/wechat-login 返回 Result 含 token+用户信息;角色默认 parent;跳转家长首页;首次登录建 User+family_members(memberType=login) AuthController/API_REFERENCE 1.1 e2e/roles/parent/../login
TC-G-03 G-3 认证 游客 P0 接口 有效手机号 13800000001 1. POST /api/auth/send-code 2. POST /api/auth/phone-login(验证码) 3. 重复错误验证码 验证码正确→登录下发 token;错误→提示失败且不产生会话;限流生效 统一 POST/JWT —
TC-G-04 G-4 家庭/邀请 游客 P1 功能 家长已 POST /api/family/invite/generate 生成邀请 1. 扫码/落地页进入 2. POST /api/auth/register-with-invite(带令牌) 登录后自动归属对应家庭,成员列表出现该用户;令牌失效→「邀请已失效」 FamilyInviteController e2e/roles/teacher/family-binding.spec.js(参考)
TC-G-05 G-5 权限 游客 P0 权限 无 token;已知业务路由 1. 直接请求 /pages/family/index 等(无 Authorization) 2. POST /api/product/list、/api/articles/list 3. 点商品/文章详情需登录项 业务页→401 跳登录,登录后回跳;商城/文章列表可见(公开);需登录详情被拦截 JWT;8 公开路径白名单(1.1) e2e/debug-control.spec.js(参考)

异常/边界补充

  • TC-G-02a(异常):同一微信二次登录应返回已有账号,不重复建号(验重)。
  • TC-G-03a(异常):验证码过期/频繁发送触发限流,提示明确。
  • TC-G-05a(权限):token 过期后任意 /api/** 接口统一 401,前端统一跳登录。

补齐用例(缺口场景 SC-G-06~10)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-06 SC-G-06 权限 游客 P0 权限 无 token;已知业务路由 1. 直接请求 /api/** 受保护接口(如 /api/family/member/list) JwtInterceptor 拦截(8 个公开路径除外);缺 token→401/403,不泄露内部错误堆栈 JwtInterceptor e2e/debug-control.spec.js(参考)
TC-G-07 SC-G-07 测试模式 游客 P2 功能 wechat.test-mode:true 1. 用模拟数据登录 仅测试环境生效;生产强制真授权;模拟登录不建真实微信绑定 AGENTS.md 测试模式 —
TC-G-08 SC-G-08 环境切换 游客 P2 功能 多环境(develop/trial/release) 1. uni.getAccountInfoSync() 判定环境 2. 切对应 API 地址 环境识别失败回退默认地址;接口地址正确 config.js —
TC-G-09 SC-G-09 认证 游客 P1 功能 已登录 1. 个人中心→退出 2. 清 token 回登录页 退出后本地缓存敏感数据清除;再次进入需登录 AuthController —
TC-G-10 SC-G-10 注册 游客 P1 功能 未注册账号 1. 登录失败提示「未注册」 2. 引导注册流程 引导至注册;已注册账号不重复建档 AuthController —

本轮扩展场景用例(新增 SC-G)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-11 G-11 协议页/AgreementController 游客 P2 功能 未登录/游客态 1. 按场景流程执行:进入 → 查看协议全文 → 同意/返回 2. 观察结果 达成目标:合规告知;边界:未同意不可进入注册/核心流程 协议页/AgreementController —
TC-G-12 G-12 config.js 游客 P2 功能 未登录/游客态 1. 按场景流程执行:H5 打开 → 环境探测 → 提示在微信内打开或降级静态页 2. 观察结果 达成目标:非微信浏览器打开小程序链接;边界:探测失败给出明确引导 config.js —

异常流用例(派生自正常流)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-01-E G-1 启动/首页 游客 P2 异常 清除登录态 1. 输入非法参数/网络中断/请求超时 2. 观察降级 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 JwtInterceptor 拦截 /api/** —
TC-G-02-E G-2 认证 游客 P2 异常 微信授权可用(test-mode) 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 AuthController/API_REFERENCE 1.1 —
TC-G-03-E G-3 认证 游客 P2 异常 有效手机号 13800000001 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 统一 POST/JWT —
TC-G-04-E G-4 家庭/邀请 游客 P2 异常 家长已 POST /api/family/invite/generate 生成邀请 1. 输入非法参数/网络中断/请求超时 2. 观察降级 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 FamilyInviteController —
TC-G-05-E G-5 权限 游客 P2 异常 无 token;已知业务路由 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 JWT;8 公开路径白名单(1.1) —
TC-G-06-E SC-G-06 权限 游客 P2 异常 无 token;已知业务路由 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 JwtInterceptor —
TC-G-07-E SC-G-07 测试模式 游客 P3 异常 wechat.test-mode:true 1. 输入非法参数/网络中断/请求超时 2. 观察降级 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 AGENTS.md 测试模式 —
TC-G-08-E SC-G-08 环境切换 游客 P3 异常 多环境(develop/trial/release) 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 config.js —
TC-G-09-E SC-G-09 认证 游客 P2 异常 已登录 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 AuthController —
TC-G-10-E SC-G-10 注册 游客 P2 异常 未注册账号 1. 未登录/过期 token/非法切换 2. 观察拦截 token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 AuthController —

本轮扩展异常流(派生自新增场景)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-11-E G-11 协议页/AgreementController 游客 P2 异常 未登录/游客态 1. 输入非法格式/重复/越界值 2. 观察处理 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 协议页/AgreementController —
TC-G-12-E G-12 config.js 游客 P2 异常 未登录/游客态 1. 输入非法格式/重复/越界值 2. 观察处理 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 config.js —

权限流用例(派生自正常流)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-01-P G-1 启动/首页 游客 P1 权限 清除登录态 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 JwtInterceptor 拦截 /api/** —
TC-G-02-P G-2 认证 游客 P1 权限 微信授权可用(test-mode) 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 AuthController/API_REFERENCE 1.1 —
TC-G-03-P G-3 认证 游客 P1 权限 有效手机号 13800000001 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 统一 POST/JWT —
TC-G-04-P G-4 家庭/邀请 游客 P1 权限 家长已 POST /api/family/invite/generate 生成邀请 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 FamilyInviteController —
TC-G-05-P G-5 权限 游客 P1 权限 无 token;已知业务路由 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 JWT;8 公开路径白名单(1.1) —
TC-G-06-P SC-G-06 权限 游客 P1 权限 无 token;已知业务路由 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 JwtInterceptor —
TC-G-07-P SC-G-07 测试模式 游客 P2 权限 wechat.test-mode:true 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 AGENTS.md 测试模式 —
TC-G-08-P SC-G-08 环境切换 游客 P2 权限 多环境(develop/trial/release) 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 config.js —
TC-G-09-P SC-G-09 认证 游客 P1 权限 已登录 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 AuthController —
TC-G-10-P SC-G-10 注册 游客 P1 权限 未注册账号 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 AuthController —

本轮扩展权限流(派生自新增场景)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-11-P G-11 协议页/AgreementController 游客 P2 权限 未登录/游客态 1. 未登录直接调用受保护接口(报告/任务/方案/订单/能量/管理端) 2. 观察拦截 统一 401/403,不泄露内部错误与数据;8 个公开路径除外 协议页/AgreementController —
TC-G-12-P G-12 config.js 游客 P2 权限 未登录/游客态 1. 未登录直接调用受保护接口(报告/任务/方案/订单/能量/管理端) 2. 观察拦截 统一 401/403,不泄露内部错误与数据;8 个公开路径除外 config.js —

非功能测试用例(性能 / 兼容 / 安全)

非功能维度:性能(大文件/并发/限流)、兼容(多端/多浏览器/主题)、安全(IDOR/XSS/上传/鉴权/SSRF)。编号后缀 -N 与正常流/异常流(-E)/权限流(-P)并列。

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-N01 SC-G-01 落地页 游客 P2 性能 弱网/首次访问 1. 打开落地页/邀请页 2. 测首屏时间 首屏 ≤ 3s;骨架屏生效;CDN 资源命中;无白屏 落地页/邀请 —
TC-G-N02 SC-G-03 浏览转化 游客 P2 兼容 微信内 H5 / Safari / Chrome / 小程序 webview 1. 各端浏览内容 2. 触发登录 布局一致;微信授权正常;兜底登录可用;无错位 登录注册 —
TC-G-N03 SC-G-12 非微信H5 游客 P2 兼容 非微信浏览器(Chrome PC) 1. 打开 H5 2. 走手机号兜底登录 功能可用;无微信 SDK 依赖报错;流程闭环 H5 兜底 —
TC-G-N04 SC-G-01 落地页 游客 P0 安全 未登录态(无 token) 1. 直接调 /api/family/*、/api/health/report/list 等受保护接口 返回 401;不泄露数据与结构 接口鉴权 e2e/api/nonfunc-security.spec.js
TC-G-N05 SC-G-02 登录注册 游客 P0 安全 爆破/重放工具 1. 高频错误密码登录 2. 验证码重放 触发限流/锁定;验证码一次性;防爆破;无撞库成功 登录限流 —