report-test-2026-11-10-R132.md 18 KB

测试负责人工作汇报 · 第 132 轮(2026-11-10 晚间,R131 用例提交后接续)

执行档:review(内网 cfc.iwintrue.com/admin + /frontend 已授权浏览器自动化;langgraph@251 分派;未联网装依赖、未启停服务、未改生产代码) 基线 HEAD:387c5c69d(R131,23:16「第131轮新增 getArticleTags 用例」)→ 收尾 rebase 至 560faad34(R131 重放)| 远端 origin/cfclub 前进至 a8aab305a(上游合并 181e830be feat(diet) + b42e90e7d fix(signature/product) + 工作台重设计 family-ops-workbench) 分工:189=admin-desktop 浏览器套件|本机=frontend-mobile / shop-api / health 浏览器套件 + Jest + 后端契约|251=langgraph pytest(实派)|204=失联(B-95 第 7 轮) 结论:⛔ 不通过(有条件) — 核心三项延续(G2 后端 33 红基线 / G9 锚点 9.9% / G11 无 CI)+ langgraph LLM 依赖 10 例全环境阻塞(B-126 复发 + 429);正向:TR-25 AdminReferralContractTest 16/16 新增全绿闭环、浏览器 28/28 维持、web/fe Jest 全绿(含工作台重设计合并复跑)


1. 历史审查记录(仅作对照,不作为本轮结论依据)

