**根目录清理:** - 删除 CLAUDE-1.md(ZCLAW 旧项目配置,HMS 已完全脱离) - 移动 DESIGN.md → docs/archive/(ERP 旧设计系统) - 删除 plans/ 98 个临时会话计划文件 **归档重组:** - V1 审计(12 文件)→ docs/archive/audits-v1/ - 早期 CRM/插件迭代设计(13 文件)→ docs/archive/superpowers-early/ - 已完成/已取代设计(28 文件)→ docs/archive/superpowers-completed/ - 早期讨论/测试报告 → docs/archive/discussions-early/ + test-reports-early/ - QA 重复文件清理(3 个旧版 result 文件) **wiki 数据校正:** - 迁移数 137→145,源文件 599→649,提交数 720→800+ - 小程序文件 124→163,Web 前端 297→332 - 后端测试 999→943(实际统计),权限码 75+→128 - 文档索引新增归档目录说明 **CLAUDE.md 规则优化:** - §2.5 闭环工作法:提交+文档+推送三合一 + wiki 更新触发条件 - §2.6 Feature DoD:新增文档一致性检查项 - §6 反模式:新增 wiki 更新滞后/推送不及时警告
116 lines
4.2 KiB
Markdown
116 lines
4.2 KiB
Markdown
# 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 是主要缺口 |
|