232 lines
6.7 KiB
Markdown
232 lines
6.7 KiB
Markdown
|
|
# 高血压风险评估系统 - 2天测试指南
|
|||
|
|
|
|||
|
|
**测试周期:2天(Day 1组件测试 + Day 2联调测试)**
|
|||
|
|
**测试人员:成员A(云端负责人)+ 成员B(边缘端负责人)**
|
|||
|
|
**测试目标:验证云端/边缘端基本功能可用,完成最小端到端闭环**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 测试包内容
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
test_package/
|
|||
|
|
├── README_TEST.md ← 你正在看的文件(测试总指南)
|
|||
|
|
├── TestPlan-2Days.md ← 详细2天测试计划(按小时排)
|
|||
|
|
├── requirements.txt ← Python依赖清单
|
|||
|
|
│
|
|||
|
|
├── docs/ ← 测试文档模板
|
|||
|
|
│ ├── Test-Log-Template.md ← 测试记录模板(复制后填写)
|
|||
|
|
│ ├── Bug-Report-Template.md ← 缺陷报告模板
|
|||
|
|
│ └── Checklist-Cloud.md ← 云端测试检查表
|
|||
|
|
│ └── Checklist-Edge.md ← 边缘端测试检查表
|
|||
|
|
│
|
|||
|
|
├── scripts/ ← 测试脚本
|
|||
|
|
│ ├── check_health.py ← 快速健康检查
|
|||
|
|
│ ├── test_upload.py ← 上传测试(正常场景)
|
|||
|
|
│ ├── test_report.py ← 报告获取测试
|
|||
|
|
│ ├── test_negative.py ← 异常场景测试
|
|||
|
|
│ └── start_cloud_bg.py ← 后台启动云端(可选)
|
|||
|
|
│
|
|||
|
|
├── test_data/ ← 测试样例数据
|
|||
|
|
│ ├── sample_normal.json ← 正常上传样例
|
|||
|
|
│ ├── sample_missing_field.json ← 缺字段样例
|
|||
|
|
│ └── sample_wrong_type.json ← 错误类型样例
|
|||
|
|
│
|
|||
|
|
├── artifacts/ ← 测试结果输出目录(自动生成)
|
|||
|
|
│ ├── cloud/ ← 云端测试产物
|
|||
|
|
│ └── edge/ ← 边缘端测试产物
|
|||
|
|
│
|
|||
|
|
└── [代码文件]
|
|||
|
|
├── cloud_hypertension_system.py ← 云端主程序
|
|||
|
|
└── edge_hypertension_system.py ← 边缘端主程序
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚡ 5分钟快速启动(必读)
|
|||
|
|
|
|||
|
|
### 环境准备(两人都做)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 安装依赖
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
|
|||
|
|
# 2. 验证Python版本(需要3.8+)
|
|||
|
|
python --version
|
|||
|
|
|
|||
|
|
# 3. 快速测试:检查云端健康
|
|||
|
|
python scripts/check_health.py
|
|||
|
|
# 如果看到"❌ 无法连接"是正常的(此时云端还没启动)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 成员A:云端快速测试(5分钟)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 第1步:在PowerShell/终端1中启动云端
|
|||
|
|
python cloud_hypertension_system.py
|
|||
|
|
|
|||
|
|
# 看到这个就对了:
|
|||
|
|
# ✓ 数据库初始化成功
|
|||
|
|
# Running on http://127.0.0.1:5000
|
|||
|
|
|
|||
|
|
# 保持这个窗口运行!
|
|||
|
|
|
|||
|
|
# 第2步:打开新终端2,测试健康检查
|
|||
|
|
python scripts/check_health.py
|
|||
|
|
# 应该看到:✅ 服务器正在运行
|
|||
|
|
|
|||
|
|
# 第3步:测试上传
|
|||
|
|
python scripts/test_upload.py
|
|||
|
|
# 应该看到:✅ 上传成功!
|
|||
|
|
|
|||
|
|
# ✅ 如果以上3步都成功 → 云端基本可用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 成员B:边缘端快速测试(5分钟)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 第1步:直接运行边缘端(模拟模式)
|
|||
|
|
python edge_hypertension_system.py
|
|||
|
|
|
|||
|
|
# 应该看到每30秒输出:
|
|||
|
|
# 📊 实时状态更新
|
|||
|
|
# 心率: 72.3 bpm
|
|||
|
|
# 风险评分: 0.285 (LOW)
|
|||
|
|
|
|||
|
|
# 第2步:运行10分钟,观察:
|
|||
|
|
# - 有起夜事件(🚽)
|
|||
|
|
# - 有风险预警(⚠️,可能出现)
|
|||
|
|
# - 无崩溃、无异常
|
|||
|
|
|
|||
|
|
# ✅ 如果能稳定运行10分钟 → 边缘端基本可用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 关键配置说明
|
|||
|
|
|
|||
|
|
### 云端配置(cloud_hypertension_system.py)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 第23-28行:API配置
|
|||
|
|
'port': 5000, # 监听端口
|
|||
|
|
'api_keys': [ # 鉴权密钥(测试用)
|
|||
|
|
'edge_device_key_001',
|
|||
|
|
'edge_device_key_002'
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 第44行:数据库配置
|
|||
|
|
'type': 'sqlite', # 使用SQLite(测试用)
|
|||
|
|
'sqlite_path': './cloud_database.db'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 边缘端配置(edge_hypertension_system.py)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 第75-78行:云端上传配置
|
|||
|
|
'enable_upload': True, # 是否上传到云端
|
|||
|
|
'upload_url': 'http://127.0.0.1:5000/api/upload', # 云端地址
|
|||
|
|
'upload_interval': 300, # 上传间隔(秒)
|
|||
|
|
'api_key': 'edge_device_key_001'
|
|||
|
|
|
|||
|
|
# 第68-70行:设备ID
|
|||
|
|
'device_id': 'edge_rk3588_001' # 测试设备ID
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**⚠️ 重要:两人测试时使用不同的device_id!**
|
|||
|
|
- 成员A测试时用:`test_edge_device_001`
|
|||
|
|
- 成员B测试时用:`test_edge_device_002`
|
|||
|
|
- 联调时用:`edge_rk3588_001`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 测试执行流程(详细版见TestPlan-2Days.md)
|
|||
|
|
|
|||
|
|
### Day 1:组件测试(并行)
|
|||
|
|
|
|||
|
|
**上午(09:30-12:00)**
|
|||
|
|
- ✅ 成员A:云端冒烟(health、upload、report)
|
|||
|
|
- ✅ 成员B:边缘端本地运行稳定性
|
|||
|
|
|
|||
|
|
**下午(13:30-16:30)**
|
|||
|
|
- ✅ 成员A:云端异常场景(401、400、重复上传)
|
|||
|
|
- ✅ 成员B:边缘端上传容错(断网重连)
|
|||
|
|
- ✅ 交叉复核(各自在对方机器上复现)
|
|||
|
|
|
|||
|
|
### Day 2:联调测试(协同)
|
|||
|
|
|
|||
|
|
**上午(09:30-12:00)**
|
|||
|
|
- ✅ 端到端闭环:边缘端 → 上传 → 云端落库 → 报告生成
|
|||
|
|
|
|||
|
|
**下午(13:30-16:00)**
|
|||
|
|
- ✅ 失败注入测试
|
|||
|
|
- ✅ 整理交付物
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ 验收标准(必须通过)
|
|||
|
|
|
|||
|
|
| 项目 | 成员A | 成员B | 证据文件 |
|
|||
|
|
|------|------|------|---------|
|
|||
|
|
| 云端健康检查 | ✅ | - | artifacts/cloud/health.json |
|
|||
|
|
| upload→report闭环 | ✅ | - | artifacts/cloud/upload_response.json |
|
|||
|
|
| 错误码正确(401/400) | ✅ | - | artifacts/cloud/negative_tests.log |
|
|||
|
|
| 边缘端10分钟无崩溃 | - | ✅ | artifacts/edge/edge_10min.log |
|
|||
|
|
| 联调成功 | ✅ | ✅ | artifacts/end2end/combined.log |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 常见问题速查
|
|||
|
|
|
|||
|
|
### Q1: 云端启动后,测试脚本报"连接拒绝"?
|
|||
|
|
**A:** 检查云端是否真的在运行:
|
|||
|
|
```bash
|
|||
|
|
python scripts/check_health.py
|
|||
|
|
# 如果显示"❌ 无法连接" → 云端没启动或崩溃了
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q2: 测试脚本报"500错误"?
|
|||
|
|
**A:** 查看云端窗口的错误日志,通常是:
|
|||
|
|
- 时间戳格式错误(应该是数字,不是字符串)
|
|||
|
|
- 数据库锁定(关闭其他访问数据库的程序)
|
|||
|
|
|
|||
|
|
### Q3: 边缘端上传失败?
|
|||
|
|
**A:** 检查:
|
|||
|
|
1. 云端是否启动?(check_health.py)
|
|||
|
|
2. URL配置是否正确?(第77行)
|
|||
|
|
3. API Key是否匹配?(第78行)
|
|||
|
|
|
|||
|
|
### Q4: 端口5000被占用?
|
|||
|
|
**A:** 查找并杀死占用进程:
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
netstat -ano | findstr :5000
|
|||
|
|
taskkill /PID <PID> /F
|
|||
|
|
|
|||
|
|
# 或者修改云端端口为5001
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 支持与反馈
|
|||
|
|
|
|||
|
|
- **技术问题**:立即在测试记录中标注,并截图+日志
|
|||
|
|
- **阻塞问题**:第一时间同步给项目负责人
|
|||
|
|
- **测试进度**:每天下班前提交当天Test-Log.md
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎉 测试完成后交付
|
|||
|
|
|
|||
|
|
**必须提交(2个人一起):**
|
|||
|
|
1. `Test-Log.md`(按模板填写,带时间线)
|
|||
|
|
2. `Bug-List.xlsx`(所有缺陷,P0/P1/P2分级)
|
|||
|
|
3. `artifacts/`目录(所有日志、截图、数据库文件)
|
|||
|
|
4. `2-day-summary.md`(一页纸结论)
|
|||
|
|
|
|||
|
|
**提交方式:**
|
|||
|
|
- 打包成 `test-results-YYYYMMDD.zip`
|
|||
|
|
- 发送给项目负责人
|
|||
|
|
|
|||
|
|
---
|