# 高血压风险评估系统 - 2天详细测试计划 **版本:** v1.0 **日期:** 2026-01-12 **测试人员:** 成员A(云端)、成员B(边缘端) --- ## 📅 Day 1:组件测试日(并行执行) ### 09:30 - 10:00 | 启动会(两人一起) **地点:** 会议室或线上会议 **参与:** 成员A、成员B、项目负责人 **议程:** 1. 明确测试范围(功能冒烟,不做性能与安全) 2. 对齐device_id规则: - 成员A用:`test_edge_device_001` - 成员B用:`test_edge_device_002` - 联调用:`edge_rk3588_001` 3. 确认日志输出目录:`artifacts/cloud/` 和 `artifacts/edge/` 4. 同步沟通方式(钉钉/微信群即时响应) **产出:** 两人都清楚自己的任务清单 --- ### 10:00 - 12:00 | 上午:组件冒烟(并行) #### 成员A:云端基础功能验证 **任务清单:** ✅ **Task 1.1:服务启动验证(15分钟)** ```bash # 1. 启动云端 python cloud_hypertension_system.py # 2. 检查输出 # 预期: # ✓ 数据库初始化成功 # Running on http://127.0.0.1:5000 ``` **记录:** 截图启动日志,保存为 `artifacts/cloud/startup.png` --- ✅ **Task 1.2:健康检查API(10分钟)** ```bash # 在新终端运行 python scripts/check_health.py ``` **验收标准:** - 返回状态码200 - 响应包含:`"status": "healthy"` **记录:** 保存响应到 `artifacts/cloud/health.json` --- ✅ **Task 1.3:正常上传测试(30分钟)** ```bash python scripts/test_upload.py ``` **验收标准:** - 返回状态码200 - 响应包含:`"status": "success"` - 云端控制台显示:`☁️ [API] 接收上传: 设备=test_edge_device_001` **检查数据库:** ```bash # 查看数据库是否有数据 sqlite3 cloud_database.db "SELECT COUNT(*) FROM sensor_data;" # 应该返回:3(上传了3条事件) ``` **记录:** - 保存响应到 `artifacts/cloud/upload_response.json` - 保存云端日志到 `artifacts/cloud/upload.log` --- ✅ **Task 1.4:报告生成测试(30分钟)** ```bash python scripts/test_report.py ``` **验收标准:** - 返回状态码200 - 生成报告文件:`./reports/report_test_edge_device_001_*.json` - 报告包含基本统计(虽然数据很少) **记录:** - 复制生成的报告到 `artifacts/cloud/report_sample.json` --- ✅ **Task 1.5:数据库检查(15分钟)** ```bash # 检查各表记录数 sqlite3 cloud_database.db < artifacts/edge/edge_45min.log 2>&1 # 让它运行45分钟,观察输出 ``` **验收标准(每30秒检查一次):** - ✅ 心率输出在合理范围(50-100 bpm) - ✅ 风险评分有数值(0-1之间) - ✅ 无Python异常/崩溃 - ✅ 至少看到1次起夜事件(🚽) **记录:** - 截图正常输出(3-5张) - 截图起夜事件 - 保存完整日志:`artifacts/edge/edge_45min.log` --- ✅ **Task 1.2:输出格式验证(15分钟)** **检查输出是否包含:** - 时间戳 - 生理指标(心率、RMSSD、SDNN) - 风险评分与等级 - 系统性能(处理延迟) **记录:** 在 `Test-Log.md` 中记录样例输出 --- ### 12:00 - 13:30 | 午休 --- ### 13:30 - 15:30 | 下午:深入测试(并行) #### 成员A:云端异常场景与健壮性 ✅ **Task 2.1:异常场景测试(60分钟)** ```bash python scripts/test_negative.py ``` **测试场景:** 1. **401 Unauthorized(错误API Key)** - 修改脚本中的API Key为错误值 - 预期:返回401,错误信息清晰 2. **400 Bad Request(缺少字段)** - 使用 `test_data/sample_missing_field.json` - 预期:返回400,指出缺少哪个字段 3. **400 Bad Request(类型错误)** - 使用 `test_data/sample_wrong_type.json` - 预期:返回400,指出类型不匹配 **记录:** 每个场景保存: - 请求内容 - 响应状态码 - 错误信息 - 云端日志 保存到:`artifacts/cloud/negative_tests.md` --- ✅ **Task 2.2:重复上传测试(30分钟)** **目标:** 验证重复上传的行为 ```python # 连续上传同一份数据3次 for i in range(3): response = requests.post(...) print(f"第{i+1}次上传:{response.status_code}") ``` **检查数据库:** ```bash sqlite3 cloud_database.db "SELECT COUNT(*) FROM sensor_data WHERE device_id='test_edge_device_001';" # 记录数量是3、9还是其他? ``` **记录:** - 重复上传行为(是幂等/累加/拒绝?) - 如果不符合预期,记录为Bug --- #### 成员B:边缘端容错与上传 ✅ **Task 2.1:上传功能测试(60分钟)** **前提:** 确保云端正在运行(与成员A协调) **步骤:** 1. **修改边缘端配置,启用上传:** ```python # edge_hypertension_system.py 第75行 'enable_upload': True, 'upload_url': 'http://127.0.0.1:5000/api/upload', ``` 2. **运行边缘端,观察上传:** ```bash python edge_hypertension_system.py ``` 3. **每5分钟应该看到:** ``` ☁️ [Cloud Upload] Uploaded 24 events to cloud ✅ 上传成功! ``` **验收标准:** - 至少成功上传2次(10分钟内) - 云端控制台显示接收日志 **记录:** - 边缘端上传日志 - 云端接收日志(找成员A要) --- ✅ **Task 2.2:上传失败与重试(30分钟)** **模拟场景1:云端不可达** 1. **停止云端服务**(找成员A协调) 2. 观察边缘端输出: ``` ☁️ [Cloud Upload] Failed: Connection refused ``` 3. 边缘端应该继续本地处理(不崩溃) **模拟场景2:云端恢复** 1. **重新启动云端** 2. 观察边缘端下次上传是否成功 **记录:** - 失败日志:`artifacts/edge/upload_fail.log` - 恢复日志:`artifacts/edge/upload_recover.log` --- ### 15:30 - 16:30 | 交叉复核 **目标:** 避免"只在我电脑上能跑"的问题 **步骤:** 1. **成员A 在自己电脑上复现 成员B的操作:** - 运行边缘端10分钟 - 检查输出是否正常 2. **成员B 在自己电脑上复现 成员A的操作:** - 启动云端 - 运行 `test_upload.py` - 检查是否成功 **记录:** - 如果复现失败,记录差异(系统版本、Python版本、依赖版本) --- ### 16:30 - 17:00 | Day 1总结 **两人一起填写:** - Day 1完成情况(哪些通过,哪些失败) - 发现的问题清单 - Day 2重点关注点 --- ## 📅 Day 2:联调测试日(协同执行) ### 09:30 - 11:00 | 端到端闭环测试 **目标:** 验证完整链路:边缘端 → 云端 → 报告 **前提:** - 两人在同一网络 - 或者都连接到云端服务器 **步骤:** ✅ **Step 1:启动云端(成员A)** ```bash python cloud_hypertension_system.py ``` ✅ **Step 2:配置边缘端(成员B)** ```python # 修改 device_id 为联调专用 'device_id': 'edge_rk3588_001', 'upload_url': 'http://127.0.0.1:5000/api/upload', # 或成员A的IP ``` ✅ **Step 3:启动边缘端(成员B)** ```bash python edge_hypertension_system.py ``` ✅ **Step 4:等待15分钟** - 边缘端应该上传3次(每5分钟一次) - 云端应该接收到数据 ✅ **Step 5:生成报告(成员A)** ```bash python scripts/test_report.py # 或直接访问API: # GET http://127.0.0.1:5000/api/report/edge_rk3588_001 ``` ✅ **Step 6:验证结果** - 报告包含15分钟的数据 - 数据量约:72条记录(15分钟 × 2次/分钟 × 240秒) **记录:** - 边缘端日志:`artifacts/end2end/edge.log` - 云端日志:`artifacts/end2end/cloud.log` - 生成的报告:`artifacts/end2end/report.json` - 数据库文件:`artifacts/end2end/cloud_database.db` --- ### 11:00 - 12:00 | 失败注入测试 **目标:** 验证系统容错与错误提示 ✅ **Scenario 1:错误API Key(10分钟)** - 修改边缘端API Key为错误值 - 预期:边缘端显示"401 Unauthorized" - 预期:边缘端继续本地处理 ✅ **Scenario 2:云端不可达(15分钟)** - 停止云端 - 预期:边缘端显示连接失败,但不崩溃 - 重启云端 - 预期:边缘端恢复上传 ✅ **Scenario 3:数据格式错误(15分钟)** - 手动修改上传数据,制造格式错误 - 预期:云端返回400错误,指出问题 - 预期:边缘端记录错误但不崩溃 **记录:** 每个场景的日志和截图 --- ### 12:00 - 13:30 | 午休 --- ### 13:30 - 15:00 | 整理交付物 **任务分工:** **成员A:整理云端产物** - [ ] 收集所有日志文件到 `artifacts/cloud/` - [ ] 导出数据库文件 - [ ] 整理API测试结果 - [ ] 填写 `Checklist-Cloud.md` **成员B:整理边缘端产物** - [ ] 收集所有日志文件到 `artifacts/edge/` - [ ] 整理运行截图 - [ ] 填写 `Checklist-Edge.md` **两人一起:** - [ ] 填写 `Test-Log.md`(完整时间线) - [ ] 填写 `Bug-List.xlsx`(所有缺陷) - [ ] 撰写 `2-day-summary.md` --- ### 15:00 - 16:00 | 测试总结会 **参与:** 成员A、成员B、项目负责人 **议程(只回答3个问题):** 1. **现在能否演示闭环?** - 能 / 不能 - 如果不能,差哪一步? 2. **最大阻塞是什么?** - 列出Top 3问题 - 每个问题的建议解决方案 3. **下一步(传感器接入)最先要修哪3个点?** - P0级问题优先 - 给出修复优先级 **产出:** - 明确下一步行动计划 - 分配Bug修复责任人 --- ## 📦 最终交付清单 **必须提交(打包成test-results-YYYYMMDD.zip):** ``` test-results-20260114/ ├── Test-Log.md ← 完整测试记录 ├── Bug-List.xlsx ← 缺陷清单(P0/P1/P2分级) ├── 2-day-summary.md ← 一页纸总结 ├── Checklist-Cloud.md ← 云端检查表(已勾选) ├── Checklist-Edge.md ← 边缘端检查表(已勾选) │ └── artifacts/ ← 所有测试产物 ├── cloud/ │ ├── startup.png │ ├── health.json │ ├── upload_response.json │ ├── report_sample.json │ ├── negative_tests.md │ ├── cloud_database.db ← 数据库快照 │ └── *.log ← 所有日志 │ ├── edge/ │ ├── edge_45min.log │ ├── upload_fail.log │ ├── screenshots/ ← 截图目录 │ └── *.log │ └── end2end/ ├── edge.log ├── cloud.log ├── report.json └── cloud_database.db ``` --- ## 🎯 验收标准(项目负责人用) | 编号 | 测试项 | 责任人 | 必须通过 | 证据文件 | |-----|--------|--------|---------|---------| | C1 | 云端服务启动 | A | ✅ | artifacts/cloud/startup.png | | C2 | 健康检查API | A | ✅ | artifacts/cloud/health.json | | C3 | upload→report闭环 | A | ✅ | artifacts/cloud/upload_response.json + report_sample.json | | C4 | 错误码正确(401/400) | A | ✅ | artifacts/cloud/negative_tests.md | | C5 | 数据库落库正确 | A | ✅ | artifacts/cloud/db_check.txt | | E1 | 边缘端45分钟无崩溃 | B | ✅ | artifacts/edge/edge_45min.log | | E2 | 心率/风险评分正常 | B | ✅ | artifacts/edge/screenshots/ | | E3 | 上传成功 | B | ✅ | artifacts/edge/*.log | | E4 | 上传失败容错 | B | Nice | artifacts/edge/upload_fail.log | | I1 | 端到端闭环成功 | A+B | ✅ | artifacts/end2end/* | | I2 | 失败注入测试 | A+B | Nice | artifacts/end2end/failure_*.log | **Must(必须通过):** C1-C5, E1-E3, I1 **Nice(加分项):** E4, I2 --- **测试愉快!有问题随时沟通。** 🚀