Files
petwash/系统参数读写测试指南.md
GukSang.Jin 9c66b6cd82
2026-03-03 16:55:02 +08:00

553 lines
12 KiB
Markdown
Raw 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.
# 系统参数读写功能测试指南
## 测试环境准备
### 1. 设备要求
- Modbus TCP 设备IP: 192.168.1.10, Port: 502
- 支持保持寄存器读写
- 地址范围D404-D424, D1280, D1330, D1380
### 2. 网络配置
- 确保控制端与设备在同一网络
- 测试网络连通性:`ping 192.168.1.10`
- 确认端口 502 可访问
### 3. 软件准备
- 已编译的 PetWashControl 应用程序
- Modbus 测试工具(可选,用于验证)
## 测试场景
### 场景1正常初始化流程
#### 测试步骤
1. 启动应用程序
2. 观察日志输出
3. 检查界面显示
#### 预期结果
```
日志输出:
[INFO] 开始初始化系统...
[INFO] 正在连接 Modbus TCP 设备: 192.168.1.10:502
[INFO] Modbus TCP 连接成功: 192.168.1.10:502
[INFO] 正在从设备读取系统参数...
[INFO] 时间参数读取成功 - 首次喷水:2min, 沐浴1后:2min, ...
[INFO] 液位读取成功 - 1号:80%, 2号:75%, 3号:70%
[INFO] 系统初始化完成
界面显示:
- 状态消息:"系统就绪,设备已连接"
- 系统参数显示设备读取的值
- 液位显示实际百分比
```
#### 验证点
- ✅ Modbus 连接成功
- ✅ 参数读取成功
- ✅ 界面显示正确
- ✅ 无错误日志
---
### 场景2设备未连接
#### 测试步骤
1. 断开设备网络或关闭设备
2. 启动应用程序
3. 观察系统行为
#### 预期结果
```
日志输出:
[INFO] 正在连接 Modbus TCP 设备: 192.168.1.10:502
[ERROR] Modbus TCP 连接失败
[WARNING] Modbus TCP 设备连接失败,使用默认配置
[INFO] 已加载默认参数配置
界面显示:
- 状态消息:"系统就绪,设备未连接"
- 系统参数显示默认值
- 液位显示默认值
```
#### 验证点
- ✅ 连接失败被正确处理
- ✅ 使用默认配置
- ✅ 应用程序正常运行
- ✅ 用户收到明确提示
---
### 场景3修改并保存参数设备已连接
#### 测试步骤
1. 确保设备已连接
2. 点击 "系统设置" 按钮
3. 修改参数:
- 首次喷水时间2 → 3
- 热风时间5 → 6
4. 点击 "保存设置" 按钮
5. 观察结果
#### 预期结果
```
日志输出:
[INFO] 本地参数已更新 - 首次喷水:3min, ..., 热风:6min, ...
[INFO] 正在将参数写入设备...
[INFO] 参数已成功写入设备
界面显示:
- 弹出消息框:"系统参数已保存到设备!"
- 状态消息:"参数保存成功"
```
#### 验证点
- ✅ 参数修改成功
- ✅ 写入设备成功
- ✅ 本地配置已更新
- ✅ 用户收到成功提示
#### 验证方法
使用 Modbus 测试工具读取 D404 和 D420
```
D404 = 3 (首次喷水时间)
D420 = 6 (热风时间)
```
---
### 场景4修改并保存参数设备未连接
#### 测试步骤
1. 断开设备连接
2. 点击 "系统设置" 按钮
3. 修改参数
4. 点击 "保存设置" 按钮
5. 观察结果
#### 预期结果
```
日志输出:
[INFO] 本地参数已更新 - ...
界面显示:
- 弹出警告消息框:
"系统参数已保存到本地配置!
注意:设备未连接,参数未写入设备。"
- 状态消息:"参数已保存(仅本地)"
```
#### 验证点
- ✅ 本地配置已更新
- ✅ 未尝试写入设备
- ✅ 用户收到明确警告
- ✅ 应用程序正常运行
---
### 场景5液位定时更新
#### 测试步骤
1. 确保设备已连接
2. 观察液位显示
3. 等待30秒
4. 检查液位是否更新
5. 查看日志
#### 预期结果
```
日志输出每30秒
[INFO] 液位读取成功 - 1号:80%, 2号:75%, 3号:70%
[INFO] 液位读取成功 - 1号:79%, 2号:74%, 3号:69%
...
界面显示:
- 液位数值每30秒自动更新
- 无需用户操作
```
#### 验证点
- ✅ 定时器正常工作
- ✅ 液位数据自动更新
- ✅ 无错误日志
- ✅ 界面实时刷新
---
### 场景6参数范围验证
#### 测试步骤
1. 进入系统设置
2. 尝试将参数增加到超过60
3. 尝试将参数减少到小于0
4. 观察结果
#### 预期结果
```
操作:
- 点击 + 按钮多次
- 参数值增加到 60 后不再增加
- 点击 - 按钮多次
- 参数值减少到 0 后不再减少
界面显示:
- 参数值始终在 0-60 范围内
- 按钮仍可点击但值不变
```
#### 验证点
- ✅ 参数最大值限制为 60
- ✅ 参数最小值限制为 0
- ✅ 边界值处理正确
- ✅ 界面响应正常
---
### 场景7写入失败处理
#### 测试步骤
1. 设备已连接
2. 修改参数
3. 在保存过程中断开设备网络
4. 观察结果
#### 预期结果
```
日志输出:
[INFO] 正在将参数写入设备...
[ERROR] 写入设备参数失败: 连接超时
界面显示:
- 弹出错误消息框:"保存失败: 写入设备失败: 连接超时"
- 状态消息:"参数保存失败"
```
#### 验证点
- ✅ 错误被正确捕获
- ✅ 用户收到错误提示
- ✅ 应用程序不崩溃
- ✅ 可以重试操作
---
### 场景8断线重连
#### 测试步骤
1. 应用程序运行中,设备已连接
2. 断开设备网络
3. 等待10秒心跳检测周期
4. 恢复设备网络
5. 观察重连过程
#### 预期结果
```
日志输出:
[WARNING] 心跳检测: 连接已断开,尝试重连...
[INFO] 正在连接 Modbus TCP 设备: 192.168.1.10:502
[ERROR] Modbus TCP 连接失败
[WARNING] 检测到连接错误,尝试重新连接...
...
[INFO] Modbus TCP 连接成功: 192.168.1.10:502
[INFO] Modbus TCP 设备已连接
界面显示:
- 状态消息:"警告:设备连接断开"
- 自动重连后:"系统就绪,设备已连接"
```
#### 验证点
- ✅ 断线被检测到
- ✅ 自动尝试重连
- ✅ 重连成功后恢复功能
- ✅ 界面状态正确更新
---
### 场景9批量参数修改
#### 测试步骤
1. 进入系统设置
2. 修改所有时间参数:
- 首次喷水2 → 3
- 沐浴1后喷水2 → 4
- 沐浴2后喷水2 → 5
- 沐浴3后喷水2 → 6
- 喷沐浴露11 → 2
- 喷沐浴露21 → 3
- 喷沐浴露31 → 4
- 热风5 → 7
- 冷风2 → 3
- 紫外线3 → 5
3. 点击保存
4. 验证所有参数
#### 预期结果
```
日志输出:
[INFO] 本地参数已更新 - 首次喷水:3min, 沐浴1后:4min, 沐浴2后:5min,
沐浴3后:6min, 喷沐浴露1:2min, 喷沐浴露2:3min, 喷沐浴露3:4min,
冷风:3min, 热风:7min, 紫外线:5min
[INFO] 正在将参数写入设备...
[INFO] 参数已成功写入设备
界面显示:
- 所有参数显示新值
- 保存成功提示
```
#### 验证点
- ✅ 所有参数正确保存
- ✅ 批量写入成功
- ✅ 数据一致性
- ✅ 无数据丢失
---
### 场景10重启后参数持久化
#### 测试步骤
1. 修改参数并保存到设备
2. 关闭应用程序
3. 重新启动应用程序
4. 检查参数值
#### 预期结果
```
界面显示:
- 参数值与修改后的值一致
- 从设备读取的值正确显示
```
#### 验证点
- ✅ 设备参数持久化
- ✅ 重启后正确读取
- ✅ 数据一致性
- ✅ 无数据丢失
---
## 性能测试
### 测试1读取性能
#### 测试方法
```csharp
var stopwatch = Stopwatch.StartNew();
await LoadDeviceParametersAsync();
stopwatch.Stop();
Console.WriteLine($"读取耗时: {stopwatch.ElapsedMilliseconds}ms");
```
#### 预期结果
- 读取时间参数:< 100ms
- 读取液位数据:< 300ms3次读取
- 总耗时:< 500ms
### 测试2写入性能
#### 测试方法
```csharp
var stopwatch = Stopwatch.StartNew();
await SaveParametersToDeviceAsync();
stopwatch.Stop();
Console.WriteLine($"写入耗时: {stopwatch.ElapsedMilliseconds}ms");
```
#### 预期结果
- 写入11个寄存器< 200ms
### 测试3定时更新性能
#### 测试方法
- 运行应用程序1小时
- 监控 CPU 和内存使用
- 检查日志文件大小
#### 预期结果
- CPU 使用率:< 5%
- 内存使用:稳定,无泄漏
- 日志文件:合理大小
---
## 压力测试
### 测试1频繁读写
#### 测试方法
```csharp
for (int i = 0; i < 100; i++)
{
await LoadDeviceParametersAsync();
await SaveParametersToDeviceAsync();
}
```
#### 预期结果
- 所有操作成功
- 无错误或超时
- 数据一致性
### 测试2长时间运行
#### 测试方法
- 运行应用程序24小时
- 定期检查状态
- 记录所有异常
#### 预期结果
- 应用程序稳定运行
- 液位定时更新正常
- 无内存泄漏
- 无连接问题
---
## 故障注入测试
### 测试1网络延迟
#### 测试方法
- 使用网络模拟工具增加延迟100ms, 500ms, 1000ms
- 执行读写操作
- 观察超时处理
#### 预期结果
- 延迟 < 3000ms操作成功
- 延迟 > 3000ms超时错误正确处理
### 测试2网络丢包
#### 测试方法
- 模拟 10%, 20%, 50% 丢包率
- 执行读写操作
- 观察重试机制
#### 预期结果
- 低丢包率:操作成功(可能需要重试)
- 高丢包率:超时错误,正确处理
### 测试3设备无响应
#### 测试方法
- 设备连接但不响应请求
- 执行读写操作
- 观察超时处理
#### 预期结果
- 操作超时3秒
- 错误被正确捕获
- 用户收到提示
---
## 测试检查清单
### 功能测试
- [ ] 初始化读取参数
- [ ] 初始化读取液位
- [ ] 修改参数
- [ ] 保存参数到设备
- [ ] 保存参数到本地
- [ ] 定时更新液位
- [ ] 参数范围验证
- [ ] 连接状态监控
### 错误处理
- [ ] 连接失败处理
- [ ] 读取失败处理
- [ ] 写入失败处理
- [ ] 超时处理
- [ ] 断线重连
### 性能测试
- [ ] 读取性能
- [ ] 写入性能
- [ ] 定时更新性能
- [ ] 长时间运行稳定性
### 用户体验
- [ ] 界面响应速度
- [ ] 错误提示清晰
- [ ] 状态显示准确
- [ ] 操作流程顺畅
---
## 测试报告模板
```
测试日期____________________
测试人员____________________
设备信息____________________
测试结果:
场景1正常初始化流程 [ ] 通过 [ ] 失败
场景2设备未连接 [ ] 通过 [ ] 失败
场景3修改并保存参数已连接[ ] 通过 [ ] 失败
场景4修改并保存参数未连接[ ] 通过 [ ] 失败
场景5液位定时更新 [ ] 通过 [ ] 失败
场景6参数范围验证 [ ] 通过 [ ] 失败
场景7写入失败处理 [ ] 通过 [ ] 失败
场景8断线重连 [ ] 通过 [ ] 失败
场景9批量参数修改 [ ] 通过 [ ] 失败
场景10重启后参数持久化 [ ] 通过 [ ] 失败
问题记录:
1. ___________________________________________
2. ___________________________________________
3. ___________________________________________
建议:
1. ___________________________________________
2. ___________________________________________
3. ___________________________________________
总体评价:[ ] 优秀 [ ] 良好 [ ] 合格 [ ] 不合格
```
---
## 常见问题排查
### 问题1无法连接设备
**排查步骤:**
1. ping 192.168.1.10
2. telnet 192.168.1.10 502
3. 检查防火墙设置
4. 检查设备 Modbus TCP 服务
### 问题2读取参数失败
**排查步骤:**
1. 使用 Modbus 测试工具验证地址
2. 检查从站 ID 是否正确
3. 查看详细错误日志
4. 确认寄存器地址范围
### 问题3写入参数失败
**排查步骤:**
1. 检查寄存器是否可写
2. 验证数据格式
3. 检查权限设置
4. 查看设备日志
### 问题4液位不更新
**排查步骤:**
1. 检查定时器是否启动
2. 查看错误日志
3. 验证液位寄存器地址
4. 检查设备连接状态
---
## 总结
完成所有测试场景后,系统应该:
- ✅ 稳定可靠
- ✅ 错误处理完善
- ✅ 性能满足要求
- ✅ 用户体验良好
- ✅ 适合生产环境部署