M1.1 收尾: - 24项 P0/P1/P2 bug 修复 (Rust 107 tests + Flutter 15 tests) - Flutter App v0.3: cupertino_icons 修复, 单元测试, 调试面板, APK 52.6MB - 示例插件完善: manifest.json + 请求/响应示范 + 7个测试 - API 文档重写 (以 routes.rs 为唯一权威) - MILESTONES.md 更新至 100% M1.2 启动: - P0: 插件管理 API 闭环 (handle_manager_message Custom 分支 + broadcast_plugin_states) - ServiceManager 集成测试 8/8 (tests/m1_2_service_manager.rs) - M1.2 测试计划 (docs/M1.2_TEST_PLAN.md, 18个E2E场景) - 动态插件系统: auto_rollback + version_manager GC + 路径穿越防护 总计: Rust 115/115 测试, Flutter 15/15 测试, 零 warning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.2 KiB
7.2 KiB
ShowenV2 测试指南
测试环境
目标运行环境
- 操作系统: Debian 11 (bullseye)
- 架构: ARM64 (aarch64)
- 桌面环境: KDE Plasma
- 设备类型: 嵌入式设备(Radxa、树莓派等)
硬件要求
- CPU: ARM Cortex-A 系列
- 内存: ≥ 2GB
- 存储: ≥ 8GB
- 显示: 支持 HDMI 输出
- 网络: WiFi + 蓝牙
软件环境
- Rust toolchain: stable-aarch64-unknown-linux-gnu
- OpenCV 库(ARM64 版本)
- D-Bus(用于 BLE)
- NetworkManager(用于 WiFi)
- KDE Plasma 桌面环境
环境验证
# 检查系统信息
uname -a # 应显示 aarch64
cat /etc/os-release # 应显示 Debian 11
# 检查桌面环境
echo $XDG_CURRENT_DESKTOP # 应显示 KDE
# 检查 Rust 环境
rustc --version # 应显示 stable-aarch64
# 检查依赖库
pkg-config --modversion opencv4 # OpenCV 版本
systemctl status dbus # D-Bus 状态
nmcli --version # NetworkManager 版本
测试类型
1. 编译测试
# 检查编译
cargo check
# 代码质量检查
cargo clippy
# 运行单元测试
cargo test
2. 功能测试
配置文件测试
# 配置文件已在 configs/ 目录中
# 验证配置加载
cargo run --release -- --config configs/dog_state_machine.json --validate
视频播放测试
# 启动程序
cargo run --release -- --config configs/dog_state_machine.json
# 测试点:
# - 视频是否正常播放
# - 帧率是否达到 60fps
# - 状态机切换是否正常
# - 触发器是否响应
HTTP API 测试
# 启动程序后,在另一个终端测试 API
# 获取状态
curl http://localhost:8080/api/status
# 播放控制
curl -X POST http://localhost:8080/api/play
curl -X POST http://localhost:8080/api/pause
curl -X POST http://localhost:8080/api/next
curl -X POST http://localhost:8080/api/previous
# 跳转到指定视频
curl -X POST http://localhost:8080/api/goto/0
# 触发状态切换
curl -X POST http://localhost:8080/api/trigger/happy
# 场景切换
curl -X POST http://localhost:8080/api/scene/0
# 获取配置
curl http://localhost:8080/api/config
# 访问 Web UI
curl http://localhost:8080/
BLE 测试
# 使用手机蓝牙扫描设备
# 设备名应该显示为配置文件中的 device_name
# 连接后测试 GATT 服务
# - WiFi 配置特征值
# - 状态查询特征值
# - 命令发送特征值
WiFi 测试
# 通过 BLE 或 HTTP API 测试 WiFi 功能
# 扫描 WiFi
curl -X POST http://localhost:8080/api/wifi/scan
# 连接 WiFi
curl -X POST http://localhost:8080/api/wifi/connect \
-H "Content-Type: application/json" \
-d '{"ssid": "YourSSID", "password": "YourPassword"}'
# 断开 WiFi
curl -X POST http://localhost:8080/api/wifi/disconnect
# 开启热点
curl -X POST http://localhost:8080/api/wifi/hotspot/start
# 关闭热点
curl -X POST http://localhost:8080/api/wifi/hotspot/stop
屏幕管理测试
# 程序运行时应该:
# - 阻止屏幕休眠
# - 隐藏鼠标光标
# - 全屏显示视频
# 程序停止时应该:
# - 恢复屏幕休眠
# - 显示鼠标光标
3. 性能测试
帧率测试
# 运行程序并观察日志
cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 视频渲染帧率 ≥ 60fps
# - 无明显卡顿
# - CPU 占用合理
内存测试
# 启动程序
cargo run --release -- --config configs/dog_state_machine.json &
PID=$!
# 监控内存占用
watch -n 1 "ps aux | grep $PID | grep -v grep"
# 检查点:
# - 内存占用 ≤ 旧版本 120%
# - 无内存泄漏(长时间运行内存稳定)
启动时间测试
# 测量启动时间
time cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 启动时间 ≤ 3秒
稳定性测试
# 长时间运行测试(7x24小时)
cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 连续运行 7天无崩溃
# - 内存占用稳定
# - 无资源泄漏
4. 集成测试
插件通信测试
- 测试 HTTP → Video 消息传递
- 测试 BLE → WiFi 消息传递
- 测试 Broadcast 消息到所有插件
配置验证测试
- 测试各种配置组合
- 测试边界条件(空配置、超大值等)
- 测试错误配置的处理
5. 对比测试
功能对比
# 运行 ShowenV2
cd /home/showen/Showen/ShowenV2
cargo run --release -- --config configs/dog_state_machine.json
# 对比:
# - 功能是否一致
# - 性能是否相当
# - 用户体验是否改善
截图和录屏
截图工具
# 安装截图工具
sudo apt-get install scrot
# 截图
scrot screenshot.png
# 延迟 5秒后截图
scrot -d 5 screenshot.png
# 截取当前窗口
scrot -u screenshot.png
录屏工具
# 安装录屏工具
sudo apt-get install ffmpeg
# 录制屏幕
ffmpeg -f x11grab -s 1920x1080 -i :0.0 -r 30 output.mp4
# 录制 30秒后停止
ffmpeg -f x11grab -s 1920x1080 -i :0.0 -r 30 -t 30 output.mp4
性能监控截图
# 安装 htop
sudo apt-get install htop
# 运行 htop 并截图
htop &
sleep 2
scrot htop_screenshot.png
测试报告模板
测试报告结构
# ShowenV2 测试报告
## 测试信息
- 测试人员:[姓名]
- 测试日期:[日期]
- 测试版本:[commit hash]
- 测试环境:[硬件/软件信息]
## 测试结果概览
- 编译测试:✅/❌
- 功能测试:✅/❌
- 性能测试:✅/❌
- 集成测试:✅/❌
- 对比测试:✅/❌
## 详细测试结果
### 编译测试
- cargo check: ✅
- cargo clippy: ⚠️ 7个 warning
- cargo test: ✅
### 功能测试
#### 视频播放
- 基本播放:✅
- 状态切换:✅
- 触发器:✅
- 截图:[附件]
#### HTTP API
- 状态查询:✅
- 播放控制:✅
- Web UI:✅
- 截图:[附件]
#### BLE
- 设备发现:✅
- GATT 服务:✅
- WiFi 配置:✅
#### WiFi
- 扫描:✅
- 连接:✅
- 热点:✅
### 性能测试
- 帧率:60fps ✅
- 内存占用:150MB ✅
- 启动时间:2.5秒 ✅
- 稳定性:运行 24小时无问题 ✅
### 发现的问题
1. [问题描述]
- 严重程度:P0/P1/P2/P3
- 复现步骤:[步骤]
- 截图:[附件]
- 建议:[修复建议]
## 质量评估
- 整体质量:优秀/良好/一般/较差
- 是否可以发布:是/否
- 风险提示:[风险说明]
## 建议
- [改进建议]
测试检查清单
编译检查
- cargo check 通过
- cargo clippy 零 warning
- cargo test 通过
- cargo build --release 成功
功能检查
- 配置文件加载正确
- 视频播放正常
- 状态机切换正确
- HTTP API 全部可用
- BLE 连接正常
- WiFi 功能正常
- 屏幕管理正常
性能检查
- 帧率 ≥ 60fps
- 内存占用合理
- 启动时间 ≤ 3秒
- 长时间运行稳定
质量检查
- 无崩溃
- 无内存泄漏
- 无资源泄漏
- 错误处理完善
- 日志输出合理
对比检查
- 功能对齐旧版本
- 性能不低于旧版本
- 用户体验改善
文档版本: v1.0
最后更新: 2026-03-12
负责人: 林晓峰 (QA 负责人)