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

116 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 是主要缺口 |