report-test-2026-11-08-R88.md 9.3 KB

测试负责人工作汇报(第 88 轮 · 2026-11-08 14:00 ~ 15:10)

来源:定时自动化「测试负责人闭环执行」;执行档 review(离线)——未联网装依赖、未启停服务、未改生产代码。 基线:cfclub @ 49d7bccac(= origin/cfclub,跑测前后一致,窗口内零提交) 详细证据:docs/tdd/test/automation-run-2026-11-08-R88.md 拓扑:cfc.iwintrue.com/admin(后台)+ /frontend(小程序)浏览器自动化;192.168.16.189 与本机为浏览器节点(每节点单任务);192.168.16.251 为 langgraph 节点。 任务目标原文:所有测试用例全部覆盖并通过;覆盖所有 SRS 与用户场景;SRS/场景变更时更新用例;结果有变化时提交远程并通知研发。


一、结论先行

项 结果 判定
全量用例执行 3145 例 / 3054 过 = 97.11%(剔 skip 97.26%) 通过率达标(目标「全部通过」未达成)
后端全量(首次实测研发修复后基线) 311 类 / 2628 例 → 97.03%,红 74 较 R77 基线 +1.96pp / 红例 −41
浏览器 E2E(真环境) 28/28 全绿(admin 5 + frontend 6 + shop 4 + health 13) 首次四套件全绿
langgraph 44 收集 / 32 过 / 12 红(17→12,+6 绿) 已达本机可达上限(11 例环境阻塞、1 例产品缺陷)
P0 安全缺口 B-61(连续 8 轮) 闭环:健康方案 3 端点由 200 直通转 401 ✅ 部署已生效
SRS 覆盖 最新 2 项变更已绑定用例并实测绿;章节级锚点覆盖 3/170 变更响应 ✅ / 全覆盖 ❌
总门禁 ⛔ 不通过(有条件) 8 项达标 / 5 项未达标

二、基本信息

项目 内容
汇报人 陆谨(软件测试专家团主理人 · 测试负责人)
汇报周期 2026-11-08 14:00 ~ 15:10(第 88 轮)
负责模块/单元 cfc-backend / cfc-frontend / cfc-web / cfc-langgraph / 内网部署 E2E
执行方式 本机直跑(后端全量 46:18 + Jest ×2 + langgraph venv + 浏览器 4 套件串行);251 节点不可派发(9000/8000 CLOSED、22 拒公钥与口令)

三、本轮工作数据汇总

3.1 测试用例建设

指标 数量 说明
本轮新增测试用例 +1 条 test_memory.py 新增 test_legacy_memory_api_removed(守护旧接口不回潮)+ 重写 3 条为契约级断言(原 3 → 4)
本轮修订测试用例 10 条 test_memory.py 3(装置重写)、test_report_parse.py 2(路径可移植)、GuideFamilyTaskControllerTest 5、GuideRolePermissionTest 2、FamilyControllerTest 1
本轮执行测试数 3145 例 后端 2628 + frontend 355 + web 90 + langgraph 44 + 浏览器 28
用例通过率 97.11% 后端 97.03% / frontend 99.72% / web 100% / langgraph 72.73% / 浏览器 100%
用例总数(后端) 2628 恒等式 @Test 2618 + 参数化 26 − @Disabled 4 − 早退截断 12 误差 0

3.2 会话与任务分发

指标 数量 说明
远程分派任务数 0 251 langgraph 节点不可达(B-55),189 无 SSH 通道;浏览器任务按「每节点单任务」在本机串行
本地执行任务数 8 后端全量、Jest ×2、langgraph ×3(修前/修后/定向)、浏览器 ×4(含 health 3 次复跑)
恢复智能体会话数 0 无中断

3.3 问题处置

指标 数量 明细
本轮新发现问题 4 个 B-68(P1 前后端契约断裂:totalChildren→totalFamilyMemberren,管理端概览恒 0)/ B-69(P1 /api/mind/ 匿名 400 而非 401)/ B-70(8 例上下文加载失败,A 类装置)/ B-65(P1 langgraph analyze 恒 500,checkpointer 缺 thread_id)
本轮已闭环 4 个 B-61(P0 部署生效,13/13 绿)/ B-64(test_memory 装置对齐,4/4 绿)/ B-66(report_parse 路径,5/5 绿)/ B-71(孩子→成员重构装置跟帖,定向复跑 49/49 全绿)
待解决 10 项 B-68 / B-69 / B-70 / B-65 / B-54(langgraph 环境)/ B-55(251 不可达)/ B-60(慢类)/ B-67(live 契约瞬时抖动观察)/ 其余历史项

3.4 Git 证据

内容 状态
本轮报告 + blockers + 测试侧修订 已提交并推送 origin/cfclub
研发交接通知 docs/tdd/研发交接通知-2026-11-08-第88轮.md 同步推送
通知通道 邮件/企微连接器未开通(Agent Mail not_bound)→ 以仓库内通知 + 远端推送落地

四、上轮遗留问题解决情况

