automation-run-2026-11-12-R171.md 13 KB

测试闭环·每小时 R171 — 2026-11-12 17:30 (GMT+8)

执行档:review(内网 cfc.iwintrue.com 已授权;不访问外部公网) 主理人:软件测试专家团·陆谨(测试负责人)| 被审查对象:d:/cfc(浠艾福 XAF) 本轮回合 HEAD 4db4362e8(17:04 Merge 并发合入 S-cfc-169);上次本对象记忆轮 = R169(16:05)

1. 历史审查记录(记忆召回)

  • 非首次审查:自动化记忆库 automations/0f6cf699…/memory.md(1911 行)连续记录 R159→R170 多轮稳态闭环,本对象历史结论与遗留缺口已带入本次。
  • 直接前驱 R169(16:05)结论:有条件通过(稳态),基线 cfc-web 116/116、cfc-frontend 609/3/12、后端全量引用 R167 98.95%、E2E 无登录冒烟 2/2 可达。
  • 本次对照:全部重跑套件与 R169 逐项一致,红例差集空,零漂移;无历史结论被直接沿用(本次重新取证)。
  • 遗留缺口持续跟踪:P-9 公网外联、G7 后端连库全量+JaCoCo、G9 覆盖率<20%、G11 无CI、admin.referral 零覆盖、登录态 E2E 无凭据、langgraph 9000 环境红。

2. 执行范围

模块 命令(离线/内网) 状态
cfc-web npx jest --coverage(axios-mock-adapter,不访真实服务) ✅ 实测
cfc-frontend npx jest(排除公网 api.test.js+config.test.js) ✅ 实测
cfc-backend mvn -o test-compile(离线编译门) ✅ 实测
cfc-backend 全量 mvn test + JaCoCo ⛔ 降级(≈60min > 小时预算,引用基线)
浏览器 E2E Playwright 1.63.0 无登录冒烟 /admin、/frontend ✅ 实测(探活)
浏览器 E2E 业务流 登录态深度 E2E ⛔ 降级(无凭据,待核实登录态)
安全/性能/依赖漏洞(公网) SAST/DAST/SCA/压测 ⛔ 未授权未执行
LangGraph 9000 pytest ⛔ 未授权未执行(需 251 节点+AI 凭据)

3. 用例总数 · 通过 · 失败(本轮实测)

套件 总数 通过 失败 跳过 说明
cfc-web Jest(17 套件) 116 116 0 0 全绿,EXIT0,85s
cfc-frontend Jest(42 套件,已排除公网 2 文件) 624 609 3 12 EXIT1
后端 mvn -o test-compile — — — — 编译门 GREEN(exit0),非用例执行
E2E 无登录冒烟 2 2 0 0 admin/frontend 均 200 渲染
本轮合计(前端+web) 740 725 3 12 —

后端全量用例(R170 基线 363 类/3057 例/3030 过/17F+6E/99.12%)本轮未重跑,仅引用基线,不计入本轮合计以防重叠。

失败用例明细(均为已知基线红,非回归):

  • cfc-frontend/__tests__/pages/signature/signature.consignee.test.js — 1 红(基线 signature.consignee)
  • cfc-frontend/__tests__/pages/growth-main/growthHistory.dayGroupView.test.js:287 — 2 红(RED-A7 预期红:groupByDate 装配逻辑,实现未交付)

4. 覆盖率

指标 cfc-web(本轮实测) cfc-frontend(引用基线) 后端(引用基线)
语句/Stmts 10.09% ~53.57% R170 行级未单列;全量 99.12% 通过率
分支/Branch 6.12% — —
函数/Func 7.5% — —
行/Lines 9.97% — —

cfc-web 覆盖率与 R169(10.1/6.1/7.5/9.95)零漂移;后端 JaCoCo 因全量未跑 → N/A。

5. 测试覆盖状态矩阵(三态:实测 / 未实测-降级 / 不适用)

# 测试类型 状态 证据
1 单元测试 实测 cfc-web 116/116;后端 test-compile GREEN
2 组件测试 实测 cfc-frontend 42 套件含组件用例
3 测试覆盖率 实测(web)/降级(后端) web 10.09%;后端 JaCoCo N/A
4 变异测试 不适用(方案排除) 未纳入本小时范围
5 集成测试 降级 后端全量未跑;契约 RED 测试仅编译通过未连库
6 契约测试 实测(编译)/降级(执行) 新增 RED 契约编译通过;未连库执行
7 接口 API 测试 降级 公网+登录态 API 未实跑;仅无登录 401 鉴权探针历史已覆盖
8 系统/端到端 实测(冒烟)/降级(业务流) 无登录 E2E 2/2;登录态 E2E 无凭据
9 验收 UAT 不适用(方案排除) —
10 BDD 规格 不适用(方案排除) —
11 冒烟测试 实测 E2E 探活 + test-compile
12 回归测试 实测 三轮对照零漂移
13 探索性测试 待核实 无脚本化证据
14 性能测试 未授权未执行 压测打远端,公网未授权
15 可靠性测试 降级 langgraph 9000 未授权
16 安全测试 SAST/DAST/SCA 未授权未执行 依赖漏洞扫描/DAST 需公网
17 兼容性测试 待核实 无跨浏览器矩阵脚本
18 可用性/无障碍 待核实 无脚本化证据
19 QA 流程/质量指标 实测 门禁度量见 §8
20 全项目代码审查 不适用(方案排除) 本小时聚焦闭环,非全量审查轮

