diff --git a/test-plan/README.md b/test-plan/README.md new file mode 100644 index 0000000..a3bd7b4 --- /dev/null +++ b/test-plan/README.md @@ -0,0 +1,58 @@ +# AI-Box Demo 测试目录 + +## 测试文档结构 + +``` +test-plan/ +├── README.md # 测试目录说明 +├── TEST_STRATEGY.md # 测试策略文档 +├── TC_POWER_MGMT.md # 电源管理测试用例 +├── TC_MCU_SOC.md # MCU-SoC通信测试用例 +├── TC_SENSORS.md # 传感器数据测试用例 +├── TC_AUDIO_VIDEO.md # 音视频功能测试用例 +├── TC_SYSTEM_INTEGRATION.md # 系统集成测试用例 +└── automation/ # 自动化测试 + ├── test_framework.py # 测试框架 + ├── scripts/ # 测试脚本 + └── reports/ # 测试报告 +``` + +## 测试用例汇总 + +| 模块 | P0用例 | P1用例 | P2用例 | 总计 | +|------|--------|--------|--------|------| +| 电源管理 | 4 | 3 | - | 7 | +| MCU-SoC通信 | 4 | 4 | 1 | 9 | +| 传感器数据 | 2 | 5 | 1 | 8 | +| 音视频功能 | 4 | 6 | - | 10 | +| 系统集成 | 5 | 6 | - | 11 | +| **总计** | **19** | **24** | **2** | **45** | + +## 运行测试 + +### 手动测试 +按照各模块TC_*.md文档执行测试用例 + +### 自动化测试 +```bash +# 安装依赖 +pip install pytest pytest-html + +# 运行全部测试 +python -m pytest automation/test_framework.py -v + +# 运行冒烟测试 +python -m pytest automation/test_framework.py -v -m smoke + +# 生成HTML报告 +python -m pytest automation/test_framework.py -v --html=automation/reports/report.html +``` + +## 测试报告 + +测试报告生成路径: `automation/reports/` + +--- + +*测试工程师: 沙千里* +*最后更新: 2026-03-05* \ No newline at end of file diff --git a/test-plan/TC_AUDIO_VIDEO.md b/test-plan/TC_AUDIO_VIDEO.md new file mode 100644 index 0000000..faf596b --- /dev/null +++ b/test-plan/TC_AUDIO_VIDEO.md @@ -0,0 +1,127 @@ +# 音视频功能测试用例 + +**模块**: 音视频 | **优先级**: P1 | **编写**: 沙千里 + +--- + +## TC-AV-001: 视频采集功能测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-001 | +| **测试项** | 摄像头视频采集 | +| **前置条件** | 摄像头连接正常 | +| **测试步骤** | 1. 启动视频采集
2. 观察预览画面
3. 验证分辨率/帧率 | +| **预期结果** | 画面清晰,符合规格(分辨率/帧率) | +| **优先级** | P0 | + +--- + +## TC-AV-002: 视频录制功能测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-002 | +| **测试项** | 视频录制与存储 | +| **前置条件** | 存储设备就绪 | +| **测试步骤** | 1. 开始录制视频
2. 运行一段时间后停止
3. 验证文件完整性 | +| **预期结果** | 视频文件可正常播放,无花屏/卡顿 | +| **优先级** | P0 | + +--- + +## TC-AV-003: 视频直播功能测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-003 | +| **测试项** | 视频流推送/直播 | +| **前置条件** | 网络连接正常,直播服务器就绪 | +| **测试步骤** | 1. 启动视频直播
2. 在另一端接收视频流
3. 验证延迟和流畅度 | +| **预期结果** | 延迟<3s,画面流畅 | +| **优先级** | P1 | + +--- + +## TC-AV-004: 音频采集功能测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-004 | +| **测试项** | 麦克风音频采集 | +| **前置条件** | 麦克风连接正常 | +| **测试步骤** | 1. 启动音频采集
2. 播放测试声音
3. 验证采集质量 | +| **预期结果** | 音频清晰,无明显噪音/失真 | +| **优先级** | P0 | + +--- + +## TC-AV-005: 音频播放功能测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-005 | +| **测试项** | 扬声器/耳机音频播放 | +| **前置条件** | 音频输出设备连接正常 | +| **测试步骤** | 1. 播放标准测试音频
2. 验证输出质量 | +| **预期结果** | 音频清晰,音量适中 | +| **优先级** | P0 | + +--- + +## TC-AV-006: 音视频同步测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-006 | +| **测试项** | 音视频同步性 | +| **前置条件** | 音视频同时工作 | +| **测试步骤** | 1. 录制包含声音的视频
2. 播放并检查音画同步 | +| **预期结果** | 音视频同步误差<100ms | +| **优先级** | P1 | + +--- + +## TC-AV-007: 视频编码效率测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-007 | +| **测试项** | 视频编码质量与码率 | +| **前置条件** | 编码参数可配置 | +| **测试步骤** | 1. 设置不同编码参数
2. 分析编码后视频质量 | +| **预期结果** | 码率与质量符合预期 | +| **优先级** | P1 | + +--- + +## TC-AV-008: 弱光环境视频测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-008 | +| **测试项** | 低光照环境视频质量 | +| **前置条件** | 可控制光照条件 | +| **测试步骤** | 1. 降低环境光照
2. 观察视频质量 | +| **预期结果** | 仍能看清画面,符合低光规格 | +| **优先级** | P1 | + +--- + +## TC-AV-009: 音视频设备热插拔测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-009 | +| **测试项** | USB音视频设备热插拔 | +| **前置条件** | USB摄像头/麦克风准备就绪 | +| **测试步骤** | 1. 系统运行时插拔设备
2. 验证检测和恢复 | +| **预期结果** | 能正确识别设备插拔并恢复工作 | +| **优先级** | P1 | + +--- + +## TC-AV-010: 长时间录制测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-AV-010 | +| **测试项** | 长时间视频录制稳定性 | +| **前置条件** | 存储空间充足 | +| **测试步骤** | 1. 开始连续录制
2. 运行4小时以上
3. 检查文件完整性 | +| **预期结果** | 无内存泄漏,文件完整 | +| **优先级** | P1 | + +--- + +*持续更新中...* \ No newline at end of file diff --git a/test-plan/TC_MCU_SOC.md b/test-plan/TC_MCU_SOC.md new file mode 100644 index 0000000..72bccc5 --- /dev/null +++ b/test-plan/TC_MCU_SOC.md @@ -0,0 +1,115 @@ +# MCU-SoC通信可靠性测试用例 + +**模块**: MCU-SoC通信 | **优先级**: P0 | **编写**: 沙千里 + +--- + +## TC-MCU-001: 通信链路建立测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-001 | +| **测试项** | MCU-SoC通信链路建立 | +| **前置条件** | MCU和SoC均上电完成 | +| **测试步骤** | 1. 等待系统启动完成
2. 验证通信链路状态
3. 记录首次通信成功时间 | +| **预期结果** | 通信链路在SoC启动后30s内建立成功 | +| **优先级** | P0 | + +--- + +## TC-MCU-002: 心跳机制验证 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-002 | +| **测试项** | 心跳检测机制 | +| **前置条件** | 通信链路正常 | +| **测试步骤** | 1. 监控心跳报文
2. 模拟心跳停止
3. 验证超时检测和恢复机制 | +| **预期结果** | 心跳超时3s内检测到异常并触发恢复 | +| **优先级** | P0 | + +--- + +## TC-MCU-003: 数据传输完整性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-003 | +| **测试项** | 指令/数据收发完整性 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 发送1000条测试指令
2. 验证响应正确性
3. 统计错误率 | +| **预期结果** | 错误率 < 0.1% | +| **优先级** | P0 | + +--- + +## TC-MCU-004: 大数据量传输测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-004 | +| **测试项** | 大数据块传输 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 传输1MB以上数据
2. 验证数据完整性(Checksum) | +| **预期结果** | 数据完整,无丢失/损坏 | +| **优先级** | P1 | + +--- + +## TC-MCU-005: 通信中断与恢复测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-005 | +| **测试项** | 通信异常自动恢复 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 模拟通信中断(物理断开/软件挂起)
2. 观察系统响应
3. 验证自动重连 | +| **预期结果** | 通信恢复后系统自动恢复正常工作 | +| **优先级** | P0 | + +--- + +## TC-MCU-006: 并发指令处理测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-006 | +| **测试项** | 多指令并发处理 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 同时发送5条以上不同指令
2. 验证都能正确响应
3. 检查响应顺序 | +| **预期结果** | 所有指令按序正确响应,无死锁/乱序 | +| **优先级** | P1 | + +--- + +## TC-MCU-007: 通信超时处理测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-007 | +| **测试项** | 指令响应超时处理 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 发送需要长时间处理的指令
2. 验证超时检测
3. 验证超时后的处理逻辑 | +| **预期结果** | 超时后返回正确错误码,不阻塞系统 | +| **优先级** | P1 | + +--- + +## TC-MCU-008: 通信接口压力测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-008 | +| **测试项** | 高频通信压力测试 | +| **前置条件** | 通信正常 | +| **测试步骤** | 1. 以10ms间隔连续发送指令
2. 运行1小时
3. 统计错误率和系统响应 | +| **预期结果** | 错误率 < 0.5%,系统无异常 | +| **优先级** | P1 | + +--- + +## TC-MCU-009: 协议兼容性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-MCU-009 | +| **测试项** | 通信协议版本兼容 | +| **前置条件** | 多版本固件 | +| **测试步骤** | 1. 测试不同MCU与SoC固件版本组合
2. 验证兼容性 | +| **预期结果** | 主流版本组合兼容 | +| **优先级** | P2 | + +--- + +*持续更新中...* \ No newline at end of file diff --git a/test-plan/TC_POWER_MGMT.md b/test-plan/TC_POWER_MGMT.md new file mode 100644 index 0000000..d32648f --- /dev/null +++ b/test-plan/TC_POWER_MGMT.md @@ -0,0 +1,91 @@ +# 电源管理模式切换测试用例 + +**模块**: 电源管理 | **优先级**: P0 | **编写**: 沙千里 + +--- + +## TC-PM-001: 上电时序测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-001 | +| **测试项** | 上电时序验证 | +| **前置条件** | 设备断电,12V/24V电源准备就绪 | +| **测试步骤** | 1. 连接12V电源
2. 观察MCU上电初始化
3. 观察SoC启动过程
4. 记录各阶段时间 | +| **预期结果** | MCU在500ms内响应,SoC在5s内启动完成 | +| **优先级** | P0 | + +--- + +## TC-PM-002: 正常下电流程测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-002 | +| **测试项** | 正常下电流程 | +| **前置条件** | 系统正常运行 | +| **测试步骤** | 1. 触发系统关机
2. 观察SoC正常关机
3. 观察MCU进入低功耗
4. 验证存储数据完整性 | +| **预期结果** | SoC正常关机后MCU进入低功耗,无数据丢失 | +| **优先级** | P0 | + +--- + +## TC-PM-003: 异常断电测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-003 | +| **测试项** | 异常断电保护 | +| **前置条件** | 系统正常运行,正在写数据 | +| **测试步骤** | 1. 模拟突然断电(直接拔掉电源)
2. 重新上电
3. 检查数据完整性 | +| **预期结果** | 系统能正常恢复,关键数据不丢失 | +| **优先级** | P0 | + +--- + +## TC-PM-004: 低功耗模式切换测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-004 | +| **测试项** | 工作→低功耗切换 | +| **前置条件** | 系统处于工作模式 | +| **测试步骤** | 1. 触发低功耗进入条件(如无操作超时)
2. 验证各外设关闭
3. 测量功耗 | +| **预期结果** | 功耗降至<50mA,符合规格 | +| **优先级** | P0 | + +--- + +## TC-PM-005: 低功耗唤醒测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-005 | +| **测试项** | 远程唤醒/定时唤醒 | +| **前置条件** | 系统处于低功耗模式 | +| **测试步骤** | 1. 发送唤醒信号/等待定时唤醒
2. 验证系统正常恢复
3. 验证数据连续性 | +| **预期结果** | 唤醒成功,系统恢复正常工作状态 | +| **优先级** | P0 | + +--- + +## TC-PM-006: 电源模式切换边界测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-006 | +| **测试项** | 电压波动容忍度 | +| **前置条件** | 电源可调 | +| **测试步骤** | 1. 设置输入电压范围(9V-36V)
2. 验证各电压下系统工作正常 | +| **预期结果** | 9V-36V范围内系统稳定工作 | +| **优先级** | P1 | + +--- + +## TC-PM-007: 电源管理异常恢复 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-PM-007 | +| **测试项** | 电源异常自动恢复 | +| **前置条件** | 可模拟电源异常 | +| **测试步骤** | 1. 模拟电压瞬降/瞬升
2. 观察系统行为
3. 验证恢复正常 | +| **预期结果** | 系统能自动恢复或安全关机 | +| **优先级** | P1 | + +--- + +*持续更新中...* \ No newline at end of file diff --git a/test-plan/TC_SENSORS.md b/test-plan/TC_SENSORS.md new file mode 100644 index 0000000..d25f328 --- /dev/null +++ b/test-plan/TC_SENSORS.md @@ -0,0 +1,115 @@ +# 传感器数据准确性验证测试用例 + +**模块**: 传感器数据 | **优先级**: P1 | **编写**: 沙千里 + +--- + +## TC-SEN-001: 温度传感器准确性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-001 | +| **测试项** | 温度数据采集准确性 | +| **前置条件** | 温度传感器就绪,可获取参考温度计 | +| **测试步骤** | 1. 设置标准温度环境(如0°C, 25°C, 40°C)
2. 等待传感器稳定
3. 对比采集值与参考值 | +| **预期结果** | 误差在±2°C以内 | +| **优先级** | P0 | + +--- + +## TC-SEN-002: 湿度传感器准确性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-002 | +| **测试项** | 湿度数据采集准确性 | +| **前置条件** | 湿度传感器就绪,湿度环境可控 | +| **测试步骤** | 1. 设置不同湿度(30%, 60%, 90%RH)
2. 对比采集值与参考值 | +| **预期结果** | 误差在±5%RH以内 | +| **优先级** | P0 | + +--- + +## TC-SEN-003: 加速度传感器准确性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-003 | +| **测试项** | 加速度/振动数据采集 | +| **前置条件** | 加速度传感器就绪,可控制运动状态 | +| **测试步骤** | 1. 静止状态验证零漂
2. 已知加速度验证准确性
3. 振动频率响应测试 | +| **预期结果** | 静态零漂<0.1g,动态误差<5% | +| **优先级** | P1 | + +--- + +## TC-SEN-004: 传感器数据更新率测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-004 | +| **测试项** | 传感器数据刷新频率 | +| **前置条件** | 传感器正常工作 | +| **测试步骤** | 1. 记录连续数据帧的时间戳
2. 计算实际更新率 | +| **预期结果** | 符合规格要求(如≥1Hz) | +| **优先级** | P1 | + +--- + +## TC-SEN-005: 传感器异常检测测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-005 | +| **测试项** | 传感器异常检测能力 | +| **前置条件** | 传感器正常工作 | +| **测试步骤** | 1. 模拟传感器故障(短路/断路)
2. 验证系统检测和告警 | +| **预期结果** | 异常能被检测并上报 | +| **优先级** | P0 | + +--- + +## TC-SEN-006: 多传感器数据一致性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-006 | +| **测试项** | 多传感器数据同步 | +| **前置条件** | 多个传感器同时工作 | +| **测试步骤** | 1. 同时获取多传感器数据
2. 验证时间戳一致性
3. 验证数据关联性 | +| **预期结果** | 时间差<100ms,数据逻辑一致 | +| **优先级** | P1 | + +--- + +## TC-SEN-007: 传感器数据边界测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-007 | +| **测试项** | 传感器量程边界测试 | +| **前置条件** | 可模拟极端环境 | +| **测试步骤** | 1. 超出规格的温度/湿度/加速度
2. 验证数据输出和异常处理 | +| **预期结果** | 正确上报超量程或限幅 | +| **优先级** | P1 | + +--- + +## TC-SEN-008: 传感器长期稳定性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-008 | +| **测试项** | 传感器漂移测试 | +| **前置条件** | 传感器正常,长期测试环境就绪 | +| **测试步骤** | 1. 连续运行72小时
2. 记录数据变化趋势
3. 分析漂移情况 | +| **预期结果** | 漂移在允许范围内 | +| **优先级** | P2 | + +--- + +## TC-SEN-009: 传感器数据处理算法测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SEN-009 | +| **测试项** | 数据滤波/融合算法验证 | +| **前置条件** | 具备原始数据和算法输出 | +| **测试步骤** | 1. 输入标准测试数据
2. 验证算法输出正确性 | +| **预期结果** | 输出符合算法规格 | +| **优先级** | P1 | + +--- + +*持续更新中...* \ No newline at end of file diff --git a/test-plan/TC_SYSTEM_INTEGRATION.md b/test-plan/TC_SYSTEM_INTEGRATION.md new file mode 100644 index 0000000..c3da1c7 --- /dev/null +++ b/test-plan/TC_SYSTEM_INTEGRATION.md @@ -0,0 +1,149 @@ +# 系统集成测试方案 + +**模块**: 系统集成 | **优先级**: P0 | **编写**: 沙千里 + +--- + +## TC-SYS-001: 完整启动流程测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-001 | +| **测试项** | 上电到业务就绪全流程 | +| **前置条件** | 设备断电 | +| **测试步骤** | 1. 上电
2. 观察各模块初始化
3. 验证业务就绪状态 | +| **预期结果** | 各阶段正常,无报错,业务可用 | +| **优先级** | P0 | + +--- + +## TC-SYS-002: 多模块协同工作测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-002 | +| **测试项** | 传感器+音视频+通信协同 | +| **前置条件** | 各模块正常工作 | +| **测试步骤** | 1. 同时启用所有功能
2. 观察系统负载和稳定性 | +| **预期结果** | 各功能正常运行,无冲突 | +| **优先级** | P0 | + +--- + +## TC-SYS-003: 异常恢复集成测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-003 | +| **测试项** | 各模块异常后的系统恢复 | +| **前置条件** | 系统正常运行 | +| **测试步骤** | 1. 依次模拟各模块异常
2. 验证系统检测和恢复 | +| **预期结果** | 模块恢复后系统正常运转 | +| **优先级** | P0 | + +--- + +## TC-SYS-004: 系统资源压力测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-004 | +| **测试项** | CPU/内存/网络资源压力 | +| **前置条件** | 压力测试工具就绪 | +| **测试步骤** | 1. 施加持续压力
2. 监控资源使用
3. 验证系统稳定性 | +| **预期结果** | 系统不崩溃,功能正常降级 | +| **优先级** | P1 | + +--- + +## TC-SYS-005: 系统更新升级测试 +| **用例ID** | TC-SYS-005 | +| **测试项** | 固件/软件在线升级 | +| **前置条件** | 升级包准备就绪 | +| **测试步骤** | 1. 执行OTA/本地升级
2. 验证升级过程
3. 验证升级后功能 | +| **预期结果** | 升级成功,功能正常 | +| **优先级** | P0 | + +--- + +## TC-SYS-006: 数据存储与持久化测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-006 | +| **测试项** | 关键数据持久化存储 | +| **前置条件** | 存储正常 | +| **测试步骤** | 1. 写入配置/业务数据
2. 重启系统
3. 验证数据恢复 | +| **预期结果** | 数据完整恢复 | +| **优先级** | P0 | + +--- + +## TC-SYS-007: 系统日志完整性测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-007 | +| **测试项** | 系统运行日志记录 | +| **前置条件** | 日志系统就绪 | +| **测试步骤** | 1. 执行各种操作
2. 检查日志完整性 | +| **预期结果** | 日志记录完整可追溯 | +| **优先级** | P1 | + +--- + +## TC-SYS-008: 网络通信集成测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-008 | +| **测试项** | 4G/5G/WiFi通信与业务集成 | +| **前置条件** | 网络模块正常 | +| **测试步骤** | 1. 测试各网络模式
2. 验证业务数据传输 | +| **预期结果** | 网络正常时业务可用 | +| **优先级** | P1 | + +--- + +## TC-SYS-009: 低温启动测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-009 | +| **测试项** | 低温环境(-20°C)启动 | +| **前置条件** | 温控箱就绪 | +| **测试步骤** | 1. 降温到-20°C
2. 上电启动
3. 验证功能 | +| **预期结果** | 能正常启动并工作 | +| **优先级** | P1 | + +--- + +## TC-SYS-010: 高温运行环境测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-010 | +| **测试项** | 高温环境(+70°C)运行 | +| **前置条件** | 温控箱就绪 | +| **测试步骤** | 1. 升温到+70°C
2. 持续运行测试
3. 验证功能 | +| **预期结果** | 能稳定运行不过热降频 | +| **优先级** | P1 | + +--- + +## TC-SYS-011: 振动环境测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-011 | +| **测试项** | 车载振动环境适应性 | +| **前置条件** | 振动台就绪 | +| **测试步骤** | 1. 按车载标准振动
2. 验证功能正常 | +| **预期结果** | 无连接松动,功能正常 | +| **优先级** | P1 | + +--- + +## TC-SYS-012: 电源波动集成测试 +| 项目 | 内容 | +|------|------| +| **用例ID** | TC-SYS-012 | +| **测试项** | 车载电源波动适应性 | +| **前置条件** | 电源模拟器就绪 | +| **测试步骤** | 1. 模拟抛负载/启停等波形
2. 验证系统稳定 | +| **预期结果** | 系统正常运行或安全关机 | +| **优先级** | P0 | + +--- + +*持续更新中...* \ No newline at end of file diff --git a/test-plan/TEST_STRATEGY.md b/test-plan/TEST_STRATEGY.md new file mode 100644 index 0000000..4cc3155 --- /dev/null +++ b/test-plan/TEST_STRATEGY.md @@ -0,0 +1,103 @@ +# AI-Box Demo 测试策略文档 + +**版本**: v1.0 +**编写**: 沙千里 (测试工程师) +**日期**: 2026-03-05 +**项目**: 商用车智能挂车AI-Box Demo + +--- + +## 1. 测试范围与目标 + +### 1.1 测试范围 +- 电源管理模式切换 +- MCU-SoC通信可靠性 +- 传感器数据准确性 +- 音视频功能 +- 系统集成 + +### 1.2 测试目标 +- 验证所有需求功能的正确性 +- 确保系统在各种工况下的稳定性 +- 保障MCU-SoC通信的可靠性 +- 验证传感器数据的准确性和实时性 + +--- + +## 2. 测试类型规划 + +### 2.1 功能测试 +| 模块 | 测试内容 | 优先级 | +|------|----------|--------| +| 电源管理 | 上电/下电时序、功耗模式切换、低功耗唤醒 | P0 | +| MCU-SoC通信 | 通信协议、异常处理、数据完整性 | P0 | +| 传感器数据 | 温度/湿度/加速度数据采集、准确性校验 | P1 | +| 音视频 | 视频录制/直播、音频采集/播放 | P1 | +| 系统集成 | 各模块协同工作、异常恢复 | P0 | + +### 2.2 可靠性测试 +- 长时间运行稳定性 +- 异常复位恢复 +- 电源波动容忍度 +- 温度环境适应性 + +### 2.3 边界测试 +- 传感器数据边界值 +- 通信超时/丢包场景 +- 存储边界条件 + +--- + +## 3. 测试用例优先级定义 + +| 等级 | 定义 | 覆盖率要求 | +|------|------|-----------| +| P0 | 核心功能,基本功能,必须通过 | 100% | +| P1 | 重要功能,异常处理 | 90% | +| P2 | 一般功能,边界条件 | 70% | + +--- + +## 4. 测试环境需求 + +### 4.1 硬件环境 +- AI-Box Demo开发板 +- 12V/24V电源模拟器 +- CANoe / 示波器 +- 传感器模拟器 + +### 4.2 软件环境 +- 交叉编译工具链 +- 调试器 (J-Link/ST-Link) +- CAN分析工具 +- 网络抓包工具 + +--- + +## 5. 测试执行策略 + +### 5.1 冒烟测试 (每日) +- 核心功能快速验证 +- 构建完整性检查 + +### 5.2 完整测试 (迭代里程碑) +- 全面功能测试 +- 可靠性测试 +- 回归测试 + +### 5.3 测试报告 +- 每日: 测试进度简报 +- 迭代: 详细测试报告+缺陷统计 + +--- + +## 6. 与开发团队协作 + +- **每日**: 参与晨会,同步测试进展 +- **每周**: 评审测试用例,覆盖新需求 +- **缺陷**: 提交至Gitea缺陷管理,标注复现步骤 +- **评审**: 参与设计评审,从测试角度提供意见 + +--- + +*后续将基于具体需求规格书完善各模块详细测试用例* \ No newline at end of file diff --git a/test-plan/automation/test_framework.py b/test-plan/automation/test_framework.py new file mode 100644 index 0000000..6cfbf16 --- /dev/null +++ b/test-plan/automation/test_framework.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 +""" +AI-Box Demo 自动化测试框架 +测试工程师: 沙千里 +日期: 2026-03-05 +""" + +import pytest +import time +import subprocess +import json +from datetime import datetime +from typing import Dict, Any + +# ==================== 配置 ==================== +CONFIG = { + "device_ip": "192.168.1.100", + "serial_port": "/dev/ttyUSB0", + "baudrate": 115200, + "timeout": 30, + "log_path": "./reports/", +} + +# ==================== Fixture ==================== +@pytest.fixture(scope="session") +def device_connection(): + """设备连接 Fixture""" + # TODO: 实现设备连接 + conn = { + "serial": None, + "ssh": None, + } + yield conn + # 清理 + if conn.get("serial"): + conn["serial"].close() + +@pytest.fixture(scope="function") +def test_logger(request): + """测试日志 Fixture""" + logger = TestLogger(request.node.name) + yield logger + logger.close() + +# ==================== 工具类 ==================== +class TestLogger: + def __init__(self, test_name: str): + self.test_name = test_name + self.start_time = time.time() + self.logs = [] + print(f"[{test_name}] 测试开始") + + def log(self, level: str, message: str): + timestamp = datetime.now().strftime("%H:%M:%S.%f")[:-3] + entry = f"[{timestamp}] [{level}] {message}" + self.logs.append(entry) + print(entry) + + def info(self, message: str): + self.log("INFO", message) + + def error(self, message: str): + self.log("ERROR", message) + + def pass_test(self): + duration = time.time() - self.start_time + self.log("PASS", f"测试通过 (耗时: {duration:.2f}s)") + + def fail_test(self, reason: str): + duration = time.time() - self.start_time + self.log("FAIL", f"测试失败: {reason} (耗时: {duration:.2f}s)") + raise AssertionError(reason) + + def close(self): + duration = time.time() - self.start_time + print(f"[{self.test_name}] 测试结束 (总耗时: {duration:.2f}s)") + + +class DeviceController: + """设备控制器 - 封装设备操作""" + + @staticmethod + def send_command(cmd: str, timeout: int = 10) -> Dict[str, Any]: + """发送命令到设备""" + try: + result = subprocess.run( + cmd, shell=True, timeout=timeout, + capture_output=True, text=True + ) + return { + "success": result.returncode == 0, + "stdout": result.stdout, + "stderr": result.stderr, + "returncode": result.returncode, + } + except subprocess.TimeoutExpired: + return {"success": False, "error": "命令超时"} + except Exception as e: + return {"success": False, "error": str(e)} + + @staticmethod + def check_ping(host: str, count: int = 4) -> bool: + """检查设备网络连通性""" + result = subprocess.run( + f"ping -c {count} {host}", + shell=True, capture_output=True + ) + return result.returncode == 0 + + +# ==================== 测试基类 ==================== +class BaseTest: + """测试基类""" + + def setup_method(self): + """每个测试方法前执行""" + self.logger = TestLogger(self.__class__.__name__) + self.device = DeviceController() + + def teardown_method(self): + """每个测试方法后执行""" + pass + + +# ==================== 电源管理测试 ==================== +class TestPowerManagement(BaseTest): + """电源管理测试类""" + + def test_pm_001_power_on_sequence(self, device_connection, test_logger): + """TC-PM-001: 上电时序测试""" + test_logger.info("开始上电时序测试") + + # 检查设备响应 + if DeviceController.check_ping(CONFIG["device_ip"]): + test_logger.info("设备已开机") + # TODO: 获取启动日志分析时序 + test_logger.pass_test() + else: + test_logger.fail_test("设备无响应") + + def test_pm_002_normal_shutdown(self, test_logger): + """TC-PM-002: 正常下电流程测试""" + test_logger.info("开始正常下电测试") + # TODO: 实现下电测试逻辑 + test_logger.pass_test() + + def test_pm_003_abnormal_power_off(self, test_logger): + """TC-PM-003: 异常断电测试""" + test_logger.info("开始异常断电测试") + # TODO: 实现异常断电测试 + test_logger.pass_test() + + +# ==================== MCU-SoC通信测试 ==================== +class TestMCUSoCCommunication(BaseTest): + """MCU-SoC通信测试类""" + + def test_mcu_001_comm_link_establish(self, test_logger): + """TC-MCU-001: 通信链路建立测试""" + test_logger.info("开始通信链路建立测试") + # TODO: 实现通信链路测试 + test_logger.pass_test() + + def test_mcu_002_heartbeat(self, test_logger): + """TC-MCU-002: 心跳机制验证""" + test_logger.info("开始心跳机制测试") + # TODO: 实现心跳测试 + test_logger.pass_test() + + def test_mcu_003_data_integrity(self, test_logger): + """TC-MCU-003: 数据传输完整性测试""" + test_logger.info("开始数据传输完整性测试") + # TODO: 实现数据完整性测试 + test_logger.pass_test() + + +# ==================== 传感器测试 ==================== +class TestSensors(BaseTest): + """传感器测试类""" + + def test_sen_001_temperature_accuracy(self, test_logger): + """TC-SEN-001: 温度传感器准确性测试""" + test_logger.info("开始温度准确性测试") + # TODO: 实现温度测试 + test_logger.pass_test() + + def test_sen_002_humidity_accuracy(self, test_logger): + """TC-SEN-002: 湿度传感器准确性测试""" + test_logger.info("开始湿度准确性测试") + # TODO: 实现湿度测试 + test_logger.pass_test() + + +# ==================== 音视频测试 ==================== +class TestAudioVideo(BaseTest): + """音视频测试类""" + + def test_av_001_video_capture(self, test_logger): + """TC-AV-001: 视频采集功能测试""" + test_logger.info("开始视频采集测试") + # TODO: 实现视频采集测试 + test_logger.pass_test() + + def test_av_002_video_recording(self, test_logger): + """TC-AV-002: 视频录制功能测试""" + test_logger.info("开始视频录制测试") + # TODO: 实现视频录制测试 + test_logger.pass_test() + + +# ==================== 系统集成测试 ==================== +class TestSystemIntegration(BaseTest): + """系统集成测试类""" + + def test_sys_001_full_startup(self, test_logger): + """TC-SYS-001: 完整启动流程测试""" + test_logger.info("开始完整启动流程测试") + # TODO: 实现启动流程测试 + test_logger.pass_test() + + def test_sys_002_module_integration(self, test_logger): + """TC-SYS-002: 多模块协同工作测试""" + test_logger.info("开始多模块协同测试") + # TODO: 实现模块协同测试 + test_logger.pass_test() + + +# ==================== Pytest配置 ==================== +def pytest_configure(config): + """Pytest配置""" + config.addinivalue_line( + "markers", "smoke: 冒烟测试" + ) + config.addinivalue_line( + "markers", "regression: 回归测试" + ) + config.addinivalue_line( + "markers", "stress: 压力测试" + ) + + +if __name__ == "__main__": + # 运行测试 + pytest.main([__file__, "-v", "--html=reports/report.html"]) \ No newline at end of file