Files
hms/docs/audits/07-test-coverage.md
iven d712ad78c3 docs: 审计报告(8 份) + 讨论记录(4 份)
审计报告: 基线快照/功能清单/后端完整性/事件系统/参数配置/
差距模式/错误处理/测试覆盖/审计总结报告
讨论记录: 设备管线/端到端测试/三端审计/工作台重构
2026-05-03 19:32:15 +08:00

4.2 KiB
Raw Blame History

HMS 功能审计 — Phase 7: 测试覆盖率审计

日期: 2026-04-30 | 审计范围: 后端 + 前端测试分布与缺口

总览

指标
测试总数 772 个函数
通过 75397.5%
失败 9全部因 blind_indexes 表缺失)
跳过 0
后端测试 767611 单元 + 153 集成 + 3 多模块集成)
Web 前端测试 5 单元vitest+ 5 E2Eplaywright
小程序测试 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 是主要缺口