关联场景:
../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(参考) |
/api/** 接口统一 401,前端统一跳登录。| 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 |
— |
| 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. 验证码重放 | 触发限流/锁定;验证码一次性;防爆破;无撞库成功 | 登录限流 | — |