6. 新增风险

  • R1(无新增回归):cfc-web / cfc-frontend / E2E / 后端编译 与 R169 逐项一致,红例差集空。
  • R2(新增预期红契约):自 R169 以来合入 test(...) RED 契约——S-cfc-168 membership.plan.purchase(7/7 预期红,SC-P-58)、S-cfc-169 supplier.order.fulfill(pickupCode 核销未落地)、S-cfc-166 shop.order.queryRefund(退款状态查询)、S-cfc-165 shop.order.create(10/10 绿,实现已合)。均为实现未交付的预期红/新增契约测试资产,未连库核实、不计入本轮、不触发 SRS 编写闸门。
  • R3(后端编译门冷启动波动):历史 R159/R163 曾 test-compile 冷启超时(EXIT124),本轮暖启动 exit0;列为环境关注项。

7. 测试用例编写产出

  • SRS 闸门判定(依据用户授权规则):git log --since 16:05 对 docs/tdd/SRS.md / docs/需求分析/ / docs/superpowers/specs/ / docs/superpowers/api/API_REFERENCE.md 零变更(最后变更:API_REFERENCE 09:38、需求分析 10:58、SRS 11-01,均早于 R169)。
  • 结论:本次无需求/接口文档变更 → 跳过测试用例编写,仓库零写入(未改生产源码、未提交、未推送)。
  • 历史编写资产(R168 已落 membershipGate.test.js、ServiceRoleApplyBindInviteContractTest.java)仍有效,无需重复编写。

8. 五要素问题清单

P1 · P-9 公网外联(测试设计缺陷)

  1. 问题描述:cfc-frontend 单测对公网 cfc.etotem.com.cn 发真实请求,违反「不访问外部公网」约束,且离线环境可能掩盖真失败/产生不确定结果。
  2. 测试 bug 点:cfc-frontend/__tests__/config/config.test.js(真实 POST cfc.etotem.com.cn);api.test.js 仅含 http://photo.url 字符串断言(非真实外联,已排除以守约束)。
  3. 最优修改方案:为单测注入 CFC_OFFLINE 守卫,默认用 axios-mock-adapter 拦截;真实外联改为显式 @network 标签且仅在 execute 档运行。
  4. 修改目的:守住离线/内网约束,消除离线不确定失败,提升测试可信度(对应 G 质量目标「测试可重复」)。
  5. 问题闭环:复测方式=离线跑 cfc-frontend jest 0 真实外部调用、用例仍全绿;通过标准=CI 中 CFC_OFFLINE=1 下无任何对外 TCP 连接。

P2 · admin.referral 零测试覆盖(覆盖缺口)

  1. 问题描述:feat(admin) 新增 /api/admin/referral/{summary,members,tree} + AdminReferralController/TreeService + Users.vue 团队按钮,无对应测试,且未同步 SRS。
  2. 测试 bug 点:缺测试资产;被测代码 cfc-backend/.../controller/AdminReferralController.java(提交 6c0f05701)+ cfc-web/src/.../Users.vue 团队入口(无 test/spec)。
  3. 最优修改方案:补 AdminReferralContractTest(Mockito 离线契约,覆盖 summary/members/tree 三端点鉴权与空数据)+ 前端 Users.vue 团队按钮交互用例。
  4. 修改目的:闭合新增后台功能的测试覆盖,防止回归(对应 G2 覆盖率/覆盖缺口目标)。
  5. 问题闭环:复测方式=新增用例 mvn test 绿 + 前端 jest 绿;通过标准=三端点均有断言且 0 真红、覆盖率计入。

P3 · cfc-web 覆盖率低于门禁(G9)

  1. 问题描述:cfc-web 全量覆盖率仅 语句10.09%/分支6.12%/函数7.5%/行9.97%,远低于 20% 建议门禁。
  2. 测试 bug 点:cfc-web 覆盖基线(多数 src/views/**/*.vue 覆盖 0%),17 套件仅覆盖少量工具/组件。
  3. 最优修改方案:按 src/views/admin、src/views/teacher、src/views/nutritionist 等业务域补充组件渲染/交互用例,优先覆盖已上线高频页面。
  4. 修改目的:提升前端可测性信号,暴露未覆盖回归风险(G9)。
  5. 问题闭环:复测方式=jest --coverage 重新采集;通过标准=语句覆盖率 ≥20% 且关键业务页面非零覆盖。

