Files
ShowenV2/docs/TESTING.md
showen d30c111c71 feat: M1.1 完成 + M1.2 启动 — 全量更新
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>
2026-03-14 18:12:42 +08:00

384 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 桌面环境
### 环境验证
```bash
# 检查系统信息
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. 编译测试
```bash
# 检查编译
cargo check
# 代码质量检查
cargo clippy
# 运行单元测试
cargo test
```
### 2. 功能测试
#### 配置文件测试
```bash
# 配置文件已在 configs/ 目录中
# 验证配置加载
cargo run --release -- --config configs/dog_state_machine.json --validate
```
#### 视频播放测试
```bash
# 启动程序
cargo run --release -- --config configs/dog_state_machine.json
# 测试点:
# - 视频是否正常播放
# - 帧率是否达到 60fps
# - 状态机切换是否正常
# - 触发器是否响应
```
#### HTTP API 测试
```bash
# 启动程序后,在另一个终端测试 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 测试
```bash
# 使用手机蓝牙扫描设备
# 设备名应该显示为配置文件中的 device_name
# 连接后测试 GATT 服务
# - WiFi 配置特征值
# - 状态查询特征值
# - 命令发送特征值
```
#### WiFi 测试
```bash
# 通过 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
```
#### 屏幕管理测试
```bash
# 程序运行时应该:
# - 阻止屏幕休眠
# - 隐藏鼠标光标
# - 全屏显示视频
# 程序停止时应该:
# - 恢复屏幕休眠
# - 显示鼠标光标
```
### 3. 性能测试
#### 帧率测试
```bash
# 运行程序并观察日志
cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 视频渲染帧率 ≥ 60fps
# - 无明显卡顿
# - CPU 占用合理
```
#### 内存测试
```bash
# 启动程序
cargo run --release -- --config configs/dog_state_machine.json &
PID=$!
# 监控内存占用
watch -n 1 "ps aux | grep $PID | grep -v grep"
# 检查点:
# - 内存占用 ≤ 旧版本 120%
# - 无内存泄漏(长时间运行内存稳定)
```
#### 启动时间测试
```bash
# 测量启动时间
time cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 启动时间 ≤ 3秒
```
#### 稳定性测试
```bash
# 长时间运行测试7x24小时
cargo run --release -- --config configs/dog_state_machine.json
# 检查点:
# - 连续运行 7天无崩溃
# - 内存占用稳定
# - 无资源泄漏
```
### 4. 集成测试
#### 插件通信测试
- 测试 HTTP → Video 消息传递
- 测试 BLE → WiFi 消息传递
- 测试 Broadcast 消息到所有插件
#### 配置验证测试
- 测试各种配置组合
- 测试边界条件(空配置、超大值等)
- 测试错误配置的处理
### 5. 对比测试
#### 功能对比
```bash
# 运行 ShowenV2
cd /home/showen/Showen/ShowenV2
cargo run --release -- --config configs/dog_state_machine.json
# 对比:
# - 功能是否一致
# - 性能是否相当
# - 用户体验是否改善
```
---
## 截图和录屏
### 截图工具
```bash
# 安装截图工具
sudo apt-get install scrot
# 截图
scrot screenshot.png
# 延迟 5秒后截图
scrot -d 5 screenshot.png
# 截取当前窗口
scrot -u screenshot.png
```
### 录屏工具
```bash
# 安装录屏工具
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
```
### 性能监控截图
```bash
# 安装 htop
sudo apt-get install htop
# 运行 htop 并截图
htop &
sleep 2
scrot htop_screenshot.png
```
---
## 测试报告模板
### 测试报告结构
```markdown
# 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 负责人)