全栈测试执行记录 · R97(2026-11-09 04:56 起跑)
自动化闭环第 97 轮。执行档:review(离线)——未联网装依赖、未启停任何服务、未修改生产代码;仅修改测试侧装置(tests/e2e-live/admin-live.spec.js)。
汇报正文:docs/tdd/orchestration/report-test-2026-11-09-0610.md;台账:docs/tdd/test/blockers.md。
一、历史审查记录
| 项 |
内容 |
| 上次审查 |
R96(2026-11-09 04:31),结论不通过 |
| R96 遗留 |
后端 2753/115 红(承袭未实测)、前端 49 红(预期 RED)、langgraph 本机 44/32/12、251 派发不可用、B-65/B-69 续催、B-83 新增 |
| 本次改善 |
①后端首次实测(推翻「无 Maven」);②251 派发达成(G10 首次通过);③浏览器零 skip(B-76/B-59 闭环);④B-65 定性升级(非「已修」而是「依赖版本侥幸」);⑤B-69 定位到 PUBLIC_PATHS |
| 历史教训应用 |
B-28(分支切换带走工作区)→ 跑前/跑后双查 branch+HEAD;B-32(口径漂移)→ 本轮所有度量给出可复算口径并剔除生成物(B-86);B-67(假红三证)→ U04 失败执行「2 次独立复跑 + 接口 curl 5 连测」后才定性 |
二、项目画像
| 维度 |
内容 |
| 业务定位 |
家庭教育成长平台「浠艾福(XAF / CFC)」:家长端/规划师端/孩子端小程序 + 管理后台 + 商城 + AI 服务 |
| 技术栈 |
cfc-backend Spring Boot 2.7.18 + MyBatis-Plus + Java 8;cfc-frontend uni-app(Vue2);cfc-web Vue2+Element UI;cfc-langgraph FastAPI+LangGraph+ChromaDB;dan/danshop 独立商城 |
| 模块规模 |
后端 2110 生产源 / 249 控制器 / 333 测试类;前端 26 测试套件;管理端 17 套件;langgraph 44 用例 |
| 关键路径 |
微信登录 → 家庭/成员 → 五维能量 → 健康报告上传解析 → 测评订单 → 成长任务 → 商城 → AI 管家 |
| 测试现状 |
后端单测/集成较厚(2802 例);前端用例集中在 diet/signature 改版;E2E 仅 live 28 例;无覆盖率/变异/压测/SAST/无障碍资产 |
| 质量目标 |
用户口径:全部用例通过 + 覆盖全部 SRS 与用户场景(含异常流) |
| 主要风险 |
①TDD 契约红态堆积(94 例)导致通过率长期 <96%;②A 类装置红 37 例污染门禁信号;③SRS→可执行锚点仅 11.5%;④CI 仍为两级软门禁 |
三、20 类测试覆盖矩阵
三态:已发现=取得可执行资产与实测数据;未发现=扫描未命中(≠不存在);待核实=扫描截断/无法判定。
3.1 功能层次(5 类)
| # |
类型 |
状态 |
证据 |
| 1 |
单元测试 |
已发现 |
333 类 / 2802 例,1:00h 实跑 |
| 2 |
测试覆盖率 |
未发现 |
无 jacoco 报告产物(target/site/jacoco 不存在) |
| 3 |
变异测试 |
未发现 |
无 PIT/pitest 配置 |
| 4 |
集成测试 |
已发现 |
EnergySystemFlowTest/PlannerBindInviteFlowTest 等 40+ 类,13 例红 |
| 5 |
契约测试 |
已发现 |
Guhe*ContractTest 13 类 85 例(预期 RED)+ health 契约 13/13 |
3.2 功能保障(4 类)
| # |
类型 |
状态 |
证据 |
| 6 |
冒烟测试 |
已发现 |
playwright.config.smoke.js 存在;live 15/15 承担冒烟职能 |
| 7 |
回归测试 |
已发现 |
后端全量 + 前端 423 + 管理端 116 每轮复跑 |
| 8 |
探索性测试 |
未发现 |
无 charter/记录 |
| 9 |
验收测试(UAT) |
未发现 |
无用例与签署记录 |
3.3 非功能(6 类)
| # |
类型 |
状态 |
证据 |
| 10 |
性能测试 |
未发现 |
无 k6/jmeter;仅 nonfunc-perf-compat.spec.js 轻量探针 |
| 11 |
可靠性测试 |
待核实 |
无故障注入/混沌;251 两次断连(B-55)为被动观测 |
| 12 |
安全测试(SAST) |
未发现 |
无 semgrep/codeql 产物 |
| 13 |
依赖漏洞(SCA) |
未发现 |
无 OWASP DC/trivy 产物(离线档亦不允许联网拉库) |
| 14 |
兼容性测试 |
已发现 |
admin-desktop + H5-mobile 两档(playwright.config.live.js projects) |
| 15 |
无障碍测试 |
未发现 |
无 axe 断言 |
3.4 度量与流程(5 类)
| # |
类型 |
状态 |
证据 |
| 16 |
QA 流程 |
已发现 |
docs/tdd/ 台账 + 双负责人轮次 + blockers 编号体系 |
| 17 |
质量指标 |
已发现 |
本轮首次给出可复算全量口径(3435/3210=93.45%) |
| 18 |
缺陷管理 |
已发现 |
blockers.md B-1~B-86 |
| 19 |
全项目代码审查 |
待核实 |
抽样(控制器 249/接口 2110 源);@GetMapping 8 处违规 |
| 20 |
变更影响分析 |
已发现 |
SRS 3 份 ↔ 用例映射(§五) |
缺口统计:已发现 11 / 未发现 8 / 待核实 1。
四、测试方案(本轮实际执行)
| 项 |
内容 |
| 目标 |
①取得可复算全量通过率;②定位 143 红例分层归因;③langgraph 派 251;④浏览器零 skip |
| 范围 |
后端全量 JUnit、前端/管理端/根级 jest、langgraph 251 实派、浏览器 live+health |
| 排除 |
覆盖率/变异/压测/SAST/SCA/UAT/BDD/无障碍(无工具或无资产,标未实测) |
| 执行档 |
review(离线);251 派发走内网 opencode 通道(禁装依赖、禁启停服务) |
| 优先级 |
P0 analyze thread_id → P1 装置 37 例 → P1 产品 12 例 → P1 契约 94 例 |
五、执行结果明细
5.1 后端(JDK1.8.0_25 + IDEA Maven 3.9.9,mvn -o -B clean test,1:00:34)
Tests run: 2802, Failures: 132, Errors: 11, Skipped: 4
passed=2655 pass_rate=94.75% (excl_skip 94.89%)
classes=333 red_classes=34 red_cases=143
恒等式: @Test 2792 + 参数化展开 26 − @Disabled 4 − 早退截断 12 = 2802(误差 0)
testCompile: 339 源 0 错;XML 完整性 333/333;无静默丢失
红类 TOP10:GuheEvidenceIsolateContractTest 11、GuheNoPathMapContractTest 10、DietFoodHealthAdjustContractTest 9、GuheKbVersionSenseContractTest 9、GuheLowSideRuleLoadContractTest 9、CfCommissionServiceSettleTest 8、GuheReportPersonalAssertContractTest 7、EnergySystemFlowTest 6、GuheKbQueryLowSidePatchContractTest 6、GuheV2RouteContractTest 6。
三层归因:预期 RED 94 / A 类 37 / B 类 12。
5.2 前端与管理端
| 套件 |
结果 |
红例分布 |
cfc-frontend |
423 / 371 / 49 / 3 skip |
recommendation.uiRework 25、signature.canvas2d 9、recommendation.healthAdjustUi 8、recommendation.participantSelect 8(全为预期 RED,源码能力键命中 0) |
cfc-web |
116 / 116 / 0 |
— |
tests/ 根级 |
23 / 7 / 16 |
B-36 黑盒环境依赖(零漂移) |
5.3 langgraph(251 实派,权威口径)
251 仓库: /sc-data/cfc/cfc-langgraph HEAD 4f1cf92ec branch cfclub
命令: timeout 720 .venv/bin/python -m pytest tests --ignore=tests/qna --ignore=tests/test_chat.py -q
结果: 10 failed, 33 passed, 6 warnings in 183.67s
| 红例分组 |
例数 |
归因 |
test_analyze.py |
2 |
B-65 源码级(thread_id),251 pytest 可复现 |
test_auto_tag.py |
4 |
B-74 装置(ASGITransport 不触发 startup) |
test_intent.py |
4 |
环境(251 模型/凭据对意图分类不稳定;R95 曾 4/4 绿) |
test_chat.py |
1 |
B-84 新增:真实 LLM 无超时,>10min 不收敛 → 本轮排除执行 |
251 live 端到端(权威能力验证):/api/v1/chat 200(28.44s,完整 answer)、/api/v1/analyze 200(15.77s)、/health 200、/docs 200、OpenAPI 40 paths。
5.4 浏览器自动化(本机单节点串行,workers=1)
| 套件 |
结果 |
耗时 |
| live(admin 5 + frontend 6 + shop 4) |
15/15,0 skip |
1.6m |
| health-contract |
13/13 |
~20s |
装置修复(B-76/B-59 闭环):admin-live.spec.js 新增 waitLoginFormReady()、fillPhoneAndAwaitRoles()(等 account-roles XHR 返回并断言 200),TC-A-U05 的 test.skip 改硬断言。修复前首跑 U04 红/U05 skip;修复后 5/5、全套件零 skip。
5.5 节点分派实测
| 节点 |
端口 |
结果 |
| 192.168.16.251 |
9000 / 4096 / 22 |
全部可达;9000 服务正常(40 paths)、4096 opencode 可用 → pytest 实派成功 |
| 192.168.16.251 |
4090 / 8000 |
CLOSED |
| 192.168.16.189 |
4090 / 22 |
Connection refused(B-56 延续:节点失联) |
| 本机(204) |
Chromium-1228 |
浏览器单任务串行 ✅ |
六、覆盖缺口清单
| 缺口类型 |
现状 |
风险 |
建议测试设计 |
优先级 |
闭环方式 |
| SRS→可执行锚点 |
95/824 = 11.5% |
需求变更无法被用例守护 |
每份 SRS 的验收点必须落 1 个可执行 TC 锚点注释 |
P0 |
新 SRS 合并时 CI 校验「新增 spec 含 TC-* 注释」 |
| 异常流执行级验证 |
设计 496 条(60.2%),执行锚点极少 |
异常分支回归无守护 |
对 -E/-P 用例按控制器分组补 MockMvc 负向用例 |
P1 |
每控制器 ≥3 条负向用例 |
| 覆盖率 |
无 jacoco 产物 |
无法判定测试有效性 |
引入 jacoco + 行覆盖 ≥60% 门禁 |
P1 |
mvn test 出 HTML 报告并入库 |
| 变异测试 |
无 |
断言强度未知 |
引入 pitest 对 service 层抽样 |
P2 |
变异存活率 ≤40% |
| 性能/可靠性 |
无压测 |
慢查询/抖动无基线 |
对 live 关键 API 做 p95 基线采集 |
P2 |
每轮采集 p95 并对比 |
| SAST/SCA |
无 |
漏洞不可见 |
引入 semgrep + dependency-check(需联网授权) |
P2 |
CI 增 security job |
| 无障碍/多浏览器 |
仅 2 档 |
体验缺保障 |
增 firefox/webkit + axe 断言 |
P3 |
projects 扩展 |
| UAT/BDD |
无资产 |
业务验收无记录 |
每迭代 1 份 Gherkin 场景 |
P3 |
与产品共签 |
七、门禁结论
不通过(详见汇报正文 §八)。本轮结构性改善:G10 节点派发首次通过、G6 浏览器零 skip、首份可复算全量口径。
八、未实测项(如实登记)
- 覆盖率、变异测试、性能压测、SAST、SCA —— 无工具/离线档不允许联网。
tests/test_chat.py 1 例 —— 真实 LLM 无超时,两节点均不收敛(B-84)。
- UAT、BDD、探索性、无障碍、多浏览器 —— 无资产。
- 192.168.16.189 浏览器派发 —— 节点 22/4090 全拒。
- 后端 A 类 37 例的转绿 —— 测试侧下轮处置,本轮仅归因未修改(除浏览器装置)。