# HMS 功能审计 — Phase 7: 测试覆盖率审计 > 日期: 2026-04-30 | 审计范围: 后端 + 前端测试分布与缺口 ## 总览 | 指标 | 值 | |------|-----| | 测试总数 | 772 个函数 | | 通过 | 753(97.5%) | | 失败 | 9(全部因 blind_indexes 表缺失) | | 跳过 | 0 | | 后端测试 | 767(611 单元 + 153 集成 + 3 多模块集成) | | Web 前端测试 | 5 单元(vitest)+ 5 E2E(playwright) | | 小程序测试 | 0 | --- ## 1. 模块测试分布 ### 1.1 后端 Rust 测试 | Crate | 单元测试 | 集成测试 | 总计 | 通过率 | 评估 | |-------|---------|---------|------|--------|------| | erp-core | 74 | — | 74 | 100% | 良好 | | erp-auth | 41 | 3 | 44 | 100% | 良好 | | erp-config | 78 | — | 78 | 100% | 良好 | | erp-workflow | 63 | 4 | 67 | 100% | 良好 | | erp-message | 72 | — | 72 | 100% | 中等(缺集成测试) | | erp-health | 159 | 144 | 303 | 97% | 良好 | | erp-ai | 36 | — | 36 | 100% | 中等(缺集成测试) | | erp-dialysis | 10 | 15 | 25 | 93% | 中等 | | erp-plugin | 78 | 2 | 80 | 100% | 良好 | | erp-server | — | 153 | 153 | 94% | 良好(API 集成测试) | | **合计** | **611** | **153** | **767** | **97.5%** | | ### 1.2 前端测试 | 层级 | 框架 | 数量 | 评估 | |------|------|------|------| | Web 单元测试 | vitest | 5 | **极低** | | Web E2E 测试 | playwright | 5 spec | **低** | | 小程序测试 | — | 0 | **无** | ### 1.3 测试 vs 代码规模比 | 维度 | 代码量 | 测试数 | 比率 | |------|--------|--------|------| | Rust 后端 | ~77k 行 | 767 | 1:100 | | Web 前端 | ~20k 行(163 文件) | 10 | 1:2000 | | 小程序 | ~15k 行(125 文件) | 0 | N/A | --- ## 2. 失败测试根因 9 个失败测试全部集中在 erp-health,原因一致: | 测试文件 | 失败数 | 根因 | |---------|--------|------| | health_patient_tests.rs | 2 | `blind_indexes` 表不存在 | | health_dialysis_tests.rs | 1 | 同上 | | health_pii_encryption_tests.rs | 6 | 同上 | **修复方案**:执行数据库迁移创建 `blind_indexes` 表。这是测试环境配置问题,非代码逻辑错误。 --- ## 3. 测试缺口分析 ### 3.1 关键缺口(按风险排序) | 优先级 | 模块 | 缺口 | 影响 | |--------|------|------|------| | **P0** | erp-ai | 无集成测试(SSE 流 + 外部 API) | AI 功能仅通过手动测试验证,无法回归 | | **P1** | 小程序 | 完全无测试 | 40 个页面全靠手工验证 | | **P1** | erp-message | 无集成测试(SSE 推送) | SSE 连接/重连行为未测试 | | **P2** | Web 前端 | 仅 10 个测试 | 163 个文件的 API 调用/组件/路由无覆盖 | | **P2** | erp-dialysis | 93% 通过率 | 2 个测试失败待修复 | | **P3** | erp-config | 无集成测试 | 简单 CRUD,风险较低 | ### 3.2 测试类型覆盖矩阵 | 测试类型 | 后端 | Web 前端 | 小程序 | |---------|------|---------|--------| | 单元测试 | ✓ 丰富 | ⚠️ 极少 | ✗ 无 | | 集成测试 | ✓ health+plugin+server | ✗ 无 | ✗ 无 | | E2E 测试 | — | ⚠️ 5 spec | ✗ 无 | | 多租户隔离 | ✓ PII 加密测试 | ✗ 无 | ✗ 无 | | 并发测试 | ✓ 预约 CAS 测试 | ✗ 无 | ✗ 无 | | 安全测试 | ⚠️ 部分(权限/注入) | ✗ 无 | ✗ 无 | ### 3.3 测试覆盖良好的领域 | 领域 | 测试特点 | |------|---------| | 患者 CRUD | 完整的集成测试覆盖创建/更新/删除/列表 | | PII 加密 | 独立测试文件验证加密/解密/盲索引/跨租户隔离 | | 预约并发 | CAS 原子操作测试,验证乐观锁和排班满额 | | 工作流引擎 | BPMN 解析 + Token 驱动 + 任务分配测试 | | 权限 RBAC | 角色/权限/菜单关联测试 | | 插件系统 | WASM 运行时 + 动态表 CRUD + 租户隔离 | --- ## 4. 测试覆盖率评分 | 检查项 | 评分 | 说明 | |--------|------|------| | 后端单元测试 | 85% | 611 个,覆盖核心 service 逻辑 | | 后端集成测试 | 70% | 153 个 API 测试,但 AI/Message 模块缺失 | | 前端测试 | 5% | 仅 10 个测试覆盖 163 个文件 | | 小程序测试 | 0% | 完全空白 | | 测试稳定性 | 98% | 9 个失败因环境配置,非代码缺陷 | | **综合评分** | **65%** | 后端测试基础扎实,前端和 AI 是主要缺口 |