综合平台编程器项目的远程存储
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

6.4 KiB

测试约定

本项目已经进入交付整理阶段,测试只保留能直接证明交付质量的三类内容:功能自动化测试、性能测试和真实 PLC 实测。测试数量不是质量指标,不重复验证同一个业务结论。

测试范围

类型 证明内容 执行方式
功能自动化测试 领域规则、服务用例、JSON 工程、离线执行、运行面板时序和 Fake PLC 状态机正确 提交前自动执行
性能测试 代表性工程扫描和边界规模寄存器访问性能 独立执行
真实 PLC 实测 串口、Modbus RTU、PLC 响应、接线和现场联动有效 人工执行并记录

自动化测试验证画布命中、拖动选择、对象与整行剪贴板、连续光标和轨迹字段到图元的投影,不以像素截图代替人工视觉验收;符号比例、颜色观感和不同系统缩放仍由交付前人工检查。跨运行模式的 Qt 排队信号无法只靠服务测试证明,因此保留离屏控制器测试验证退出离线仿真后不会恢复旧梯形图轨迹;PLC 自动搜索还保留离屏对话框流程测试,验证开始、取消、进度和找到后自动提交参数。

功能自动化测试

测试目标 主要契约
domain_tests 地址、模型、数量边界、Int16/Int32/Float32/Float64 编解码和带竖线并联的输出路径可达性校验
application_settings_tests 默认配置创建、严格 INI 校验、缺失与未知字段、版本和整份回退
runtime_settings_tests HMI 运行版最小串口配置创建、六个串口字段读取、整份回退和原子写回
alarm_service_tests 报警定义和运行记录生命周期
hmi_editor_service_tests HMI 编辑、原子删除、历史、导航和四种 D 数值控件读写
logic_editor_service_tests 连续网格编辑、网络注释首行归属与合并冲突、输出自动补尾线、网格与整行片段复制粘贴、冲突回滚和历史
offline_simulation_service_tests 梯形图扫描语义、离线初始 M/D 快照、真机缓存副本推算、只读隔离、跨扫描状态和故障处理
project_management_tests JSON 往返、支路隐藏注释等非法文件和工程保存状态
register_monitor_service_tests 监视地址、四种 D 类型读写、离线初始值捕获、编辑态数据源显式切换与断线保持、批量步长、重叠提示和运行态活动仓库
runtime_project_bundle_tests 用户运行程序封装的写入、读取、校验和损坏拒绝
runtime_mode_service_tests 编辑、离线、真机只读轨迹、仓库切换、断路工程启动拦截和用户运行版故障恢复策略
runtime_panel_controller_tests 完整执行器快照经过控制器和运行窗口后的轨迹投影、排队回调、画布框选、对象/行号剪贴板和连续输入
plc_connection_dialog_tests PLC 端口刷新及自动搜索开始、取消、进度和参数回填
plc_runtime_tests PLC 缓存、完整轮询通知、多字范围拆块、一次多寄存器写入、错误恢复和 Fake gateway

同一规则只在成本最低、失败定位最清楚的层验证:

  • Domain 验证数据和模型是否合法
  • Service 验证一次业务操作如何改变模型、历史或寄存器
  • JSON 验证工程文件能否严格保存、加载和拒绝非法内容
  • Fake PLC 验证无需真实设备即可重复执行的缓存、首读、超时、断线和恢复逻辑

如果两个测试的输入、执行路径和断言相同,只保留更低层的一个。一个测试函数只验证一个行为主题,多个上下界属于同一业务规则时可以放在一起。

功能测试统一运行:

pwsh -NoLogo -NoProfile -File .\scripts\run_qt_tests.ps1 -Configuration Release

app/tests/tests.pro 只聚合上述 14 个功能测试目标。测试构建输出放在 build/,不写入 app/

性能测试

性能测试不混入普通功能回归,当前独立目标为 performance_tests。基准分为四项:

  • 32 组控制逻辑、每组 64 行的一次合法上限规模软件扫描(总计 2048 行)
  • 100 组单行控制逻辑的一次超限扫描压力测试,不代表可保存工程
  • M0 到 M4000 共 4001 个虚拟 M 位的逐地址边界读写
  • 256 个连续 D 字的一次读写,贴近 PLC 单轮去重地址上限

运行方式:

pwsh -NoLogo -NoProfile -File .\scripts\run_qt_tests.ps1 -Configuration Release -Suite Performance

性能基准使用固定规模和 QBENCHMARK,每项基准在计时后再次校验操作结果,不设置容易受机器差异影响的脆弱毫秒阈值。结果用于记录当前交付版本基线,不替代功能断言;这些数据只反映本地执行器和虚拟寄存器仓库,不代表真实串口或 PLC 响应时间。

需要连续执行功能和性能测试时使用:

pwsh -NoLogo -NoProfile -File .\scripts\run_qt_tests.ps1 -Configuration Release -Suite All

真实 PLC 实测

真实 PLC 测试不写入自动化测试代码,也不进入 tests.pro。Fake PLC 测试只能证明软件状态机,不能代替串口、设备、接线和现场负载验证。

标准安全验证使用 COM3 / 9600 / 8E1 / 站号 1 或现场批准配置,并记录:

  1. PLC 的 STOP/RUN 状态、串口参数、接线和现场负载条件
  2. 写入前读取的原值
  3. 临时写入值及 PLC 读回结果
  4. 恢复原值及再次读回结果
  5. 是否涉及 PLC 内部程序和现场动作

安全通信验证先在 STOP 状态读原值,测试后恢复并再次读回。未经确认接线、地址和负载,不执行 RUN 联动。本项目不生成、下载或修改 PLC 程序。

当前已完成的真机证据:

  • COM3 / 9600 / 8E1 / 站号 1 下读取 D4000=0,临时写入并读回 1,恢复并读回 0
  • 使用 json/motor_forward_reverse.json 完成 RUN 联动,正转启动、反转启动、停止和状态反馈正常

提交前检查

  1. 运行 14 个 Release 功能测试目标
  2. 单独运行 performance_tests 并保留基准输出
  3. 构建 Qt Release 主程序
  4. 按风险决定是否重新执行真实 PLC 实测;未重测时引用已有验收记录并说明原因
  5. 运行 git diff --check

多字类型真机验收还要确认:Int32/Float32 一次发送两个连续保持寄存器,Double 一次发送四个连续保持寄存器,轮询读回后界面才刷新;测试结束恢复全部占用 D 的原值并再次读回确认。