P4 · 后端全量+JaCoCo 未纳入小时闭环(G7)

  1. 问题描述:后端 mvn test 全量 ≈45–60min 超小时预算,JaCoCo 覆盖率无法每小时采集,17~25 红(含 TDD-RED+历史债)未连库核实。
  2. 测试 bug 点:后端全量用例(R170 3057 例/17F+6E);本地 MySQL 3306 不可达致连库红未核实;本轮仅 mvn -o test-compile 绿。
  3. 最优修改方案:将后端全量+JaCoCo 移到「夜间/专用节点」编排(R170 重型闭环已验证 99.12% 稳定),小时轮仅跑 test-compile 门 + 增量契约;或本地起 MySQL 3306 后连库重测。
  4. 修改目的:在不超预算前提下获得真实后端覆盖率与红例归因(G7)。
  5. 问题闭环:复测方式=夜间全量 mvn test + JaCoCo 报告;通过标准=0 真红(预期红除外)+ JaCoCo 行覆盖率 ≥80%。

P5 · 登录态 E2E 无凭据(执行阻塞)

  1. 问题描述:深度业务流 E2E 需登录凭据,本环境 MACHINE_JSON_PATH 未注入,仅能跑通无登录探活(2/2 可达渲染)。
  2. 测试 bug 点:登录态 E2E 业务流(tests/e2e/*.spec.js 多需登录态)无可用凭据夹具。
  3. 最优修改方案:通过本地配置文件/环境变量注入只读测试账号凭据(绝不写入提示词/报告/日志明文),并补充会员/非会员夹具以覆盖 S-cfc-163 聊天仅会员可见等门控。
  4. 修改目的:打通业务流端到端验证,闭合安全门禁与关键链路(对应 G 端到端目标)。
  5. 问题闭环:复测方式=注入凭据后 playwright test 登录态套件绿;通过标准=关键业务流(登录→核心页面→提交)全绿且无凭据泄露。

9. 待核实项(标「需核实」,未臆造)

  • 后端全量 17~25 红中真红 vs 预期红未连库区分(MySQL 3306 本地不可达)。
  • tests/e2e/api/nonfunc-* 等登录态 API 业务流未实跑(无凭据)。
  • LangGraph 9000 健康(R170 现场 /health 200 但 /chat 000,环境 429/401 红)需授权联网复验。
  • 探索性/兼容性/无障碍测试无脚本化证据(待核实)。
  • 后端新增 RED 契约(S-cfc-168/169/166)实现落地进度与最终红/绿状态。

10. 需用户单独授权才能继续的项(标注「未授权未执行」并给测试设计)

项 为何需授权 测试设计(已备,待授权执行)
依赖漏洞扫描(SCA) 需访问公网漏洞库/下载元数据 npm audit / mvn dependency-check 离线缓存优先;公网元数据需授权
安全 DAST / 渗透 打到目标环境,公网 对内网 192.168.16.251 跑 ZAP baseline;出高风险项清单
性能压测 打远端/产生负载,公网 对 /api/health/*、/admin 登录态做阶梯并发;采集 P95/错误率
登录态深度 E2E 需注入只读凭据 配置 MACHINE_JSON_PATH 后跑 playwright.config.live.js 业务流
后端连库全量+JaCoCO 需本地 MySQL 3306 或夜间节点 夜间编排 mvn test + JaCoCo;或起 3306 后连库
LangGraph 9000 pytest 需 251 节点 + AI 凭据 授权后 pytest -q 全量对齐,隔离 AgnesAI 配额/key 问题

11. 门禁结论

⛔ 有条件通过(与 R168/R169 稳态持平,零新增回归)。

  • 绿区(本轮实测通过):cfc-web 116/116 全绿;cfc-frontend 609/3/12(3 红均为已知基线红非回归);后端 mvn -o test-compile GREEN;E2E 无登录冒烟 2/2 可达渲染。
  • 卡点(未实测/降级):后端连库全量+JaCoCo(G7)、登录态 E2E(P5)、安全/性能/依赖扫描(公网未授权)、langgraph 9000(需授权)、cfc-web 覆盖率<20%(G9)、admin.referral 零覆盖(P2)、P-9 公网外联未修。

复评条件(满足后转「通过」):

  1. 后端连库全量 0 真红 + JaCoCo 行覆盖率 ≥80%(G7);
  2. cfc-web 语句覆盖率 ≥20%(G9);
  3. 修复 P-9(CFC_OFFLINE 守卫,0 离线外联);
  4. 授权并跑通安全+性能+依赖扫描,零高危;
  5. 登录态 E2E 凭据注入跑通业务流;
  6. 补 admin.referral 测试(P2);
  7. 固化 CI(G11)使上述门禁可重复;
  8. LangGraph 9000 全量对齐、0 代码红(需联网授权 + 平台恢复 AgnesAI 额度/有效 key)。

执行纪律:未访问外部公网;未改/未提交/未推送生产源码与被审查代码;未安装依赖;凭据未以明文出现;供应商/仓库资料未明确信息一律标「需核实」,无编造。仓库零写入(仅本报告与自动化记忆更新)。