df43ca9d0(10:45 轮提交;状态机 DONE 11 / YELLOW 2 / RED 0,SC-P-10/11 已上线)c83c4eb25(SRS/需求/API 变更判定锚点)machine.json 注入 E2E 凭据 + auth.js 增加 MACHINE_JSON_PATH 覆盖;E2E「无凭据降级」前提已失效。65af4ec7e 后变更使该实证失效。/d/tools/apache-maven-3.9.9/bin/mvn),推翻 08:21「mvn 不可用」;② 后端全量实际重跑(1634 例),取得当前真实基线;③ E2E 凭据已就位,但被沙箱批量删除守卫拦截(见第五节)。| 模块 | 技术栈 | 端口 | 本次可测范围 |
|---|---|---|---|
| cfc-backend | Spring Boot 2.7.18 + MyBatis-Plus + Java 8 | 9082 | mvn test(离线)全量单元/集成/契约测试 |
| cfc-web | Vue 2 + Element UI 管理端 | 8082 | Jest(axios-mock-adapter mock API,不断言真实服务端) |
| cfc-frontend | uni-app 小程序 | — | E2E(内网 /frontend,需登录态) |
| tests/e2e | Playwright(全局 1.61.1,chromium 已装) | — | E2E(内网 /admin、/frontend) |
关键约束(来自 AGENTS.md):统一 @PostMapping;Result<T> 响应;JWT 拦截 /api/**;新增接口须查 API_REFERENCE.md;pom 默认 skipTests=true(须 -DskipTests=false);后端测试源码与生产契约漂移是长期已知风险。
| # | 测试类型 | 状态 | 证据 |
|---|---|---|---|
| 1 | 单元测试 | 已发现 | cfc-backend 1634 例中绝大部分为单元/服务层;cfc-web Jest 90 例 |
| 2 | 组件测试 | 已发现 | cfc-web Jest 组件级(ProductPicker/ProductSkuEditor 等) |
| 3 | 测试覆盖率 | 未发现→待核实 | pom 无 JaCoCo 插件;本轮未集成,不臆断覆盖率 |
| 4 | 变异测试 | 未发现 | 本地无 pitest,未执行 |
| 5 | 集成测试 | 已发现 | cfc-backend *IntegrationTest/*FlowTest 多例;但 8 例环境红 |
| 6 | 契约测试 | 已发现 | 218 SC 派生结构化用例;本轮新增契约测试全绿(SC-P-03/SC-G-06) |
| 7 | 接口 API 测试 | 已发现 | cfc-web Jest mock API(仅契约层);E2E 内网契约(未实测) |
| 8 | 系统/端到端 | 已发现(E2E 资产存在) | tests/e2e 70 spec;实跑被沙箱守卫阻断 |
| 9 | 验收 UAT | 待核实 | 无独立 UAT 套件;以 E2E+契约覆盖近似 |
| 10 | BDD 规格 | 未发现 | 无 Cucumber/BDD 资产 |
| 11 | 冒烟测试 | 已发现 | _smoke_browser.spec.js + 接口冒烟脚本(历史轮次实跑) |
| 12 | 回归测试 | 已发现 | 全量套件即回归基线;本次无新增回归 |
| 13 | 探索性测试 | 未发现 | 未执行 |
| 14 | 性能测试 | 未发现(未授权未执行) | 需联网压测,降级为测试设计 |
| 15 | 可靠性测试 | 未发现(未授权未执行) | 同上 |
| 16 | 安全测试 | 部分已发现 | E2E 安全契约(nonfunc-security.spec.js,历史常红);SAST/DAST/依赖漏洞需联网未执行 |
| 17 | 兼容性测试 | 未发现(未授权未执行) | 非func-perf-compat.spec.js(历史红);浏览器矩阵未实跑 |
| 18 | 可用性测试 | 未发现 | 未执行 |
| 19 | 无障碍测试 | 未发现 | 未执行 |
| 20 | QA 流程/度量/代码审查 | 已发现 | AGENTS.md 工作流 + 全项目代码审查(TDD 编排并入);本次聚焦测试闭环 |
CI=true npx jest --silentmvn test(后端全量,离线 -o)mvn -o -DskipTests=false -Dmaven.test.failure.ignore=true test(25 分钟,reactor BUILD SUCCESS;MVN_TEST_EXIT=124 仅为管道尾 timeout 信号,构建已收口)65af4ec7e">@65af4ec7e:1528/1408/71/49/4,38 类):
/admin→302、/frontend→302、/→404(hosts→192.168.16.251 确认,服务可达)machine.json 已配置 e2e_test_target.admin 并写入 MACHINE_JSON_PATH,auth.js 据此注入 phone/password(口令不回显、不入库、不提交)AppData/Local/ms-playwright 含 chromium-1228/1234,可用SAFE_DELETE_BULK_CONFIRM_REQUIRED,阈值 50,目标 tests/test-results 含 85 项)。两次尝试(默认配置 / 覆盖 testResultsDir 至新空目录)均在同一守卫处失败。 详见第五节。tests/test-results(85 项)触发沙箱批量删除守卫,导致 E2E 无法启动。凭据、服务可达性、Chromium 均就绪——唯一阻塞是沙箱对「删除 >50 文件」的守卫。无人值守轮次不关闭沙箱,故降级。AdminFamilyOverviewControllerTest(E=3)、FamilyAdminOverviewServiceTest(E=3)、UserServiceFamilyNameLinkTest(E=2),根因 @SpringBootTest 硬编码 127.0.0.1:3306。childId→memberId、文案漂移、Mockito 误用、少量 NPE/上下文加载待核实。代表类:CfCommissionServiceSettleTest(8F)、GuideOrderControllerTest(6F2E)、ArticleControllerTest(4F5E)、ProductOrderControllerTest(0F6E)、EnergySystemFlowTest(6F)。mark-green,契约测试已绿但状态机滞留——属编排侧同步问题,非测试缺陷。c83c4eb25..HEAD):docs/tdd/SRS.md、docs/需求分析/、docs/superpowers/specs/、docs/superpowers/api/API_REFERENCE.md 零提交。docs/superpowers/specs/T28-migration-plan-food-recommend-idx-key-alignment.md(食材推荐指数键对齐·生产库迁移方案,代码修复已部署)。属后端数据迁移 + 已部署代码修复,不触发前端用例闸门(cfc-web Jest 本就 mock API;后端 FoodRecommendService 已有测试覆盖)。标记为待核实,需 owner 确认是否纳入需求闸门后再决定是否补后端回归用例。cfc-web/src/**/__tests__/*.test.js|*.spec.js = 12 文件/90 例(全绿);tests/e2e/*.spec.js = 70 文件(资产孤儿化,执行数=0,见第五节)。@SpringBootTest 类硬编码本机 MySQL 地址 127.0.0.1:3306,本沙箱无该实例 → 8 个 Error,CI/本地不一致。cfc-backend/src/test/.../AdminFamilyOverviewControllerTest.java、FamilyAdminOverviewServiceTest.java、UserServiceFamilyNameLinkTest.java(各含 127.0.0.1 引用 ×2)。@SpringBootTest 的 properties 或 application-test.yml 的 ${DB_HOST:127.0.0.1},CI 注入真实测试库地址;禁止硬编码。mvn -o -DskipTests=false test 中此 3 类 Error 归零;通过标准 = 全量 0 Error 且不再依赖本机 3306。CfCommissionServiceSettleTest(8F)、GuideOrderControllerTest(6F2E)、ArticleControllerTest(4F5E)、ProductOrderControllerTest(0F6E)、EnergySystemFlowTest(6F);具体 文件:行号 需逐类开 target/surefire-reports/TEST-*.txt 取首异常定位。memberId(替换残留 childId);状态码对齐 API_REFERENCE.md;Mockito 误用改正。建议二分推进(每类修完重跑该模块)。BUILD SUCCESS 且 0 failure。mvn test 达 BUILD SUCCESS(failures=0, errors=0);通过标准 = 1634 例全绿或仅剩环境相关 skip。tests/test-results(85 项历史)触发沙箱 SAFE_DELETE_BULK_CONFIRM_REQUIRED,E2E 无法启动;凭据/服务/Chromium 均就绪。D:\cfc\tests\test-results 的批量删除拦截。tests/test-results(单目录处置,避开守卫阈值)后重跑;(b) 在用户明确授权下以沙箱豁免方式运行 E2E。/admin、/frontend 端到端回归能力。cfc-backend/pom.xml(无 jacoco-maven-plugin)。test/专属 profile 增 jacoco-maven-plugin 并设阈值(如行覆盖 ≥70%),仅测试 profile 启用,不改主构建。mvn test 生成 jacoco.exec 与报告,达标则通过;通过标准 = 覆盖率 ≥ 阈值且全量绿。文件:行号(需逐类开 surefire txt 取首异常)。T28-migration-plan-food-recommend-idx-key-alignment.md(未提交 spec)是否纳入需求闸门。46003 会员专享;nonfunc-security :75/77 未授权返 500、:121/131 上传校验缺失)本周期未重验。| 项 | 为何未执行 | 测试设计(若授权) |
|---|---|---|
| E2E 实跑(/admin、/frontend) | 沙箱批量删除守卫拦截(环境变量清理历史 test-results) | 清理/迁移 tests/test-results 或沙箱豁免后,npx playwright test --project=desktop --config=tests/playwright.config.js,凭据经 MACHINE_JSON_PATH 注入,预期 51 passed/3 failed/3 skipped 基线复核 |
| 依赖漏洞扫描(OWASP DC) | 需联网下载漏洞库 | mvn org.owasp:dependency-check-maven:check 或 npm audit |
| 性能压测 | 需联网打到目标/远端 | 对 /admin、/frontend 用 k6/Playwright 计时,关注 portrait 接口 60s 网关超时 |
| Playwright 从公网装浏览器 | 需联网 | 已本地就绪(chromium-1228/1234),无需公网 |
| SAST/DAST | 需联网或专门工具 | SonarQube/CodeQL + ZAP;当前仅静态本地可做的已并入代码审查 |
判定依据:
-Dmaven.test.failure.ignore=true),但测试本身未全绿,契约漂移长期未收口 → 不满足「测试全绿」门禁。/admin、/frontend 端到端回归能力本周期未验证。复评条件(全部满足方转「通过」):
127.0.0.1:3306 硬编码,3 类 Error 归零;mvn -o -DskipTests=false test 达 BUILD SUCCESS 且 failures=0/errors=0;/admin、/frontend,已知 3 红修复或确认为预期;mark-green(O-1),关闭伪 RED 同步缺口。本轮动作范围声明:仅读取与测试执行、测试目录内零写入(未编写用例,因闸门关闭)、未修改/提交/推送任何生产或被审查代码;E2E 凭据经环境变量注入、口令未回显。
报告产物:d:/cfc/_test_closure_report_2026-11-05_1050.md