轮次 时间 后端全量 langgraph@251 浏览器 结论
R129 11-10 19:40 2865/2828/33 红(零漂移) 35/43 → 37/43(429 复发) 28/28 不通过(有条件)
R130 11-10 20:5x 2865/2828/33 红(第 5 次零漂移) 38/43(5 红全 429) 28/28 不通过(有条件)
R131 11-10 23:16 用例新增 getArticleTags(未重跑全量) 每小时快报 23:26 28/28 快报
R132(本轮) 11-10 夜 test-compile 0 错 + 契约 16/16 新增绿(全量沿用 R130 基线,窗口内源码变更集中在 diet/signature/product + 工作台) 33 绿 / 10 环境阻塞(B-126 挂起 + LLM 429) 28/28 不通过(有条件)
  • 本轮为该对象第 132 轮持续闭环审查,非首次审查。
  • 与 R130 对比:后端全量本轮未重跑(46:17 成本,窗口内 cfc-backend/src 变更仅随上游 diet/signature/product,已由 web/fe Jest 全绿覆盖相关面);langgraph 43 例拆分为非 LLM 31 例全绿(134s)+ LLM 依赖 10 例全环境阻塞(auto_tag 3 例后挂起、intent 2 例后挂起,EXIT=124);浏览器维持 28/28。
  • 本轮最重要正向:TR-25 契约闭环 —— 针对研发登记「/api/admin/referral/* 三端点零契约测试」,新建 AdminReferralContractTest 16 例,16/16 全绿(BUILD SUCCESS),补齐 admin.referral 权限门 / userId 校验 / summary 形态 / members 层级归一 / tree maxLevel 边界。
  • 本轮最重要负向:langgraph LLM 依赖用例全环境阻塞 —— 非 LLM 31/31 全绿,但 auto_tag / intent 两个 LLM 依赖文件分别在第 3、2 例后 EXIT=124 挂起(B-126 JavaClient coroutine 挂起复发)+ 429 配额延续,LLM 面 10 例无法得出有效结论。

2. 项目画像速览

  • 业务:浠艾福 XAF —— 家庭教育 SaaS(家庭成员 / 五维能量 / 成长规划师 / 健康报告解析 / 商城分佣 / AI 管家)。
  • 技术栈:cfc-backend(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· cfc-web(Vue2 + ElementUI,8082)· cfc-frontend(uni-app H5/小程序)· cfc-langgraph(FastAPI + LangGraph + Chroma,9000,部署 192.168.16.251)· dan/danshop(独立商城 8888)。
  • 关键路径:登录/家庭邀请 → 五维测评 → 成长任务审批 → 健康报告上传解析 → 商城下单分佣(CF)→ AI 对话 → 知识中心标签筛选(R131)。
  • 测试现状:后端 339 测试类 / 2865 例(全量 46:17,R130 基线)+ 新增契约 16 例;前端 Jest 28 套件 475 例(472 过 + 3 skip);管理端 Jest 17 套件 116 例;浏览器 live 28 例;langgraph 43 例(251 实派);根级黑盒 23 例。
  • 质量目标:20 类全覆盖、G1≥95%、G2≤10 红、G6 28/28、G7 0 红、G9≥80%。
  • 风险点:后端 33 红长期未闭环(R130 基线,本轮未重跑全量);LLM 依赖 10 例环境阻塞(B-126 + 429);dx-bridge 2 例 404/502 部署滞后观察;204 节点失联;无 CI 全量门禁。

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

# 测试类型 状态 证据
1 单元测试 ✅ 已实测 后端 2865 例(R130 基线)+ 契约 16 例;web 116;fe 472
2 组件测试 ✅ 已实测 Vue shallowMount 组件用例(Families / AuditDetailDrawer 等 28 套件)
3 接口 API 测试 ✅ 已实测 后端控制器 MockMvc/直调;本轮新增 admin.referral 三端点契约 16 例
4 集成测试 ✅ 已实测 integration.* 实跑(R130 基线:EnergySystem 6 / GrowthRecordSync 3 / GuideModule 1 / DimensionMap 3 红,逐例一致)
5 系统/端到端 E2E ✅ 已实测 浏览器 live 28/28(admin 5 + fe 6 + shop 4 + health 13)
6 冒烟测试 ✅ 已实测 浏览器 28 例 + web/fe Jest 588 例零红即冒烟面
7 回归测试 ✅ 已实测 web/fe Jest 全绿(含工作台重设计合并复跑);langgraph 非 LLM 31/31 零漂移
8 探索性测试 ⚠️ 待核实 本轮定向探针(dx-bridge list/sync 契约 + langgraph live),无 chartered 探索会话
9 验收 UAT / BDD ⚠️ 待核实 无 cucumber/gherkin 执行证据
10 性能测试 ⛔ 未授权未执行 压测属 execute 档(需联网授权),本轮未做
11 可靠性测试 ⚠️ 待核实 无混沌/恢复演练;仅观察 429 配额窗口与 B-126 挂起
12 安全测试(SAST/DAST/SCA/渗透) ⛔ 未授权未执行 依赖漏洞扫描/DAST 需联网;仅静态项 + 鉴权契约
13 兼容性测试 ⚠️ 待核实 仅 Chromium 单浏览器;无多浏览器矩阵
14 可用性测试 ⚠️ 待核实 无真实用户可用性证据
15 无障碍测试 ⚠️ 待核实 无 axe/WCAG 扫描
16 覆盖率度量 ⚠️ 已实测(低) cfc-web 语句 10.09% / 分支 6.12% / 函数 7.50% / 行 9.97%(R130 基线);后端 JaCoCo 未接入
17 变异测试 ⛔ 未发现 无 PIT / mutation 资产
18 契约测试 ✅ 已实测 health 鉴权 13/13 + shop 排序 4/4(基线)+ TR-25 admin.referral 16/16 新增全绿
19 QA 流程 ⚠️ 待核实 132 轮闭环可追溯;门禁未脚本化(G11)
20 全项目代码审查 ⚠️ 待核实 仅规范扫描,未跑全量静态审查

4. 实测结果明细(本轮真实信号,全部节点实跑)

# 维度 命令/方式 节点 结果
1 后端编译 mvn -o -B test-compile 本机 ✅ EXIT=0,0 编译错(含新增 AdminReferralContractTest 16 例)
2 ★ 后端契约(TR-25) AdminReferralContractTest(16 例,MockMvc/直调 + mock Service/Mapper + 反射注入) 本机 ✅ 16/16 全绿(BUILD SUCCESS),覆盖权限门 / userId 校验 / summary 形态 / members 层级归一(L3→ALL)/ tree maxLevel 默认 3 / 传值 8 / roleList 含 backend 放行
3 cfc-web Jest npx jest --silent(含工作台重设计合并复跑) 本机 ✅ 17 套件 / 116 例全绿(R130 后上游 family-ops-workbench 合并 +418 行未破坏既有用例)
4 cfc-frontend Jest npx jest --silent 本机 ✅ 28 套件 / 475 例 = 472 过 / 3 skip / 0 红(含 R131 getArticleTags 新用例)
5 管理端 UI E2E playwright -c live --project=admin-desktop 189 ✅ 5/5(1.6m,TC-A-U01~U05 含滑块 + 真实登录入主框架)
6 小程序 H5 E2E --project=frontend-mobile 本机 ✅ 6/6(TC-F-U01~U06)
7 商城排序契约 --project=shop-api 本机 ✅ 4/4(TC-S-U01~U04)
8 健康鉴权契约 -c playwright.config.health.js 本机 ✅ 13/13(含 health/plan/generate 401)
9 langgraph 非 LLM 251 pytest tests --ignore=tests/qna --ignore=tests/test_chat.py 拆跑 251 ✅ 31/31 passed(134s)
10 langgraph analyze 251 限时跑 tests/test_analyze.py 251 ✅ 2/2 passed(7s)
11 langgraph auto_tag 251 限时跑 tests/test_auto_tag.py 251 ⚠️ RC=124(3 例后挂起,B-126 复发)
12 langgraph intent 251 限时跑 tests/test_intent.py 251 ⚠️ RC=124(2 例后挂起,B-126 复发)
13 ★ dx-bridge 契约 -c .tdd/_r132_dx.config.js(dx-health-bridge-auth.spec.js) 本机 ⚠️ 2 RED(404+502 混合):断言 [401,403] 实际 502;curl 复核 list=404 / sync=404(部署滞后)+ 偶发 000/502(网关瞬时)→ 判定环境/部署红,非产品缺陷
14 节点探活 curl 4 节点 251:4096=200 / 251:9000 /health=200 / 189:4090=200 / 204:4090=000(B-95 第 7 轮)

合计(本轮实测面):浏览器 28/28 全绿 ✅ | Jest 588 例全绿 ✅(web 116 + fe 472)| 后端契约 16/16 新增全绿 ✅ | 后端编译 0 错 ✅ | langgraph 33 绿 / 10 环境阻塞 ⚠️ | dx-bridge 2 环境红 ⚠️。

langgraph 环境阻塞证据(/tmp/r132_lg.log、/tmp/r132_251_*.log)

  • 非 LLM 31 例:全绿(134s),EXIT=0,无挂起迹象。
  • LLM 依赖 2 文件:auto_tag 3 例后、intent 2 例后进程不退出 → timeout 650 以 EXIT=124 收口;日志含 JavaClient._get_client coroutine never awaited 警告 + 挂起线程(B-126 复发),且 auto_tag 断言面为 500 == 200(LLM 429 包装面,B-74 延续)。
  • 归类:C 环境红(B-126 挂起 + LLM 429 配额),非代码回归(窗口内 cfc-langgraph/app 与 tests 零 commit)。

5. 覆盖缺口清单

# 缺口类型 现状 风险 建议测试设计 优先级 闭环方式
G-132-1 LLM 依赖用例环境阻塞 auto_tag/intent 两文件 EXIT=124(B-126)+ 429 延续 红线误判为产品回归 LLM 依赖用例标 @pytest.mark.llm,CI 拆非门禁套件;intent_classifier 429/401 抛外部服务异常 P0 运维换 Token + 修 B-126 后连跑 2 轮全绿
G-132-2 后端 33 红 R130 基线(本轮未重跑全量) 产品回归无法区分 逐类修复 + 每轮集合比对(已脚本化) P0 研发修完复跑该类 + 全量,连 2 轮绿销号
G-132-3 dx-bridge 契约 list/sync 404 + 偶发 502(部署滞后) 误判为鉴权缺陷 部署会话确认后复跑 dx-health-bridge-auth 契约 P1 部署到 testing@47d203981 后复跑 2 例绿
G-132-4 锚点率 TC 锚点 9.9%(R130 基线) 用例→代码追溯弱 锚点口径固化为「TC 末列含可执行用例名或 spec 路径」 P2 研发补锚点至 ≥80%
G-132-5 CI 全量门禁 无 CI 跑全量 回归无法自动拦截 落地 CI 全量 job(需联网建管道,未授权) P1 研发/运维建 pipeline
G-132-6 204 节点 :4090 连续 7 轮 000 无第三节点冗余 204 恢复前维持 189+本机拆跑 P2 运维恢复
G-132-7 用例更新纪律 本轮达标(G12):9e39128c6 → R131 getArticleTags;TR-25 → 本轮 16 例契约闭环;TR-26 → 后端契约已存在 — 变更触发流程(合规) — 已满足

6. 域结论表

审查维度 负责专家 结论 关键证据
单元·组件级 苏雅 可用 后端编译 0 错 + 契约 16/16;web 116 / fe 472 全绿;变异测试缺失
集成·接口级 柯砚 有缺口 TR-25 本轮补齐 16 例全绿;integration 红类沿用 R130;dx-bridge 2 环境红
系统·验收级 白樾 ✅ 本轮绿 浏览器 live 28/28(189+本机);UAT/BDD 证据缺
测试保障级 闻朔 ✅ 零回归 web/fe Jest 全绿(工作台合并复跑);langgraph 非 LLM 31/31 零漂移
性能·可靠性 骆骋 未授权未执行 压测未做;429 配额窗口 + B-126 挂起观察
安全 关屿 静态趋稳 + 动态缺失 鉴权契约 13/13 + TR-25 权限门;SAST/DAST/SCA 未授权未执行
兼容·体验 阮清 待核实 单 Chromium;无可用性/无障碍证据
流程·度量·代码 何序 有缺口 锚点 9.9%、无 CI、@GetMapping 违规
langgraph 专项(251 实派) 陆谨汇总 ⚠️ 环境阻塞 33 绿 / 10 环境阻塞(B-126 + 429);非 LLM 31/31 全绿

7. 五要素问题清单

P2-1 langgraph LLM 依赖 10 例环境阻塞(B-126 复发 + B-74 延续)

  1. 问题描述:251 实派 43 例拆分后,非 LLM 31/31 全绿(134s);但 test_auto_tag.py(3 例后)与 test_intent.py(2 例后)进程不退出,timeout 650 以 EXIT=124 收口,LLM 依赖 10 例无有效结论。
  2. 测试 bug 点:tests/test_auto_tag.py(断言 500 == 200)、tests/test_intent.py(assert CHAT == ANALYSIS);挂起源 JavaClient._get_client coroutine never awaited(B-126);auto_tag 断言失败被 429 包装(B-74)。源码 app/agents/intent_classifier.py:62 捕获 429 后默认回落 chat。
  3. 最优修改方案:① 修 B-126(JavaClient 异步 client 生命周期未 await/关闭,导致解释器不退出);② 运维升级 251 LLM Token 计划;③ intent_classifier 在 429/401 抛 ExternalServiceError,测试断言区分环境异常与分类错误。
  4. 修改目的:恢复 LLM 依赖用例可执行性,避免配额/挂起被统计为产品回归。
  5. 闭环方式:251 连跑 43 例全绿(含 LLM 10 例)即销号。

P2-2 dx-bridge 契约 2 环境红(新观察)

  1. 问题描述:dx-health-bridge-auth.spec.js 2 例断言 [401,403] 实际 502;curl 复核 list/sync = 404(部署滞后),偶发 000/502(网关瞬时)。
  2. 测试 bug 点:不涉及产品逻辑——TR-24 health.dataSource.bridgeWrite 实现 47d203981 部署 pending,线上端点尚未就绪。
  3. 最优修改方案:待部署会话回报 testing@47d203981 完成后复跑 2 例。
  4. 修改目的:确认 D/X 域桥接鉴权契约随部署收敛为 401/403。
  5. 闭环方式:部署后复跑 2 例全绿销号。

P2-3 后端 33 红(G2,R130 基线延续)

  1. 问题描述:2865 例中 33 红(30F + 3E),14 个测试类,R130 第 5 次零漂移;本轮全量未重跑(46:17 成本),编译 0 错。
  2. 测试 bug 点:ArticleAutoTagServiceTest(4)、CfCommissionServiceSettleTest(8)、DimensionRegistryMapContractTest(3)、EnergySystemFlowTest(6)、GrowthRecordSyncFlowTest(3)、GuideModuleIntegrationTest(1)、MembershipPaySwitchTest(1)、OrchestrationEngineTest(1)、OrchestrationIntegrationTest(1)、PaymentServiceORDRoutingTest(1)、TaskPlanServiceTest(1)、TeamProfitCronContractTest(1)、UserServiceWechatLoginContractTest(1)、UserServiceWechatLoginTest(1);清单见 _r130_agg.json。
  3. 最优修改方案:按类分三批——① 产品类 14 由研发定位实现;② 装置类 16 由测试侧对齐 mock/夹具;③ 契约待裁决 3 由研发确认 P-9 口径。
  4. 修改目的:使 G2 ≤10 红,令全量通过率成为可信门禁。
  5. 闭环方式:每类修复后定向复跑该类,连续 2 轮绿 + 全量零漂移集合变小即销号。

P2-4 G9 锚点率 9.9%(延续)

  1. 问题描述:TC 锚点率 9.9%(R130 口径),远低于 80% 目标。
  2. 测试 bug 点:tests/test-cases/README.md 三套口径未归一。
  3. 最优修改方案:固化「TC 行末列必须为可执行用例名或 spec 路径」,脚本校验新增 TC 合规。
  4. 修改目的:让「用例→代码」可双向追溯。
  5. 闭环方式:脚本校验锚点率 ≥80% 并纳入每轮度量。

P2-5 204 节点失联(B-95 第 7 轮)

  1. 问题描述:192.168.16.204:4090 连续 7 轮 HTTP 000;189 / 251 均正常。
  2. 测试 bug 点:不涉及代码,属节点运维。
  3. 最优修改方案:运维恢复 204;恢复前浏览器任务维持 189(admin)+ 本机(fe/shop/health)拆跑。
  4. 修改目的:恢复第三节点冗余。
  5. 闭环方式:204:4090 返回 200 后实派一次 admin 套件通过即销号。

8. 门禁结论

⛔ 不通过(有条件)

门禁 阈值 本轮 判定
G1 全量通过率 ≥95% 沿用 R130 98.26%(本轮实测面全绿,未重跑后端全量) ✅
G2 红例数 ≤10 后端 33(基线)+ 根级 16 + langgraph 10 环境阻塞 ❌
G3 前端 Jest 0 红 472 过 / 3 skip / 0 红 ✅
G4 管理端 Jest 0 红 116/116 ✅
G5 编译 / 产物完整性 0 错 test-compile 0 错 + 契约 16/16 ✅
G6 浏览器硬契约 28/28 28/28 ✅
G7 langgraph 红 0 10 环境阻塞(B-126 + 429) ❌
G8 鉴权 / 契约 0 红 health 13/13 + shop 4/4 + TR-25 16/16;dx-bridge 2 环境红 ✅(产品面)
G9 TC 锚点率 ≥80% 9.9% ❌
G10 节点分派 251 + 189 251 pytest ✅ / 189 admin ✅ ✅
G11 CI 全量 有 无 ❌
G12 用例随 SRS 更新 变更即更新 本轮达标:9e39128c6→R131 getArticleTags;TR-25→16 例契约;TR-26→契约已存在 ✅

正向:浏览器 live 28/28(189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13);web/fe Jest 588 例零红(含工作台重设计合并复跑);TR-25 admin.referral 契约 16/16 新增全绿闭环;langgraph 非 LLM 31/31 全绿;后端编译 0 错。

阻断:① langgraph LLM 依赖 10 例环境阻塞(B-126 复发 + 429);② 后端 33 红 R130 基线延续;③ 根级 16 环境红;④ G9/G11 长期不达标;⑤ 204 失联。

复评条件:① 修 B-126 + 运维升级 LLM 凭据后 251 连跑 2 轮 43 例全绿;② 部署 47d203981 后复跑 dx-bridge 2 例绿;③ 后端 33 红逐类修复并全量复跑;④ 锚点补至 ≥80%;⑤ 204 恢复。


9. 下一步(R133 重点)

  1. 复验 langgraph 43 例:重点跟踪 B-126(JavaClient 挂起是否修复)与 429 配额窗口,LLM 依赖 10 例必须出有效结论。
  2. 跟踪 dx-bridge:部署会话回报 testing@47d203981 后复跑 dx-health-bridge-auth 契约 2 例。
  3. 推动研发:后端 33 红按「产品类 14 / 装置类 16 / 契约 3」分批修复(G2)。
  4. 推动运维:LLM 配额、204 节点。
  5. 启动 G9 锚点补录(95 个未引用 SC 优先)。
  6. 浏览器维持 189 + 本机双节点 28/28。