# CFC(浠艾福 / XAF)测试覆盖审计 · 项目画像与覆盖矩阵 > 软件测试专家团 · 主理人 陆谨 > 生成时间:2026-11-01 > 状态:**阶段 3 闸门前**(画像 + 矩阵 + 方案已出,待用户确认范围与执行档) --- ## 一、历史审查记录 - **本次为 CFC 项目的首次审查**:记忆库 `sessions.jsonl` 会话摘要 0 条,无任何历史结论可复用。 - 命中 5 条 `tooling` 类历史教训(均为专家团工具自身已知坑,已验证),作为本次**额外检查项**: - `LES-001` 描述性文件名误判为测试资产 → 本次矩阵「已发现」必须给出命中具体路径。 - `LES-002` 短词 uat 子串误匹配 → 本次对 smoke/regression/compat/resilience/metrics/coverage 等短词做**定向核验**,已纠正 2 处误判(见矩阵)。 - `LES-005` 密钥正则误判 → 本报告不写入任何密钥/口令。 --- ## 二、项目画像 > ⚠️ 工具自动读取校正:`project_profiler` 误将根目录 `README.md`(描述 `web/` 下的 etotem.com.cn 静态站点)当作项目类型,给出 `project_name=zxyj`、类型「待确认」。该读取与 CFC 实际不符,下方画像以 `AGENTS.md`、`repo_scanner` 基线、`docs/tdd/test/inventory.md` 实测数据为准。 | 维度 | 内容 | |---|---| | 项目 | CFC(浠艾福 / XAF)· 家庭教育健康成长平台(多模块单仓) | | 业务定位 | 家庭健康/教育:五维能量(身/心/智/行/富)、双角色(家长/规划师)、测评订单、健康报告上传解析、AI 对话(LangGraph)、电商+分销 | | 技术栈 | **Java 主语言(2220 文件)**:Spring Boot 2.7.18 + MyBatis-Plus + Java 8,后端 9082;**Vue 2**:cfc-frontend 小程序(596)、cfc-web 管理端(342);**Python**:cfc-langgraph FastAPI+LangGraph+ChromaDB(9000,150 文件);**Rust**:cfc-desktop-pet Tauri(13);SQL 34 | | 测试技术 | Java:JUnit/TestNG + Mockito;JS:Jest;Python:pytest;E2E:Playwright | | 关键路径 | 用户/家庭/会员/支付/订单(电商+分销返佣)、健康报告上传解析(依赖 9000 LangGraph)、AI 对话(AiGateway 熔断+超时+Fallback)、权限(JwtInterceptor + 角色手动校验) | | 规模基线 | 源码 3374 文件 / 8939 总文件;测试代码量大但**无 CI**(ci_systems=[]) | | 测试现状(实测) | Java @Test 1379(182 文件)、Playwright 411、pytest 47、结构化用例 678、用户场景 8 = 合计约 2515;后端 357 Controller / 1933 handler,**已覆盖仅 10.3%**,admin 模块 103 个未覆盖为最大短板 | | 风险点 | ①无 CI,靠人工本地跑;②后端集成测试强依赖 MySQL/Redis,环境门槛高;③admin 关键管理接口覆盖率极低;④无安全/性能/契约/变异测试;⑤多模块同名类 Bean 命名冲突(AGENTS 已提示) | | 质量目标 | AGENTS.md 隐含:接口统一 `@PostMapping`、统一 `Result`、JWT 鉴权、`DatabaseInitializer` 为迁移唯一入口;**量化验收目标需与用户确认** | ### 数据质量说明(重要,避免误读) - `repo_scanner` 的 `test_file_count=641` **含虚高**:把 `docs/superpowers/specs/*.md` 设计文档(目录名 `specs` 被当作测试语境)计入,真实测试代码远少于此。 - 仓库含 `.wt-*` 副本/工作树目录,本画像与矩阵已**排除**其干扰。 - `project_profiler` 提示「文件索引达 20000 上限截断」——本仓仅 8939 文件,该截断提示可能源于其内部计数口径;矩阵中「未发现」一律按**待核实**口径处理(不据此判「项目没做」)。 --- ## 三、20 类测试覆盖矩阵(修正版) > 三态口径:`present`=已发现资产并给出路径;`未发现`=全仓定向扫描计数 0;`待核实`=扫描未能确认或需人工确认。 > 应用 `LES-001/002`:对短词匹配做了定向核验,纠正 `compat`/`metrics` 两处业务模型误判。 ### 功能层次(5 类) | # | 测试类型 | 三态 | 证据 / 说明 | |---|---|---|---| | 1 | 单元测试 | **present** | `cfc-backend/src/test/java/**/*Test.java`(TDD 盘点 182 文件 / 1379 @Test,含 unit/util/common 纯单测子集);`cfc-langgraph/tests/test_*.py`(12 pytest);`cfc-frontend/__tests__/*.js` + `cfc-web/src/__tests__/*.js`(Jest) | | 2 | 集成测试 | **present** | `cfc-backend/src/test/java/.../integration/**/*Test.java`(43 @SpringBootTest + 33 @DataJpaTest,**需 MySQL/Redis**);`cfc-langgraph` FastAPI 集成 | | 3 | 契约测试 | **未发现** | 全仓 pact/contract 依赖、`.pact` 文件、契约目录计数均为 0 | | 4 | 系统/端到端 | **present** | `tests/e2e/*.spec.js`(TDD 盘点 411 Playwright);`e2e_complete_test.py`;`docs/superpowers/specs` 中 e2e 重构设计 | | 5 | 验收 UAT | **present(文档级,非自动化)** | `tests/user-scenarios/*.md`(8 用户场景,TDD 盘点);`tests/E2E-TEST-SCENARIOS.md` | ### 功能保障(4 类) | # | 测试类型 | 三态 | 证据 / 说明 | |---|---|---|---| | 6 | 冒烟测试 | **present** | `tests/e2e/_smoke_browser.spec.js`;`tests/e2e/api/api-smoke.spec.js`;`tests/playwright.config.smoke.js`;`ops_interface_smoke.py` | | 7 | 回归测试 | **present(弱)** | `cfc-frontend/scripts/equiv-regression.js`(等价回归校验脚本);`tests/TEST-RESULTS-vN.md` 多版本 e2e 结果快照(回归跟踪);**无独立回归测试套件** | | 8 | 接口 API 测试 | **present** | `docs/tdd/test/discovery.md`(357 Controller / 1933 handler 覆盖盘点);`cfc-backend/.../integration/controller/*Test`;`cfc-frontend/__tests__/api`、`cfc-web/src/__tests__/api` | | 9 | 探索性测试 | **待核实** | 无资产留痕;手工探索性流程可能存在但未沉淀 | ### 非功能(6 类) | # | 测试类型 | 三态 | 证据 / 说明 | |---|---|---|---| | 10 | 性能测试 | **未发现** | k6/jmeter/locust/artillery/gatling/load_test 计数全 0;无压测资产 | | 11 | 安全测试 | **未发现(待核实)** | owasp/bandit/snyk/sonar/dependency-check/trivy/semgrep 计数 0;无 SAST/DAST/依赖漏洞扫描配置。安全相关代码(JwtInterceptor、角色校验)存在,但**无自动化安全测试** | | 12 | 兼容性测试 | **待核实** | 原 scan 命中 `compat` 实为业务模型(`BloodTypeCompatibilityVO`/`ZodiacCompatibilityVO`/`CompatibilityService`=生肖/血型配对),**非兼容性测试**;无浏览器/设备矩阵资产 | | 13 | 可用性测试 | **待核实** | 无资产 | | 14 | 无障碍测试 | **未发现** | a11y/axe/pa11y 计数 0 | | 15 | 可靠性测试 | **present** | `cfc-backend/.../service/HealthReportServiceBackfillResilienceTest.java`;`AiGatewayTimeoutTest.java`(故障注入/超时容错) | ### 度量与流程(5 类) | # | 测试类型 | 三态 | 证据 / 说明 | |---|---|---|---| | 16 | 测试覆盖率 | **present(仅 JS)** | `cfc-frontend/jest.config.js`、`cfc-web/jest.config.js`、`tests/jest.config.js`(Jest 覆盖率);**Java 侧 JaCoCo 未检出**;TDD 已手工测算 Controller 覆盖 10.3% | | 17 | 变异测试 | **未发现** | mutmut/pitest/stryker 计数 0 | | 18 | QA 流程 | **present** | `tests/AGENTS.md`、`tests/README.md`、`tests/BLACKBOX-TEST-PLAN.md`、`tests/E2E-TEST-GUIDE.md`、`tests/ISSUE-TRACKING.md`、`tests/defects/DEFECT-*.md` | | 19 | 质量指标 | **待核实** | 原 scan 命中 `metrics` 实为 Chromium 浏览器画像 `.pma` 文件,非质量指标资产;无独立质量度量测试 | | 20 | 代码审查与整洁度 | **待核实** | 根目录 `INTERFACE_CONTRACT_REVIEW.md`/`INTERFACE_TEST_REPORT.md`/`INTERFACE_FAIL_CLASSIFICATION.md`/`INTERFACE_TEST_BUSINESS_REPORT.md`(接口评审文档);**未检出 lint/静态分析配置**(ESLint/Sonar 等) | ### 矩阵小结 - **present:11**(其中 回归弱、UAT 文档级、覆盖率仅 JS,共 3 项需加注) - **未发现:6**(契约 / 性能 / 安全 / 无障碍 / 变异 / *质量指标误判后归未发现*) - **待核实:3**(探索性 / 兼容性 / 代码审查与整洁度) --- ## 四、测试方案(草案) ### 目标 对 CFC 全栈做「测试覆盖审计 + 全项目代码审查」,产出覆盖缺口清单、五要素问题清单与门禁结论。本环境(沙箱)以**只读分析 + 代码审查 + 测试设计与缺口诊断**为主;实际跑测依赖用户本地环境。 ### 范围与优先级 - **P0(可在此沙箱直接做只读审查)**:单元测试 / 集成测试 / 接口API / **全项目代码审查** - **P1(资产已存在,做覆盖评估与设计)**:系统·E2E / 冒烟 / 回归 / 可靠性 / QA流程 / 覆盖率 - **P2(无资产,做测试设计 + 缺口诊断)**:安全 / 性能 / 兼容性 / 可用性 / 无障碍 / 契约 / 变异 / 探索性 / 质量指标 ### 默认全覆盖 20 类;若用户收窄,被排除维度标「不适用(方案排除)」,不算缺失。 ### 执行档与降级 - **默认档位:review(离线白名单)**。 - 本沙箱实测:无 `mvn`、无 `pytest` 模块、Playwright 需浏览器+后端 9082 → **单元/集成/E2E/pytest 的实际运行将标记为「未实测」并降级为测试设计 + 缺口诊断**,绝不伪造成通过。 - **唯一能真做的只读项**:全项目代码审查(源码可直读)+ 静态证据分析。 - 联网命令(依赖漏洞扫描、压测)属 **execute 档**,需用户**单独显式授权**;本沙箱网络受限,即便授权也可能需落用户本地。 ### 排除项 - 不修改/删除/提交/推送被审查代码(全程只读)。 - 不安装依赖、不执行仓库内脚本、不跑白名单外命令。 - 不替代研发做重构或上线决策。 --- ## 五、执行档申请(待用户确认) | 项 | 申请 | |---|---| | 审查范围 | 默认全覆盖 20 类(可收窄) | | 执行档 | **review**(离线白名单);execute(联网)需另行授权 | | 本环境可实测 | 仅全项目代码审查(只读);其余测试运行项降级为设计+缺口诊断 | | 需用户本地 | Java 单测/集成、Python、Playwright 实际跑测(沿用 `docs/tdd/test/runbook.md`) | > **下一步(阶段 3 闸门)**:请用户确认「范围 + 执行档」后,主理人建立团队 `test-cfc`,按方案分四阶段调度八域专家,并最终产出缺口清单 / 五要素问题清单 / 门禁结论。确认前**不执行任何测试命令**。