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 认证 游客 P2 接口 有效手机号 13800000001 1. POST /api/auth/send-code 2. POST /api/auth/phone-login(验证码) 3. 重复错误验证码 验证码正确→登录下发 token;错误→提示失败且不产生会话;限流生效 ⚠ API 兼容保留:小程序端无入口(登录走 SC-G-02),2026-11-01 口径 统一 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(异常):验证码过期/频繁发送触发限流,提示明确(同为 API 兼容保留级)。
  • 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 SC-G-01 启动/首页 游客 P2 异常 清除登录态;弱网/无微信 SDK 1. 冷启动弱网、微信环境探测失败 2. 点击登录超时 1. 不白屏、提供"稍后"/手机号登录兜底 2. 超时给重试而非 500;不泄露内部堆栈 JwtInterceptor 拦截 /api/** —
TC-G-02-E SC-G-02 认证 游客 P2 异常 微信授权可用(test-mode) 1. 用户拒绝微信授权 2. openid 已存在账号重复登录 3. 授权回调超时 1. 回退手机号登录、停留登录页不报错 2. 返回已有账号不重复建号 3. 超时提示重试、不建脏号 AuthController/API_REFERENCE 1.1 —
TC-G-03-E SC-G-03 认证 游客 P2 异常 有效手机号 13800000001 1. 验证码错误/过期 2. 号码格式非法(如 123) 3. 60s 内重复发码触发限流 4. 错误验证码 1. 提示失败且不签发 token 2. 格式校验 400 拦截 3. 限流提示"操作频繁" 4. 绝不产生会话 统一 POST/JWT —
TC-G-04-E SC-G-04 家庭/邀请 游客 P2 异常 家长已 POST /api/family/invite/generate 生成邀请 1. 邀请码过期/被篡改 2. 已登录用户用他人邀请重复加入 1. 拒绝并提示"邀请已失效" 2. 按业务规则处理(加入或被拒)、不串家庭 FamilyInviteController —
TC-G-05-E SC-G-05 权限 游客 P2 异常 无 token;已知业务路由 1. 未登录直接请求业务页/受保护接口 2. 受限操作(下单/评论)未登录 1. 统一 401 跳登录;登录后回跳 2. 重定向登录;仅 8 公开路径放行 JWT;8 公开路径白名单(1.1) —
TC-G-06-E SC-G-06 权限 游客 P1 异常 无 token;已知业务路由 1. 缺 token/过期 token 调 /api/** 2. 触发 8 个公开路径之一 1. 统一 401/403、不泄露内部错误与结构 2. 公开路径正常返回、不误拦 JwtInterceptor —
TC-G-07-E SC-G-07 测试模式 游客 P3 异常 wechat.test-mode:true 1. 生产环境误开 test-mode 2. 模拟登录 token 在生产的合法性 1. 生产强制真授权、模拟登录被拒 2. 测试模式仅测试环境生效、不污染生产数据 AGENTS.md 测试模式 —
TC-G-08-E SC-G-08 环境切换 游客 P3 异常 多环境(develop/trial/release) 1. uni.getAccountInfoSync() 返回异常/空 2. 环境识别失败 1. 回退默认 API 地址、功能可用 2. 不因识别失败崩溃/错连 config.js —
TC-G-09-E SC-G-09 认证 游客 P2 异常 已登录 1. 退出后 token 仍调用接口 2. 退出后本地敏感缓存未清 1. 退出后接口 401、需重登 2. 本地 token/隐私数据已清除 AuthController —
TC-G-10-E SC-G-10 注册 游客 P2 异常 未注册账号 1. 登录失败误判 2. 已注册账号再次引导建档 1. 明确"未注册"并引导注册 2. 已注册不重复建档、直接登录 AuthController —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-G-11-E SC-G-11 协议页 游客 P2 异常 未登录/游客态 1. 未同意协议即进入注册/核心流程 2. 协议内容加载失败 1. 拦截并强制先同意 2. 加载失败给重试、不绕过同意 协议页/AgreementController —
TC-G-12-E SC-G-12 config.js 游客 P2 异常 非微信浏览器(Chrome PC) 1. 微信环境探测失败 2. 非微信环境打开小程序链接 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-02 浏览转化 游客 P2 兼容 微信内 H5 / Safari / Chrome / 小程序 webview 1. 各端浏览内容 2. 触发登录 布局一致;微信授权正常;兜底登录可用;无错位 登录注册(微信授权) e2e/api/nonfunc-perf-compat.spec.js
TC-G-N03 SC-G-12 非微信H5 游客 P2 兼容 非微信浏览器(Chrome PC) 1. 打开 H5 2. 走手机号兜底登录 功能可用;无微信 SDK 依赖报错;流程闭环 H5 兜底 e2e/api/nonfunc-perf-compat.spec.js
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. 验证码重放 触发限流/锁定;验证码一次性;防爆破;无撞库成功 登录限流 —