上轮问题 状态 处理说明
B-61 健康方案鉴权(P0 连续 8 轮) ✅ 闭环 本轮 14:14 起 TC-HP-U01~03 由 200 转 401,独立 curl 7 端点全 401;部署已含 de16f40b0。health 契约 13/13 绿(两次独立复跑一致)
B-64 test_memory 装置漂移 ✅ 闭环 对齐真实 MemoryManager 契约 + 隔离 chromadb 原生依赖 → 4/4 绿
langgraph 17 红(B-54) ⚠️ 17→12 修 5 例测试侧(memory 3 + report_parse 2);剩 12:11 环境(chromadb DLL 7 / LLM+后端不可达 4)+ 1 产品(analyze 500)
后端全量基线(多轮采信 R77) ✅ 首次实测 97.03% / 红 74(较 R77 95.07% / 红 115 显著改善)
B-60 慢类 ❌ 未改善 3 类仍 >120s(274.3s / 244.7s / 241.5s),全量 46:18
B-55 251 不可派发 ❌ 未改善 9000/8000 CLOSED;22 拒绝 publickey/password

五、关键发现(需研发处理)

5.1 B-68(P1·管理端功能不可用)前后端键名断裂

  • 后端 GuideFamilyTaskController.java:239 返回 totalFamilyMemberren(Member+ren 混拼,疑似把 children 机械替换为 familyMember 时残留);
  • 前端仍读旧键:GuideFamilyTask.vue:37(familyOverview.totalChildren === 0 空态判定)、:45(数值)、TeacherMessages.vue:139(StatCard);
  • 后果:管理端「成长任务概览」恒 0 且永远空态,规划师/家长看不到家庭成员任务统计。
  • 建议:后端双写(保留 totalChildren + 新增 totalFamilyMemberCount)过渡,前端再迁移;避免再出现拼写型契约。

5.2 B-69(P1·安全口径)/api/mind/ 未强制登录

  • 匿名 POST /api/mind/fortune 实测 HTTP 200 + code 400(期望 401);
  • @RequestAttribute("userId") 在绑定层即失败 → 控制器内 if (userId == null) 分支不可达(与 B-57 同族陷阱);
  • 建议 LOGIN_REQUIRED_PATHS 增 "/api/mind/",与 B-61 同族的「默认拒绝 + 显式放行」统一。

5.3 B-65(P1·AI 能力不可用)langgraph /api/v1/analyze 恒 500

  • analysis_graph.py:96 builder.compile(checkpointer=MemorySaver()),analyze.py:36 graph.ainvoke(payload) 未传 thread_id → 每次调用必抛 ValueError → 500;
  • 建议:该图无多轮状态需求则去掉 checkpointer;否则 config={"configurable": {"thread_id": trace_id}}。

5.4 B-70(A 类装置)8 例 Spring 上下文加载失败

  • auditLogAspect → auditLogService 注入链失败(3 个测试类共 8 例);生产上下文正常(其余 303 类全成功)→ 属测试切片缺 @MockBean,下轮自修。

六、覆盖矩阵与门禁

门禁 判据 实测 判定
G1 全量通过率 ≥95% 97.11% ✅
G2 红例数 ≤20 86 ❌
G3 小程序 Jest 0 失败 354 / 1 skip ✅
G4 管理端 Jest 0 失败 90/90 ✅
G5 编译与完整性 0 错 / 无静默丢失 317 源 0 错;311/311 XML ✅
G6 浏览器 E2E 全绿 28/28 ✅
G7 langgraph 0 失败 12 失败 ❌
G8 鉴权契约 全绿 13/13(B-61 闭环) ✅
G9 SRS 锚点覆盖 ≥60% 1.8%(3/170 章节) ❌
G10 节点分派 langgraph 派 251 251 CLOSED ❌
G11 CI 硬门禁 流水线可绿 langgraph-blocking-pytest 会红 ❌
G12 未实测标注 全标注 已标注 ✅

总判定:⛔ 不通过(有条件)——通过率与浏览器/契约维度已达标,剩余缺口集中在「测试装置批量滞后」(A 类 41 例)、「langgraph 环境」(11 例)、「SRS 锚点」与「节点分派」。


七、下轮前置(按性价比排序)

  1. P-1 修 B-70 上下文注入链(补 @MockBean)→ 8 例
  2. P-2 CfCommissionServiceSettleTest 8 例档位查询补桩 → 8 例
  3. P-3 Mockito 误用族(matcher/doNothing/verify)8 例
  4. P-4 夹具 NPE 13 例补桩(堆栈均已证实仅在测试帧)
  5. P-5 研发:B-68 键名双写、B-69 清单补 /api/mind/、B-65 analyze thread_id
  6. P-6 运维:251 放通 9000 或提供 SSH 凭据(G10 唯一路径)
  7. P-7 剩余 23 例断言逐例定性(装置 vs 产品)
  8. P-8 全量 clean 复跑确认定向绿(承 B-57 教训:定向绿不入基线)

八、未实测项(如实声明)

  • langgraph 非 251 环境结果:251:9000/8000 CLOSED、22 拒凭据 → 本机 venv 兜底。
  • 覆盖率(JaCoCo)/ 变异(PIT)/ 压测 / DAST / SCA:无工具且未装依赖 → 未实测。
  • 无障碍 / 多浏览器兼容 / 真实用户可用性 / UAT / BDD / 探索性:无资产,标「待核实」。
  • 恒等式「早退截断 12」未逐类取证。