report-test-2026-11-10-R120.md 20 KB

测试负责人闭环汇报 · 第 120 轮(2026-11-10 10:08–11:25)

执行档:review(离线) — 白名单内离线套件 + 已授权内网只读 E2E(cfc.iwintrue.com 的 /admin + /frontend)+ 节点派发(251 跑 langgraph / 189 跑浏览器 admin) 仓库:D:/cfc;分支 cfclub;测试基线 HEAD aa38eeb18(实跑基线;收尾 git pull 至 034f1f09d,新增仅研发汇报 1058 + cfc-web 版本 bump 1.0.2298→1.0.2299 + CHANGELOG,零生产源码 / 零 SRS / 零用例变更) 执行窗口:10:08 → 11:25(前端/管理端/根级/浏览器双节点串并行错峰;后端全量无新源码 → 采信 R119) 拓扑(用户本轮指令):浏览器自动化 → cfc.iwintrue.com/admin、/frontend,192.168.16.189 与本机各一节点(每节点单任务);langgraph 部署 192.168.16.251,测试分派该节点 团队:自动化闭环轮,八域结论由测试负责人依据本轮实测证据汇总(未启用分布式成员会签),不代写任何成员未产出之结论


一、历史审查记录(阶段 -1 记忆召回)

项 内容
上次审查 第 119 轮(2026-11-10 09:47,已提交 aa38eeb18);本轮为直接接续轮
历史遗留缺口 B-69(/api/mind/** 鉴权,第 19 轮→本轮 20)、B-65/B-74/B-82(langgraph LLM 凭据/checkpointer)、B-36(根级黑盒 16 红,第 22 轮→本轮 23)、B-90(chat 挂起观察)、B-15(tests/qna 收集期错误)、B-118(env 能力探针)、B-119(langgraph 口径)、G-11(已闭环待销号)
本次是否改善 B-120 销号(189 首轮 5/5 连续第 2 轮 0 偶发,满足闭环判据,节点偶发自愈);langgraph 非 LLM 子集本轮实跑复验全绿(31/31);其余指标与 R119 严格零漂移;B-69 第 20 轮复证未修
本次新发现 无新红例/新观察项;本轮唯一状态变化为 B-120 观察到期销号
声明 历史结论仅作对照;本轮所有计入全量的数字均有本轮或最近一次同基线证据(后端采信 R119 因零 src 变更;langgraph LLM 12 例承袭 R119 因凭据 401 未变;浏览器/前端/管理端/根级全部本轮实跑)

二、项目画像(阶段 0 · 本轮为稳定延续轮)

模块 技术栈 端口 本轮可测范围与关键路径
cfc-backend Spring Boot 2.7.18 + MyBatis-Plus(JDK8) 9082(本机 DOWN) 339 测试类 / 2854 @Test(采信 R119);DatabaseInitializer 迁移入口;JwtInterceptor 8 公开路径白名单 + LOGIN_REQUIRED_PATHS;AI 走 AiGateway
cfc-frontend uni-app 小程序 (Vue2) — 26 套 Jest(utils/store/components/pages/specs)本轮实跑
cfc-web Vue2 + Element UI 管理端 8082 17 套 Jest / 116 例本轮实跑;语句覆盖 9.98%
cfc-langgraph Python FastAPI + LangGraph + ChromaDB 9000(@251) 非 LLM 31 例于 251 实派执行(.venv py3.11,162.9s 全绿);LLM 依赖 12 例承袭 R119

环境能力实测

能力 实测 结论
192.168.16.251:4096 200(Basic 鉴权通过) shell 直连派发可用(本轮原生 API 脚本实证)
192.168.16.251:9000 200 /health langgraph 服务在线
192.168.16.189:4090 200(Basic 鉴权通过) 浏览器节点可派发(本轮实派 5 例)
http cfc.iwintrue.com 302→200 可用(G-11 闭环后稳定)
127.0.0.1:9082 000 本机后端未起(按规则不擅自启停)
Maven / JDK1.8 可执行 本轮未使用(后端无变更采信)

三、20 类测试覆盖矩阵(三态:已发现 / 未发现 / 待核实)

# 类型 状态 证据(本轮实测 / 基线引用)
1 单元测试(cfc-web) 已发现 本轮回跑 17 套 / 116 例全绿(187.0s)
2 单元测试(cfc-frontend) 已发现 本轮回跑 26 套 / 426(423 过 / 3 跳,89.1s)
3 组件测试 已发现 Families.* / ProductPicker / signature.canvas2d / recommendation.* spec
4 测试覆盖率 已发现 cfc-web 语句 9.98% / 分支 6.12% / 函数 7.51% / 行 9.98%(采信 R119,零变更)
5 变异测试 未发现 无 pitest / mutation 配置
6 集成测试 采信 R119 后端 34 红 15 类(R119 全量实测,零 src 变更)
7 契约测试 采信 R119 DimensionRegistryMapContractTest 3 红等与 R119 一致
8 接口 API 测试(活服务器) 已发现 health-contract 13/13 本轮实跑;B-69 匿名鉴权探针 1 端点
9 系统/端到端 E2E 已发现 本机 live 15/15 + health 13/13 + 189 首轮 5/5
10 验收 UAT / BDD 未发现 无 UAT 记录、无 .feature
11 冒烟测试 已发现 ci-smoke.spec.js + _automation_reachability.cjs
12 回归测试 已发现 全量 3500 例口径可复现,与 R119 零漂移
13 探索性测试 未发现 无 charter / 会话记录
14 性能测试 未授权未执行 需联网压测(execute 档)
15 可靠性测试 待核实 无故障注入;B-90 chat 未复证(本轮未打 chat)
16 安全测试(SAST/DAST/SCA) 未发现 仅鉴权契约 + 匿名探针;无 SAST/DAST/依赖扫描工具
17 兼容性测试 未发现 仅 chromium
18 可用性测试 未发现 无可用性任务/量表
19 无障碍测试 未发现 无 axe 扫描
20 QA 流程 / 度量 / 代码审查 部分已发现 全量 98.06%;CI 仅 test-compile + 前端 jest

「未发现」为扫描未命中,不等于项目没做;扫描截断/环境缺失一律标「待核实」。


四、测试方案与执行档

项 内容
目标 ① 全部用例通过 ② SRS/场景覆盖可量化 ③ 变更即更新用例
范围(本轮实跑) 浏览器 E2E 本机 live+health(28)、浏览器 E2E@189 实派(5)、cfc-frontend Jest(426)、cfc-web Jest+覆盖率(116)、根级 tests/jest.config.js 黑盒(23)、langgraph 非 LLM 子集@251 实派(31)
采信项(零 src 变更纪律) 后端全量 JUnit(R119 339 类 / 2864 例 / 98.67%)、langgraph LLM 依赖 12 例(R119 红例集合)
排除项 dan/danshop(独立商城);tests/qna(收集期错误,B-15);需联网命令(依赖漏洞/压测/DAST);本机 9082 未起
执行档 review:不联网装依赖、不启停服务、不改生产代码
授权 内网 E2E(/admin+/frontend)、双节点派发、按 SRS 变更写用例已授权;execute 档(压测/DAST)未申请,未执行

五、执行结果(本轮实测)

5.1 总账

套件 用例 通过 红 Skip 通过率 耗时
后端 JUnit(339 类,采信 R119) 2864 2826 34(31F+3E) 4 98.67% —
前端 Jest(26 套) 426 423 0 3 100%(剔 skip) 89.1s
管理端 Jest(17 套) 116 116 0 0 100% 187.0s
根级黑盒 Jest(3 套) 23 7 16 0 30.43% 18.2s
langgraph pytest@251(非 LLM 实跑 + LLM 承袭) 43(主口径) 32 11 0 74.42% 162.9s(子集)
浏览器 E2E 本机(live 15 + health 13) 28 28 0 0 100% 2.3m + 5.2s
浏览器 E2E@189(admin-desktop,首轮) 5 5 0 0 100% 1.3m
全量(主口径) 3500 3432 61 7 98.06% —

langgraph 口径(B-119 固化):全量 44 例(含 test_chat);主口径 43/32/11。本轮非 LLM 31 例实跑全绿复验;LLM 依赖 12 例(analyze 2 / auto_tag 5 / intent 4 / chat 1)因 251 凭据 401 承袭 R119,无源变更,采信有效。 189 说明:本轮首轮即 5/5 全绿(区别于 R119 首轮偶发),与 R119 复验轮共同构成连续 2 轮 0 偶发 → B-120 销号。

5.2 与 R119 基线对账

指标 R119(09:47) 本轮 R120 Δ
后端 类/例/通过(采信) 339 / 2864 / 2826 339 / 2864 / 2826 0
后端红例(31F+3E) 34(15 类) 34(15 类) 0
前端 Jest 423/426(3 跳) 423/426(3 跳) 0
管理端 Jest 116/116 116/116 0
根级黑盒 7/23(16 红) 7/23(16 红) 0
langgraph(同口径) 32/43(11 红) 32/43(11 红,非 LLM 31 实跑复验绿) 0
浏览器 E2E 28/28 + 189 复验 5/5 28/28 + 189 首轮 5/5 0(189 不再需复验)
全量(主口径) 3500/3432(98.06%) 3500/3432(98.06%) 0

Δ 归因:源码/SRS/用例零变更 + 前端/管理端/根级/浏览器/langgraph 非 LLM 子集本轮实跑 → 逐项零漂移;唯一变化为 B-120 观察到期销号(189 首轮不再偶发)。

5.3 34 红例三层归因(采信 R119;归因桶:assert 19 / mockito 12 / npe 2 / other 1;环境红 0)

层 类数 例数 明细
A 测试装置 4 16 CfCommissionServiceSettleTest 8(Mockito WantedButNotInvoked)、ArticleAutoTagServiceTest 4(verify 次数)、GrowthRecordSyncFlowTest 3(2 NPE 测试帧 + 1 assert)、TaskPlanServiceTest 1
B 产品缺陷 6 14 EnergySystemFlowTest 6、OrchestrationEngineTest 1、OrchestrationIntegrationTest 1、MembershipPaySwitchTest 1、PaymentServiceORDRoutingTest 1、UserServiceWechatLogin* 2、TeamProfitCronContractTest 1、MindFortuneControllerTest 1(B-69 同源)
C 数据/环境 1 1 GuideModuleIntegrationTest → DataIntegrityViolation(platform_fee 列截断)
契约待裁决 1 3 DimensionRegistryMapContractTest(未知/空码映射 + 缺码 400 期望)

零 src 变更 → R119 全量实测结果承袭成立,红例集合差集为空。

5.4 节点派发实测(用户指令域)

节点 任务 结果
192.168.16.251 langgraph pytest(shell 直连) ✅ 实派取回:非 LLM 子集 31/31 全绿(162.9s);LLM 12 例承袭 R119(凭据 401)
192.168.16.189 admin-desktop E2E ✅ 首轮 5/5 passed(1.3m),连续第 2 轮 0 偶发 → B-120 销号
本机 live + health ✅ 15/15 + 13/13,单节点串行

5.5 线上鉴权探针(B-69 第 20 轮复证,匿名 POST)

端点 HTTP body 判定
/api/mind/fortune 200 {"code":400,"message":"用户不存在","data":null} ❌ 未拦截,应为 401

结论:JwtInterceptor.LOGIN_REQUIRED_PATHS 仍缺 /api/mind/(O-21 裁决连续第 20 轮未落码),B-69 未修。


六、SRS / 场景变更闸门

  • 实跑基线 aa38eeb18 → 收尾 HEAD 034f1f09d:新增仅研发汇报 1058 + cfc-web 版本 bump + CHANGELOG;
  • git diff --name-only aa38eeb18..034f1f09d -- docs/*case* tests/test-cases*:为空 → SRS/场景/契约设计零变更;
  • specs 200 份、tests/test-cases 14 份、tests/user-scenarios 11 份,零变更。

结论:本次无 SRS/场景/接口变更 → 按规则跳过用例编写。 度量(采信 R119,零变更):场景 215、TC 映射 155(72.1%)、spec 字面引用 32(14.9%);TC 812、异常流 483(59.5%)、锚点 86(10.6%)。


七、覆盖缺口清单

缺口 类型 现状 风险 建议测试设计 优先级 闭环方式
G-1 覆盖缺口 TC 锚点 10.6%(86/812) 「场景→用例→资产」不可追 资产首行加 TC-xxx 锚点 P1 锚点率 ≥40% 纳门禁
G-2 覆盖缺口 HL-05 仍无契约/E2E 用例 新特性零回归网 补 ProductSelectionFlow 契约 + Playwright P1 定向套件全绿入台账
G-3 测试装置 A 类 16 例 噪音掩盖真实回归 见 P-1 P1 定向复跑 0 红 → 红例 34→18
G-4 黑盒失效 根级 16 红(B-36 第 23 轮) 接口层无有效黑盒网 注入 CFC_API_TOKEN + seed 账号 P1 0 红或显式 skip
G-5 工具缺口 无覆盖率(java)/变异/压测/SAST/SCA 内部质量不可量化 jacoco+pitest;k6/zap 需授权 P2 产物入库纳门禁
G-6 流程缺口 CI 仅 test-compile + 前端 jest 2864 例不在门禁内 CI 增 mvn test -DskipTests=false P1 pipeline 出现 Tests run
G-7 节点偶发 B-120 已销号(连续 2 轮 0 偶发) 不稳定假红 ~登录前置加重试~(偶发自愈,不引入改动) ✅ 第 120 轮销号
G-8 资产缺口 @Disabled 4 例 + tests/qna 错误 静默失效 修或删 P2 收集期 0 error
G-9 离线约束 api.test.js 对公网真实 POST 违离线约束 改 axios-mock-adapter P2 零外联且仍绿
G-10 派发缺口 189 / 251 实派取回 — — ✅ 原生 API / shell 直连固化

八、域结论表

审查维度 负责专家 结论 关键证据
单元·组件级(后端 339 类) 苏雅 不通过(采信延续) 2864 例 98.67%,34 红(A16/B14/C1/契约3),零漂移(零 src 变更)
单元·组件级(前端 / 管理端) 苏雅 通过 426(0 红 / 3 跳)、116/116(本轮实跑)
集成·接口级 柯砚 不通过 集成包 5 红类;契约 3 例口径未决;EnergySystemFlowTest 5×500(采信 R119)
系统·E2E 白樾 通过 本机 28/28 + 189 首轮 5/5(B-120 销号);UAT/BDD 未实测
测试保障级 闻朔 通过(部分) 冒烟/回归可复现;探索性无;根级 16 红
性能·可靠性 骆骋 未实测 无压测工具/未授权联网
安全 关屿 不通过 B-69 第 20 轮复证:匿名 fortune → 200;O-21 未落码
兼容·体验·无障碍 阮清 未实测 仅 chromium;无 axe
流程·度量·代码审查 何序 不通过 CI 无后端全量;锚点 10.6%;(节点偶发项第 120 轮销号)

九、五要素问题清单

P-1(P1 · A 类 · 16 例)测试装置缺陷致红(第 6 轮挂账)

① 问题描述:CfCommissionServiceSettleTest 8 例、ArticleAutoTagServiceTest 4 例、GrowthRecordSyncFlowTest 3 例、TaskPlanServiceTest 1 例,断言/桩口径与生产不一致,非生产缺陷。 ② 测试 bug 点:同 R119(本轮后端未实跑,采信;零 src 变更)。 ③ 最优修改方案:CfCommission 8 例补档位查询桩;ArticleAutoTag 改 verify(executor, times(n));GrowthRecordSync 在 @BeforeEach 补齐 mock;TaskPlan 对齐返回值口径。 ④ 修改目的:让红例直接反映产品/契约缺陷,恢复信号价值。 ⑤ 能否闭环:可。定向复跑 4 类 0 红 → 全量红例 34→≤18。

P-2(P0 · B 类 · 14 例)产品缺陷 / 契约不一致(第 6 轮挂账)

① 问题描述:EnergySystemFlowTest 6 例(5×500 + 1 码值)、编排 2 例、会员支付 1、支付路由 1、微信登录 2(token null)、分佣冷却 1、MindFortune 1(B-69 同源)。 ② 测试 bug 点 / 修改方案 / 闭环判据:同 R119(EnergySystem 取 500 堆栈最内层;Orchestration 对齐 task.status;MembershipPay 修 configMissing→null;PaymentORD 补未知前缀路由;WechatLogin 核 token 签发;TeamProfitCron 补冷却期退款取消)。 ③ 修改目的:消除五维能量/编排/支付/登录/分佣主链路真实缺陷。 ④ 能否闭环:可,需研发逐类复现;判据:定向复跑 0 红 + 全量红例下降。

P-3(P1 · 契约 · 3 例)DimensionRegistryMap 契约口径未决(第 10 轮挂账)

① 问题描述:map_unknownLegacy_returnsNullData:76、map_emptyLegacy_returnsNullData:85 期望 data=null 实返原值;map_missingLegacy_returnsBadRequest:92 期望 400 实返 200。 ② 闭环:主理人裁定「未知码/空码映射 null、缺码 400」并同步改契约或实现。

P-4(P0 · 安全 · 第 20 轮)/api/mind/** 鉴权缺口

① 问题描述:线上匿名 POST /api/mind/fortune → HTTP 200 + {"code":400,"message":"用户不存在"};MindFortuneControllerTest#testGetTodayFortuneWithoutAuth 期望 401 实得 400(@RequestAttribute 绑定层先 400,B-57 同族)。 ② 最优修改方案:按 O-21 裁决,将 /api/mind/ 等 4 条白名单移入 JwtInterceptor.LOGIN_REQUIRED_PATHS(当前无 /api/mind/)。 ③ 能否闭环:可。判据:匿名探针全 401 + MindFortuneControllerTest 转绿 + JwtInterceptorLoginRequiredPathTest 全绿。

P-5(P2 · 节点偶发 · 第 120 轮销号)189 TC-A-U05 登录前置偶发

① 状态:R119 首轮偶发(复验绿)→ 本轮首轮 5/5 全绿 → 连续 2 轮 0 偶发,满足闭环判据 → 销号。 ② 处置:判定滑块登录偶发自愈,不引入测试改动(保留前置失败硬断言),不再作为观察项。

P-6(P1 · 环境/凭据 · 第 20 轮)langgraph 251 侧 LLM 凭据无效 + checkpointer 缺失

① 问题描述:251 实派 LLM 依赖 12 例红:test_analyze 2、test_chat 1、test_auto_tag 5(LLM 401)、test_intent 4。本轮另确认:251 无 pytest_timeout 插件,test_auto_tag_short_content 存在网络重试挂起(>240s 无输出),全量首轮 KICK 超时即源于此。 ② 本轮证据升级:非 LLM 子集(health_plan/memory/report_parse/tongue/graph/recommend)31/31 实跑全绿 → 挂起面收窄至 LLM 依赖文件,非代码回归。 ③ 最优修改方案:注入有效 LLM_API_KEY(或全 mock);给 251 .venv 装 pytest-timeout 防挂起;analyze 补 thread_id/checkpointer;intent_classifier 401 时应抛错。 ④ 能否闭环:可。判据:251 实派 44 例 0 红(或全 mock 后 0 红)。


十、门禁结论

门禁 阈值 本轮实测 判定
G1 全量通过率 ≥98% 98.06%(后端 98.67% 采信) ✅
G2 红例数 0 61(后端 34 + 根级 16 + langgraph 11) ❌
G3 前端 jest 全绿 423/426(3 skip,0 红) ✅
G4 管理端 jest 全绿 116/116 ✅
G5 后端编译完整性 0 错、无沉默 采信 R119:编译 0 错;339/339 XML、沉默 0;恒等式误差 0 ✅
G6 浏览器 E2E 全绿 28/28 + 189 首轮 5/5 ✅
G7 langgraph 0 红 32/43(11 红;非 LLM 31 实跑绿) ❌
G8 鉴权契约 全绿 health 13/13 + /api/mind 线上匿名 200 ❌
G9 SRS 锚点 ≥40% 10.6%(86/812) ❌
G10 节点派发 双节点可派 251 ✅ / 189 ✅(首轮 5/5) ✅
G11 CI 接入 含后端全量 仅 test-compile + 前端 jest ❌
G12 测试资产入库 变更已入库 报告/台账/阻塞更新入库 ✅

综合结论:不通过(有条件)

  • 阻断项:G2(61 红)、G7(langgraph 11 红)、G8(鉴权缺口 + O-21 未落码)、G9(锚点 10.6%)、G11(CI 无后端全量)。
  • 达标项:G1 98.06%、G3、G4、G5、G6、G10、G12。
  • 复评条件:① P-4 落码(O-21);② P-2 中 EnergySystem/MembershipPay/PaymentORD/WechatLogin 四类定向复跑 0 红;③ CI 出现后端全量作业。
  • 与 R119 关系:测试结果严格零漂移(逐项逐例一致,34 红类差集空);本轮唯一状态变化为 B-120 销号(189 连续 2 轮 0 偶发)与 langgraph 非 LLM 子集实跑全绿复验;连续第 6 轮挂账于 P-1/P-2/P-4/P-6 等未修项。

附:本轮产出物

文件 内容
docs/tdd/orchestration/report-test-2026-11-10-R120.md 本报告
docs/tdd/test/automation-run-2026-11-10-R120.md 执行台账(命令/耗时/原始数字)
docs/tdd/test/blockers.md B-120 销号更新、B-69 第 20 轮、B-36 第 23 轮零漂移