_test_closure_report_2026-11-05_0140.md 9.7 KB

浠艾福 XAF · 测试闭环报告

  • 执行时间:2026-11-05 01:40 (GMT+8)
  • 执行档:review 档(已授权内网 cfc.iwintrue.com;不联网;只写测试目录、不提交不推送)
  • 主理人:陆谨(软件测试专家团)
  • 基线锚定:c83c4eb25(HEAD)
  • 结论:⛔ 不通过(有条件) —— 见文末门禁结论与复评条件

1. 执行范围

模块 技术栈 实测动作 结果
cfc-backend Spring Boot 2.7.18 + MyBatis-Plus + Java 8 mvn -o test(离线) ❌ 编译失败,套件不可执行
cfc-web Vue2 + Element UI 管理端(Jest) jest(axios-mock-adapter mock API) ✅ 12 套件 / 90 用例全绿
cfc-frontend uni-app 小程序 不在本任务范围(仅说明) —
tests/e2e Playwright 内网 /admin、/frontend ⚠️ 降级(无凭据,待核实登录态)

说明:本环境 cfc.iwintrue.com 经 hosts 解析至内网 192.168.16.251,探活 / 返回 404(Spring 健康窗),内网可达;/admin、/frontend 返回 302(跳转登录),需身份认证。


2. 用例总数 · 通过 · 失败(实测)

维度 总数 通过 失败 备注
cfc-web Jest(单元/组件) 90 90 0 12 套件,JEST_EXIT=0,全程 mock API,不断言真实服务端行为
cfc-backend 单元测试/集成测试 — — — BUILD FAILURE(testCompile 阶段中断),0 用例执行
E2E Playwright(/admin、/frontend) — — — 未执行,降级为测试设计(见第 8 节)

3. 覆盖率

维度 覆盖率 数据来源 / 状态
cfc-web 未采集 本次未带 --coverage;mock API 测试覆盖率参考意义有限
cfc-backend 不可测 套件编译失败,无法生成 JaCoCo 报告
历史基线(11-04 引用) 86.7% / 1512 例 ⚠️ 已失效:该基线为历史复用值,本次实测证明当前后端测试源码无法编译,不可复现

4. 新增风险

  1. 【阻断性】后端测试套件整体不可编译 —— 详见五要素 P1。整套后端单元/集成测试(历史 ~1512 例)当前零可执行,覆盖率与通过率无法度量;这是相对"86.7% 基线"的真实质量回归,且历史跟踪自动化长期"复用旧实证"而未被发现。
  2. 【口径待核】cfc-web Jest 套件数偏低 —— 本次实测 12 套件 / 90 用例,与历史引用的"14 套件 / 296 用例"严重不符。需确认是历史口径错误、套件被裁剪,还是本运行遗漏部分测试目录。

5. 测试用例编写产出

  • 闸门判定:自上次运行(2026-11-04 23:36)起,docs/tdd/SRS.md、docs/需求分析/、docs/superpowers/specs/ 零提交(git log --since 为空)。
  • 结论:依据任务规则「仅当 SRS/需求文档自上次运行有新增或修改时才编写/更新测试用例」,且「需求无变更则跳过编写」,本次不编写、不修订任何测试用例,避免仓库抖动。
  • 基线:需求文档基线锚定 commit c83c4eb25,后续轮次将基于此检测增量并编写。
  • 注:近期(11-01~11-04)确有需求文档提交(AI 教练会员门禁 46003、T40 强制更新、天盘 emoji 替换、T38 团队邀请、家庭优惠券三合一页等),但均早于本次基线,不触发本轮编写;其中 AI 教练会员门禁(46003)已与历史 E2E 红用例直接对应,建议在下一轮基线增量判定时优先补测。

6. 五要素问题清单

🔴 P1 · 后端测试套件编译失败(阻断性缺陷)

要素 内容
① 问题描述 cfc-backend 执行 mvn test 在 testCompile 阶段 BUILD FAILURE,整套后端单元/集成测试零执行,覆盖率与通过率不可测;历史"86.7%/1512 例"基线失效。
② 测试 bug 点 cfc-backend/src/test/java/com/etotem/cfc/unit/CfBalanceControllerTest.java 共 7 处:行 95, 113, 121, 140, 169, 189, 202。
③ 最优修改方案 测试仍按旧签名调用——controller.balance(7L, null)(2 参)、controller.logs(7L, null, 1, 20)(4 参);而生产 CfBalanceController.java 已重构为 balance(@RequestAttribute("userId") Long userId)(行 55)与 logs(Long userId, @RequestParam Integer page, @RequestParam Integer size)(行 67),memberId 改为内部 resolveMemberId 解析、page/size 改为 @RequestParam。修复:将测试调用改为 controller.balance(7L) 与 controller.logs(7L, 1, 20)(删除第二个 null 实参),其余断言不变。若认定生产签名属误改,则逆改生产。
④ 修改目的 恢复后端测试套件可编译、可运行,使覆盖率与通过率可度量,消除测试/生产契约漂移(test-source drift)。
⑤ 问题闭环 修改后 mvn -o test 编译通过且 CfBalanceControllerTest 全绿;通过标准:BUILD SUCCESS 且该测试类 0 失败。

