title, updated, status, tags
| title |
updated |
status |
tags |
| 测试与验证 |
2026-04-28 |
stable |
|
测试与验证
从 index 导航。关联: infrastructure database frontend erp-server erp-health
1. 设计决策
- 真实数据库优先 — 集成测试用真实 PostgreSQL,不用内存模拟
- 分层验证 — 编译检查 → 单元测试 → 功能验证 → 生产构建
- 环境配置统一由 infrastructure 管理 — 连接信息、启动命令、登录凭据见该页
2. 关键文件 + 验证清单
测试分布
| Crate |
单元测试 |
集成测试 |
总计 |
通过率 |
覆盖评估 |
| erp-core |
74 |
- |
74 |
100% |
良好(crypto/module/error/rbac/sanitize/types) |
| 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% |
良好(9 个因 blind_indexes 表失败) |
| erp-ai |
36 |
- |
36 |
100% |
中等(缺集成测试) |
| erp-dialysis |
10 |
15 |
25 |
93% |
中等(2 个失败待修复) |
| erp-plugin |
78 |
2 |
80 |
100% |
良好 |
| erp-server |
- |
153 |
153 |
94% |
良好(API 集成测试) |
| 后端总计 |
611 |
153 |
772 |
97.5% |
|
| 前端 (vitest) |
36 |
- |
- |
- |
Store/Hook/API 契约/组件测试 |
| E2E (playwright) |
- |
5 spec |
- |
- |
登录/用户管理/插件/租户隔离 |
| 小程序 |
0 |
0 |
0 |
N/A |
⚠️ 完全无测试 |
编译 + 测试
功能验证端点
| 端点 |
说明 |
http://localhost:3000/api/v1/health |
健康检查 |
http://localhost:3000/api/docs/openapi.json |
OpenAPI 文档 |
http://localhost:5174 |
前端页面 |
API 快速测试
前端性能基准(2026-04-18 Lighthouse)
Accessibility / SEO / Best Practices 均 100,LCP 840ms,CLS 0.02
微信小程序验证
验证点:登录成功 → 首页加载 → 各 Tab 页面可访问
3. 代码逻辑
健康模块全链路验证结果(2026-04-25)
| 链路 |
API |
前端 UI |
状态 |
| 医生 CRUD |
创建/搜索/编辑 |
医护管理页面 |
✅ |
| 排班管理 |
创建/列表/日历 |
排班管理页面 |
✅ |
| 预约管理 |
创建+状态流转 |
预约列表/新建弹窗 |
✅ |
| 随访管理 |
创建→进行→完成 |
随访列表/操作 |
✅ |
| 咨询管理 |
创建会话+消息 |
咨询列表/导出 |
✅ |
| 患者详情 |
详情/编辑/标签 |
详情页+健康数据标签 |
✅ |
erp-health validation.rs 测试覆盖
57 个纯函数测试覆盖:
- 患者信息验证(姓名、身份证、手机号、性别、血型)
- 预约验证(日期、时段、类型)
- 随访任务验证(计划日期、类型)
- 咨询会话验证
- 体征数据验证(血压范围、心率、体重、血糖)
- 文章验证
集成契约
⚡ 不变量: 功能验证需要后端服务运行中,编译检查必须先于测试通过
数据库常用查询
4. 活跃问题 + 陷阱
测试覆盖空白
| 领域 |
当前状态 |
优先级 |
| erp-ai 集成测试 |
0 测试(SSE 流 + 外部 API 无法回归) |
P0 |
| 小程序测试 |
0 测试(40 个页面全靠手工验证) |
P1 |
| erp-message 集成测试 |
0 测试(SSE 推送连接/重连未测试) |
P1 |
| Web 前端测试 |
仅 10 个(163 文件的 API/组件/路由无覆盖) |
P2 |
| erp-dialysis |
93% 通过率(2 个测试失败待修复) |
P2 |
| blind_indexes 迁移 |
9 个测试因表缺失失败(环境配置问题) |
P3 |
测试覆盖良好的领域
| 领域 |
测试特点 |
| 患者 CRUD |
完整集成测试覆盖创建/更新/删除/列表 |
| PII 加密 |
独立测试文件验证加密/解密/盲索引/跨租户隔离 |
| 预约并发 |
CAS 原子操作测试,验证乐观锁和排班满额 |
| 工作流引擎 |
BPMN 解析 + Token 驱动 + 任务分配测试 |
| 权限 RBAC |
角色/权限/菜单关联测试 |
| 插件系统 |
WASM 运行时 + 动态表 CRUD + 租户隔离 |
活跃问题
| 问题 |
级别 |
状态 |
| display_name 存储 XSS HTML |
P1 |
待修复 |
| antd vendor chunk 2.9MB (gzip ~400KB) |
P3 |
待优化 |
历史教训
- CRM 权限码与实体名不一致 → 403(详见 wasm-plugin 权限命名铁律)
AppError::Internal 无日志 → 500 静默(已加 tracing::error)
build_scope_sql 参数索引硬编码 → SQL 参数错位(已动态化)
- 已应用迁移文件被删除 → 启动失败(创建 stub 迁移修复)
⚠️ 首次 cargo run 需编译整个 workspace(含 wasmtime),后续增量快
⚠️ Redis 不可达时限流自动降级为 fail-open
5. 变更记录
| 日期 |
变更 |
| 2026-05-01 |
审计数据全面刷新:772 测试(611 单元 + 153 集成)/ 97.5% 通过率 / 9 个因 blind_indexes 失败 / 前端仅 10 个测试 / 小程序 0 测试 |
| 2026-04-25 |
全面更新:93 后端测试 + 3 前端测试、健康模块全链路验证结果、测试覆盖空白清单 |
| 2026-04-24 |
添加微信小程序验证步骤 |
| 2026-04-23 |
重构为 5 节结构,去除与 infrastructure.md 重复 |
| 2026-04-18 |
Lighthouse 审计 + 性能优化 |