97 lines
4.0 KiB
Markdown
97 lines
4.0 KiB
Markdown
# 测试方案
|
||
|
||
> 时间戳:2026-04-20-10-14-09
|
||
> 对应需求分析:`需求分析-2026-04-20-10-14-09.md`
|
||
> 对应实现方案:`实现方案-2026-04-20-10-14-09.md`
|
||
|
||
---
|
||
|
||
## 1. 测试环境
|
||
|
||
- 浏览器:Chrome / Edge(本地验证)
|
||
- Node 版本:v24.14.1
|
||
- 是否使用默认测试数据:是(通过 Login.tsx 种子数据)
|
||
- 环境变量配置(`.env.local` 或系统环境变量):
|
||
```
|
||
STORAGE_KEY="TestStorageKeyForDev2024!!!"
|
||
DEFAULT_API_KEY="sk-test-api-key-123456789"
|
||
ADMIN_AUTH_HASH="5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
|
||
ADMIN_AUTH_SALT="static-salt-001"
|
||
```
|
||
> 注:上述 HASH 是 `"password" + "static-salt-001"` 的 SHA-256,测试时输入 `password` 应可通过授权。
|
||
|
||
---
|
||
|
||
## 2. 功能测试用例
|
||
|
||
| 用例ID | 测试场景 | 操作步骤 | 预期结果 | 实际结果 | 是否通过 |
|
||
|--------|----------|----------|----------|----------|----------|
|
||
| TC-01 | AES-GCM 新数据加密写入 | 1. 登录后进入系统设置<br>2. 修改任意配置并保存 | localStorage 中 `systemSettings` 值以 `ag:` 开头 | | □ |
|
||
| TC-02 | AES-GCM 新数据解密读取 | 1. 刷新页面<br>2. 进入报告编辑器<br>3. 查看 AI 配置或抽帧配置 | 正确读取到之前保存的系统设置,无解密报错 | | □ |
|
||
| TC-03 | 旧 XOR 数据向后兼容 | 1. 先回退代码,用旧版写入一条 systemSettings<br>2. 切换回新代码刷新页面 | 旧 XOR 密文被正确识别、解密并静默迁移为 AES-GCM 格式 | | □ |
|
||
| TC-04 | 默认 API Key 来源 | 1. 打开浏览器控制台<br>2. 执行 `getDefaultApiKey()` | 返回值为 `.env` 中配置的 `DEFAULT_API_KEY`,非硬编码字符码数组还原值 | | □ |
|
||
| TC-05 | 管理员禁用授权正确 | 1. 超级管理员编辑任一管理员<br>2. 状态改为"禁用"<br>3. 授权码输入 `password` | 保存成功 | | □ |
|
||
| TC-06 | 管理员禁用授权错误 | 1. 同 TC-05 场景<br>2. 授权码输入 `wrong` | 表单顶部显示错误提示"授权密钥不正确",保存被阻止 | | □ |
|
||
| TC-07 | alert/confirm 已移除 | 1. 尝试删除用户<br>2. 触发各类表单校验错误 | 不再出现浏览器原生 alert/confirm,全部以内联提示或自定义确认层呈现 | | □ |
|
||
|
||
---
|
||
|
||
## 3. 边界测试
|
||
|
||
| 场景 | 测试内容 | 预期表现 |
|
||
|------|----------|----------|
|
||
| 空数据 | 首次访问(localStorage 无 systemSettings) | `storage.init()` 正常完成,缓存为 null,后续 get 返回 fallback |
|
||
| 大数据量 | systemSettings 包含大量模板和配置 | AES-GCM 加密后 Base64 长度可控,localStorage 5MB 限额不溢出 |
|
||
| 异常输入 | 用户输入空授权码提交 | 校验不通过,提示授权密钥不能为空(或错误) |
|
||
| 环境变量缺失 | 构建时未设置 `STORAGE_KEY` | 应用启动时 `storage.init()` 抛出可读错误,控制台可见 |
|
||
|
||
---
|
||
|
||
## 4. 回归测试范围
|
||
|
||
(验证已有功能未被破坏)
|
||
|
||
- [ ] 登录流程(admin / manager / doctor)
|
||
- [ ] 报告编辑器自动保存与草稿恢复
|
||
- [ ] 模板管理增删改查
|
||
- [ ] 系统设置页面配置保存与读取
|
||
- [ ] AI 功能调用(需配置有效 API Key 验证)
|
||
- [ ] 用户管理增删改查(非禁用场景)
|
||
|
||
---
|
||
|
||
## 5. 类型检查
|
||
|
||
```bash
|
||
npm run lint
|
||
```
|
||
|
||
- 预期结果:`tsc --noEmit` 无错误,无 TS2345 / TS2554 等类型不匹配
|
||
|
||
---
|
||
|
||
## 6. 构建验证
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
- 预期结果:构建成功,无报错,产物输出至 `dist/`
|
||
- 额外检查:构建产物中搜索 `"MedicalReportSys2024"`、`"DISABLE_ADMIN_2024"`、`API_KEY_CODES` 等敏感字符串,应无命中
|
||
|
||
---
|
||
|
||
## 7. 测试结论
|
||
|
||
| 项目 | 结果 |
|
||
|------|------|
|
||
| 功能测试 | □ 通过 / □ 部分通过 / □ 未通过 |
|
||
| 类型检查 | □ 通过 / □ 未通过 |
|
||
| 构建验证 | □ 通过 / □ 未通过 |
|
||
| 安全扫描(构建产物无硬编码密钥) | □ 通过 / □ 未通过 |
|
||
| 整体结论 | □ 可交付 / □ 需修复后复测 |
|
||
|
||
---
|
||
|
||
**状态**:✅ 用户已豁免人工审核确认
|