child.md 29 KB

测试用例 · 孩子(Child)

关联场景:../user-scenarios/03-child.md。对应 e2e:../e2e/roles/child/*.spec.js。

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-01 C-1 权限/双角色 孩子 P0 权限 孩子可登录账号 1. 孩子独立登录 2. 检查界面与直接访问家长路由 进入孩子端首页;无切换家长入口;直接拼家长路由被 role 校验拦截 双角色铁律:孩子端不能切家长 e2e/roles/child/login.spec.js
TC-C-02 C-2 任务 孩子 P0 功能 家长已下发任务「睡前阅读」 1. 打开待执行任务 2. 点「完成」提交 状态→待家长审核;完成动作写入记录;重复提交不重复计分 TaskController e2e/roles/child/../tasks
TC-C-03 C-3 小游戏 孩子 P1 功能 小游戏入口可见 1. 打开舒尔特方格并完成 2. 查看积分/能量/排行 得分按规则计算;积分/能量到账;成绩入榜;中途退出不计分 pages/games/* e2e/roles/child/mini-games.spec.js
TC-C-04 C-4 心愿 孩子 P1 功能 孩子已创建心愿 1. 创建心愿(名称+积分) 2. 进入家长待审批 心愿进入家长待审批列表;积分不足创建拦截 WishController e2e/roles/parent/wish-management.spec.js
TC-C-05 C-4 心愿 孩子 P1 功能 家长已通过心愿 1. 操作兑换 兑换成功,积分扣减正确;驳回后不可兑换 RewardController —
TC-C-06 C-5 能量 孩子 P1 功能 已有能量记录 1. 进个人能量页 2. 执行任务后查看 显示个人能量值;有增量且流水可追溯;能量不为负 EnergyController e2e/roles/parent/energy-dashboard.spec.js(参考)
TC-C-07 C-6 报告/权限 孩子 P1 权限 家长已上传报告 1. 打开报告列表/详情 2. 检查编辑/删除入口 3. 直接调删除接口 可见报告内容;UI 无编辑/删除入口;直接调删除接口被 role 校验拒绝(403/401) 报告查看权限隔离 e2e/roles/teacher/dan-report-flow.spec.js(参考)
TC-C-08 C-7 打卡/方案 孩子 P0 功能 规划师已激活方案,生成训练任务 1. 打开方案任务 2. 完成并提交打卡 打卡成功,方案 completedDays+1;重复打卡不重复计数(幂等) 健康打卡/方案进度 e2e/roles/child/daily-checkin.spec.js
TC-C-09 C-8 勋章 孩子 P2 功能 已有部分成就 1. 打开勋章墙 显示已获得/未获得勋章及进度;未解锁不显示领取 RewardController —

双角色边界(对应 TC-C-01,门禁项)

  • TC-C-01a(权限·门禁):孩子端登录态下,任何「切回家长」的 UI 入口与接口调用都必须不存在/被拒;否则整体不通过。
  • TC-C-01b(异常):不能登录用户(local)无法自行登录,由家长代管其数据,相关任务/健康/DOA 以代管视角可见。

补齐用例(缺口场景 SC-C-10~18)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-10 SC-C-10 勋章提醒 孩子 P2 功能 达成勋章条件 1. 触发成就条件 2. 观察解锁与推送 达成→解锁+推送;重复达成不重复发推送 MedalController —
TC-C-11 SC-C-11 成长记录 孩子 P1 功能 有成长数据 1. 成长时间线→只读查看 仅展示本人数据;其他成员数据不可见 GrowthController —
TC-C-12 SC-C-12 食谱查看 孩子 P1 功能 家庭食谱已生成 1. 打开家庭食谱→当日三餐 展示早/午/晚;无食谱显示空态不 500 饮食推荐 —
TC-C-13 SC-C-13 AI 对话 孩子 P1 功能 已登录 1. 进对话→发送问题→多轮 返回适龄回答;敏感/不适龄内容被过滤 AIChatController —
TC-C-14 SC-C-14 任务重做 孩子 P1 功能 任务被驳回 1. 打开驳回任务 2. 重做→再提交 驳回后可重做;重做提交进入待审核 TaskController —
TC-C-15 SC-C-15 消息接收 孩子 P1 功能 有消息 1. 消息列表→已读 仅见发给自己的消息;越权消息不可见 消息服务 —
TC-C-16 SC-C-16 个人资料 孩子 P1 功能 已登录 1. 资料页→只读/部分可改 敏感字段(如关系)家长代管不可改 AuthController —
TC-C-17 SC-C-17 退出 孩子 P1 功能 已登录 1. 退出→清 token 退出清除本地缓存;回登录页 AuthController —
TC-C-18 SC-C-18 设备校验 孩子 P2 功能 登录设备 1. 异常设备登录校验 异常设备触发二次验证;通过后放行 AuthController —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-19 C-19 消息服务 孩子 P1 功能 已登录(默认 孩子);相关前置数据就绪 1. 按场景流程执行:消息列表 → 已读 2. 观察结果 达成目标:收通知;边界:越权消息不可见 消息服务 —
TC-C-20 C-20 GrowthController 孩子 P1 功能 已登录(默认 孩子);相关前置数据就绪 1. 按场景流程执行:档案页 → 只读;导出需家长 2. 观察结果 达成目标:看自己档案;边界:未成年人导出受限,需家长代办 GrowthController —
TC-C-21 C-21 舌诊情绪识别 孩子 P1 功能 已登录(默认 孩子);相关前置数据就绪 1. 按场景流程执行:拍照 → 上传 → 识别 2. 观察结果 达成目标:拍照上传;边界:模糊/非照片拒绝;隐私标注 舌诊情绪识别 —
TC-C-22 C-22 MallController 孩子 P1 功能 已登录(默认 孩子);相关前置数据就绪 1. 按场景流程执行:选商品 → 积分兑换 2. 观察结果 达成目标:用积分换;边界:积分不足拦截;重复兑换幂等 MallController —
TC-C-23 C-23 客服 孩子 P1 功能 已登录(默认 孩子);相关前置数据就绪 1. 按场景流程执行:提交反馈 2. 观察结果 达成目标:提反馈;边界:内容适龄过滤;敏感信息脱敏 客服 —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-01-E C-1 权限/双角色 孩子 P2 异常 孩子可登录账号 1. token 缺失/过期访问孩子端切换接口 2. 孩子端尝试调 /api/family/member/switch 切家长 3. 拼家长路由 /parent/* 缺失/过期 token 统一 401 跳登录;切换/家长路由被 role 校验 403 拦截;孩子端无任何切回家长入口;模拟登录仅测试环境生效 双角色铁律:孩子端不能切家长 —
TC-C-02-E C-2 任务 孩子 P2 异常 家长已下发任务「睡前阅读」 1. 同一任务并发双点「完成」 2. 超期任务仍提交 3. 任务被驳回后重做再提交 并发双点幂等仅计 1 次、仅 1 条流水;超期提交被拒;驳回→重做→再提交仅在重做后计 1 次 TaskController —
TC-C-03-E C-3 小游戏 孩子 P2 异常 小游戏入口可见 1. 上报异常分数(>满分/负分) 2. 中途退出(断网) 3. 同局成绩重复上报 异常分数 400 不计入;断网不计分不卡死;重复上报幂等不重复入榜 pages/games/* —
TC-C-04-E C-4 心愿 孩子 P2 异常 孩子已创建心愿 1. 心愿积分 > 自身余额 2. 心愿名称超长/含注入 3. 重复创建同名心愿 余额不足创建拦截;超长/注入 400 校验;重复创建提示已存在不双建 WishController —
TC-C-05-E C-4 心愿 孩子 P2 异常 家长已通过心愿 1. 兑换时积分余额 < 心愿价 2. 已驳回心愿再兑换 3. 并发兑换同一心愿 余额不足拦截且不扣负;已驳回提示不可兑换;并发幂等仅扣 1 次 RewardController —
TC-C-06-E C-5 能量 孩子 P2 异常 已有能量记录 1. EnergyLog 查询超时 2. 某维度权重配置为 0 占比除零 超时降级空态提示非 500;权重 0 占比兜底(0%)显示不崩;能量不为负 EnergyController —
TC-C-07-E C-6 报告/权限 孩子 P2 异常 家长已上传报告 1. 孩子直接调报告删除接口 DELETE /api/report/:id 2. 调编辑接口改报告内容 删除/编辑被 role 校验 403 拒绝;孩子端 UI 无编辑/删除入口;报告内容不被改动 报告查看权限隔离 —
TC-C-08-E C-7 打卡/方案 孩子 P2 异常 规划师已激活方案,生成训练任务 1. 打卡时方案服务超时 2. 同任务重复打卡 3. 打卡非本人方案任务 超时回滚不残半任务、进度不 +1;重复打卡幂等不重复计数;非本人任务 403 健康打卡/方案进度 —
TC-C-09-E C-8 勋章 孩子 P3 异常 已有部分成就 1. 重复触发同一成就条件 2. 未达成却直接调领取接口 重复达成不重复发推送/勋章;未达成领取 400/403 拒绝 RewardController —
TC-C-10-E SC-C-10 勋章提醒 孩子 P3 异常 达成勋章条件 1. 重复达成同一勋章条件 2. 勋章条件数据缺失 重复达成幂等仅 1 次推送;数据缺失降级不推送不 500 MedalController —
TC-C-11-E SC-C-11 成长记录 孩子 P2 异常 有成长数据 1. 成长时间线某条关联任务已删 2. 查其他成员成长数据 关联已删项跳过不报错;其他成员数据 403 不可见 GrowthController —
TC-C-12-E SC-C-12 食谱查看 孩子 P2 异常 家庭食谱已生成 1. 家庭食谱生成时 LangGraph 超时 2. 无食谱打开食谱页 超时 Fallback 通用食谱+提示非 500;无食谱空态不 500 饮食推荐 —
TC-C-13-E SC-C-13 AI 对话 孩子 P2 异常 已登录 1. 发送不适龄/含敏感词内容 2. LangGraph 不可用时多轮 不适龄/敏感词被过滤返回适龄话术;LangGraph 不可用 Fallback 兜底、多轮连续 AIChatController —
TC-C-14-E SC-C-14 任务重做 孩子 P2 异常 任务被驳回 1. 重做已被通过(非驳回)的任务 2. 重做后再次提交 非驳回态重做入口不可见/拦截;重做提交进入待审核仅计 1 次 TaskController —
TC-C-15-E SC-C-15 消息接收 孩子 P2 异常 有消息 1. 查其他孩子的消息 2. 消息 id 不存在 越权消息 403 不可见;不存在 404;列表分页正常 消息服务 —
TC-C-16-E SC-C-16 个人资料 孩子 P2 异常 已登录 1. 改关系等家长代管字段 2. 昵称含注入/超长 代管字段 403 不可改;昵称注入/超长 400 校验 AuthController —
TC-C-17-E SC-C-17 退出 孩子 P2 异常 已登录 1. 退出后旧 token 仍调用接口 2. 退出时网络中断 旧 token 失效 401;网络中断退出仍清本地缓存、下次需重登 AuthController —
TC-C-18-E SC-C-18 设备校验 孩子 P3 异常 登录设备 1. 异地/新设备登录触发风控 2. 退出后旧设备 token 调用 异常设备二次验证/拦截;旧设备 token 失效 401 AuthController —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-19-E C-19 消息服务 孩子 P2 异常 已登录(默认 孩子);相关前置数据就绪 1. 标记已读时消息 id 不存在 2. 越权标记他人消息已读 不存在 404;越权标记 403 不生效 消息服务 —
TC-C-20-E C-20 GrowthController 孩子 P2 异常 已登录(默认 孩子);相关前置数据就绪 1. 未成年人直接导出档案 2. 越权读他人档案 未成年导出 403 需家长代办;他人档案 403 不可见 GrowthController —
TC-C-21-E C-21 舌诊情绪识别 孩子 P2 异常 已登录(默认 孩子);相关前置数据就绪 1. 上传非照片/模糊图 2. 识别置信度<阈值 非照片/模糊拒绝提示『请上传清晰舌苔照』;低置信度提示重拍;隐私标注不外露 舌诊情绪识别 —
TC-C-22-E C-22 MallController 孩子 P2 异常 已登录(默认 孩子);相关前置数据就绪 1. 积分余额不足兑换 2. 并发兑换同一商品 3. 重复兑换同一商品 余额不足拦截不扣负;并发仅 1 次成功;重复兑换幂等仅 1 条 MallController —
TC-C-23-E C-23 客服 孩子 P2 异常 已登录(默认 孩子);相关前置数据就绪 1. 反馈含身份证号等敏感信息 2. 附件 >10MB 敏感信息脱敏存储;附件超限 400『附件不超过 10MB』 客服 —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-01-P C-1 权限/双角色 孩子 P1 权限 孩子可登录账号 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 双角色铁律:孩子端不能切家长 —
TC-C-02-P C-2 任务 孩子 P1 权限 家长已下发任务「睡前阅读」 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 TaskController —
TC-C-03-P C-3 小游戏 孩子 P1 权限 小游戏入口可见 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 pages/games/* —
TC-C-04-P C-4 心愿 孩子 P1 权限 孩子已创建心愿 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 WishController —
TC-C-05-P C-4 心愿 孩子 P1 权限 家长已通过心愿 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 RewardController —
TC-C-06-P C-5 能量 孩子 P1 权限 已有能量记录 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 EnergyController —
TC-C-07-P C-6 报告/权限 孩子 P1 权限 家长已上传报告 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 报告查看权限隔离 —
TC-C-08-P C-7 打卡/方案 孩子 P1 权限 规划师已激活方案,生成训练任务 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 健康打卡/方案进度 —
TC-C-09-P C-8 勋章 孩子 P2 权限 已有部分成就 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 RewardController —
TC-C-10-P SC-C-10 勋章提醒 孩子 P2 权限 达成勋章条件 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 MedalController —
TC-C-11-P SC-C-11 成长记录 孩子 P1 权限 有成长数据 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 GrowthController —
TC-C-12-P SC-C-12 食谱查看 孩子 P1 权限 家庭食谱已生成 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 饮食推荐 —
TC-C-13-P SC-C-13 AI 对话 孩子 P1 权限 已登录 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 AIChatController —
TC-C-14-P SC-C-14 任务重做 孩子 P1 权限 任务被驳回 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 TaskController —
TC-C-15-P SC-C-15 消息接收 孩子 P1 权限 有消息 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 消息服务 —
TC-C-16-P SC-C-16 个人资料 孩子 P1 权限 已登录 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 AuthController —
TC-C-17-P SC-C-17 退出 孩子 P1 权限 已登录 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 AuthController —
TC-C-18-P SC-C-18 设备校验 孩子 P2 权限 登录设备 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 AuthController —

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-19-P C-19 消息服务 孩子 P1 权限 已登录(默认 孩子);相关前置数据就绪 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 消息服务 —
TC-C-20-P C-20 GrowthController 孩子 P1 权限 已登录(默认 孩子);相关前置数据就绪 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 GrowthController —
TC-C-21-P C-21 舌诊情绪识别 孩子 P1 权限 已登录(默认 孩子);相关前置数据就绪 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 舌诊情绪识别 —
TC-C-22-P C-22 MallController 孩子 P1 权限 已登录(默认 孩子);相关前置数据就绪 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 MallController —
TC-C-23-P C-23 客服 孩子 P1 权限 已登录(默认 孩子);相关前置数据就绪 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 客服 —

五维指标变化专项用例(本轮新增 SC-C-24~25)

完整用户故事见 ../user-scenarios/07-five-dimension.md(ED-8~9)。每条含正常流 + 具体异常流(-E) + 权限流(-P)。

正常流

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-24 SC-C-24 能量/小游戏·任务 孩子 P1 功能 孩子 B 登录;成绩上报接口可用 1. B 完成小游戏/任务 2. 查自身 EnergyLog/EnergyBalance 对应维度 +amount、sourceType=game/task;B 自身能量页看到增长与流水 GameRecordService/TaskController tests/e2e/mini-games.spec.js
TC-C-25 SC-C-25 能量/方案打卡 孩子 P1 功能 方案已激活生成启动任务(SC-C-05);打卡接口可用 1. B 打开方案启动任务→打卡提交 2. 查进度与能量 GrowthTaskService 打卡对应维度+;任务进度与能量同步刷新 GrowthTaskService tests/e2e/daily-checkin-streak.spec.js

异常流(-E,具体故障注入)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-24-E SC-C-24 能量/小游戏·任务 孩子 P2 异常 B 登录 + 造"异常分数""重复上报" 1. 超评分上限/负分上报 2. 同成绩重复上报 1. 异常分数拦截不写能量 2. 重复上报幂等不重复加 GameRecordService —
TC-C-25-E SC-C-25 能量/方案打卡 孩子 P2 异常 方案任务存在 + 造"逾期""重复打卡""并发" 1. 逾期限打卡 2. 同任务重复打卡 3. 并发打卡 1. 按业务允/拒、断言一致 2. 重复打卡幂等不重复加 3. 并发不重复计分 GrowthTaskService —

权限流(-P)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-24-P SC-C-24 能量/小游戏·任务 孩子 P1 权限 家庭1(B)+ 其他孩子 D 1. B 查 D 能量/流水 2. B 直接调 grant/deduct 1. 他人能量 403 2. 孩子端无编辑/扣减入口、直接调被拒 JwtInterceptor+role —
TC-C-25-P SC-C-25 能量/方案打卡 孩子 P1 权限 家庭1(B)+ 非本人方案 1. B 打卡非本人方案任务 2. 查他人方案进度 1. 非本人方案任务 403 2. 他人进度不可见 GrowthTaskService —

睡眠打卡配置驱动专项用例(SC-C-26,2026-11-06 需求变更 C)

需求源:docs/需求分析/2026-11-06-成就成长打卡需求变更.md 变更 C;场景源:tests/user-scenarios/应用场景总览.md 行 346;能力键台账:sleep.config.tags(docs/tdd/orchestration/sc-key-map.md)。配置读取/维护接口的最终路径由实现方定(需求文档给出 /api/health/sleep/tags、/api/config/public/value?key=sleep.quality.tags、/api/admin/sleep/tags 三种候选),用例中不假定唯一路径,标「需核实」。

正常流

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-26 SC-C-26 健康打卡/睡眠配置 孩子 P1 功能 后台配置项 sleep.quality.tags 已配为 9 项(原 8 项 +「正常」);孩子 B 登录 1. 打开睡眠打卡页看「睡眠情况」区 2. 选中「正常」单独提交 3. 选中「正常」+「入睡困难」提交并查 remark 4. 运营在后台增/删/改序一项后刷新小程序 5. 清空配置项后刷新 1. 选项列表由后台配置驱动(非前端硬编码),含「正常」共 9 项 2. 选中「正常」可正常提交、落睡眠记录 3. 多项按现状 join(',') 并入 remark(如「正常,入睡困难」),拼接逻辑未被改动 4. 后台增删改序后小程序端按新列表与顺序生效 5. 配置缺失回退默认 9 项(含「正常」)且不报错 变更C / HealthSleepController + sys_config(sleep.quality.tags) + sleep-checkin.vue:quickTags(路径需核实) —

异常流(-E,具体故障注入)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-26-E SC-C-26 健康打卡/睡眠配置 孩子 P2 异常 造「配置读取 5xx/超时」「value 非法 JSON」「空数组」「含重复项」「超长标签」「后台删掉「正常」」「并发重复提交」七组对照 1. 读取接口 5xx/超时后进页 2. 写入非法 JSON 与空数组 3. 配置含重复项与 200 字超长标签 4. 后台删除「正常」后查看历史记录 remark 5. 同一次打卡并发提交两次 1. 失败回退默认 9 项、页面可用不白屏 2. 非法 JSON/空数组同样回退默认 9 项、不渲染空选项区、不 500 3. 重复项去重、超长标签截断或省略、不撑破布局 4. 历史 remark 中已落库的「正常」字符串不受影响、无迁移副作用 5. 并发提交幂等、仅生成 1 条睡眠记录 变更C 验收口径 + 风险项 3(默认值/历史数据)/ quickTags 回退契约 —

权限流(-P,针对具体越权对象)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-26-P SC-C-26 健康打卡/睡眠配置 孩子 P1 权限 孩子 B、家长 A、运营 M 账号可用;家庭 F9 另有孩子 D 的睡眠记录 1. 孩子 B 直接调后台配置保存接口(save)改选项列表 2. 家长 A 查 F9 孩子 D 的睡眠记录 remark 3. 非 admin 的普通账号调后台 get/save 1. 孩子端无维护入口、直调 save 被 role 校验拒(403/401)、配置不被改动 2. 非本家庭睡眠记录 403、不泄露 remark 内容 3. 非 admin 账号 get/save 均被拒;仅运营 M(admin)可维护,且保存有操作留痕 变更C / AdminSleepConfigController 权限校验(路径需核实)+ JwtInterceptor 家庭归属 —

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

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

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-C-N01 SC-C-05 任务打卡 孩子 P1 性能 方案含 ≥ 30 任务 1. 连续提交打卡 2. 测量并发提交 重复提交幂等;并发不重复计分;响应 ≤ 1s TaskController —
TC-C-N02 SC-C-19 消息通知 孩子 P2 性能 大量通知(≥100) 1. 打开消息中心 2. 翻页/标记已读 列表渲染 ≤ 1.5s;标记已读即时 消息中心 —
TC-C-N03 SC-C-01 孩子端 孩子 P1 兼容 iOS/Android/小程序 1. 各端登录孩子视角 2. 打卡/心愿 功能一致;无错位;低龄设备流畅 孩子端 —
TC-C-N04 SC-C-03 只读报告 孩子 P2 兼容 亮/暗主题、平板屏 1. 查看报告 2. 切换主题 图表自适应;无溢出;可读 报告前端 —
TC-C-N05 SC-C-02 心愿 孩子 P1 安全 抓包 1. 拦截心愿提交 2. 篡改 memberId 为其他孩子 服务端校验归属;403/拒绝;孩子不可越权操作他人 心愿鉴权 —
TC-C-N06 SC-C-19 消息通知 孩子 P2 安全 构造恶意推送内容 1. 模拟收到含 <img onerror> 推送 2. 打开 内容转义渲染;不执行脚本 消息渲染 —
TC-C-N07 SC-C-01 孩子端 孩子 P0 安全 直接调用父级/管理接口 1. 孩子 token 调 /api/admin/*、/api/family/member/switch 切回家长 一律 401/403;孩子端不可切回家长铁律生效 双角色铁律 e2e/api/nonfunc-security.spec.js