🟡 P2 · cfc-web Jest 套件范围口径不一致(待核实)

要素 内容
① 问题描述 本次实测 cfc-web 仅 12 套件 / 90 用例全绿,与历史引用"14 套件 / 296 用例"不符,存在覆盖率/范围缺口疑点。
② 测试 bug 点 cfc-web/package.json test 脚本(jest);cfc-web/src/**/__tests__/*.test.js\|*.spec.js 共 12 文件。
③ 最优修改方案 核对 jest config 的 roots/testMatch 与历史 296 用例出处(是否曾含 cfc-frontend 或已删除套件),确认当前 12/90 是否为应覆盖全集。
④ 修改目的 确保前端测试资产完整、口径一致,避免"假性全绿"掩盖漏测。
⑤ 问题闭环 出具套件清单对账表,确认无遗漏套件后闭环;若确为历史口径错误则在台账更正。

🟠 P3 · E2E 三个常红用例(历史遗留,本轮未重验)

要素 内容
① 问题描述 历史 E2E 长期 3 红:nonfunc-perf-compat.spec.js 46003 会员门禁、nonfunc-security.spec.js:75/77 后台未授权返 code=500(应 401/403)、:121/131 上传非 PDF 未拒。本轮因无凭据未重验,列为待核实。
② 测试 bug 点 tests/e2e/nonfunc-perf-compat.spec.js:99、`tests/e2e/nonfunc-security.spec.js:75/77、:121/131。
③ 最优修改方案 46003:测试环境置 ai.coach.member_gate_enabled=false 或改用 FAMILY/PREMIUM 账号;未授权返 500:后端鉴权异常统一为 401/403;上传校验:增加非 PDF/恶意内容 4xx 拒绝。
④ 修改目的 收敛安全契约缺口与产品意图漂移导致的测试期望滞后。
⑤ 问题闭环 提供 E2E 凭据注入机制后实跑,3 红转绿或给出产品侧合理解释。

7. 待核实项

  1. 后端覆盖率 / 通过率:需先修复 P1 编译漂移并重跑 mvn -o test 取真实值。
  2. E2E 实际结果:需可用凭据注入机制后实跑 /admin、/frontend。
  3. cfc-web Jest 历史 296 口径:见 P2。
  4. 网关 portrait 504 根因(历史):网关 proxy_read_timeout 60s < AiGateway 300s,与本次范围无关,列此备查。
  5. SRS/需求文档增量:本基线 c83c4eb25 之后若再有提交,下一轮将触发测试用例编写。

8. 需用户单独授权才能继续的项(未授权未执行 · 已给测试设计)

8.1 内网 E2E 实际执行(/admin、/frontend)

  • 状态:⚠️ 未授权未执行 / 待核实登录态(本环境无凭据,按任务约定降级)。
  • 测试设计(待凭据就绪后落地):
    • /admin(管理端 SPA):登录态注入(环境变量/本地配置,禁止明文)→ 登录后校验左侧菜单/路由守卫 → 关键业务页(用户、订单、文章、维度配置)CRUD 冒烟 → 未授权访问应 401/403(对应 P3 红用例)。
    • /frontend(C 端):登录态注入 → 首页/健康/商城/家庭核心流冒烟 → 上传报告 PDF 校验(非 PDF 应 4xx,对应 P3 红用例)→ AI 教练会员门禁(会员账号或关开关,对应 46003)。
    • 断言原则:仅断言 DOM/状态码/契约字段;不写明文凭据;不重启远端。

8.2 需联网的命令(一律未执行,降级为测试设计)

  • 依赖漏洞扫描(OWASP Dependency-Check / npm audit 联网)、性能压测(打到远端)、Playwright 从公网安装浏览器 → 均未执行。
  • 测试设计:漏洞扫描建议在内网 CI 节点离线跑 dependency-check;压测建议对本地回环 9082 起服务后限流自测,避免打生产内网。

9. 门禁结论

⛔ 不通过(有条件)

  • 判据:① 后端测试套件编译阻断(P1),核心服务零可执行测试,质量门禁无法达成;② E2E 因无凭据未实测(待核实登录态);③ 仅 cfc-web Jest 全绿,但套件范围口径需复核(P2);④ 历史 E2E 3 红未重验。
  • 复评条件(全部满足方转为通过/有条件通过):
    1. 修复 CfBalanceControllerTest.java 7 处签名漂移,mvn -o test 达 BUILD SUCCESS 并产出真实覆盖率/通过率;
    2. 提供 E2E 凭据注入机制后实跑 /admin、/frontend,3 红用例有明确结论(转绿或产品侧解释);
    3. 核对 cfc-web Jest 套件范围,消除 12/90 与历史 296 的口径不一致;
    4. 后续轮次基于基线 c83c4eb25 检测到 SRS/需求增量时,按时编写/更新测试用例。

本闭环全程只读 + 本地测试 + 测试目录内零改动(未修改生产源码、未提交、未推送)。凭据、密钥、令牌均未在报告/日志中落地。