跳转至

CatST TestPlan:编译器、Runtime、协议与实机一致性验证

本文档定义 CatST 独立文档集合对应的验证要求。测试目标是证明 CatST 程序从文本、AST、生成 C、PC 仿真到 STM32 实机运行语义一致,并且不会破坏 Runtime 安全边界。


1. 测试目标

必须验证:

  1. CatST 词法、语法、语义和安全检查正确。
  2. 变量区、权限、越界和 Profile 剪裁正确。
  3. 定时器、计数器、边沿检测语义一致。
  4. 生成 C 不包含禁止行为。
  5. AST 仿真、生成 C 仿真和 STM32 实机结果一致。
  6. 下载失败不导致危险输出。
  7. STOP、ERROR、DOWNLOAD、急停等状态下输出关闭。
  8. 在线变量和协议权限正确。
  9. 固定 Bootloader 固化后,现场不使用 J-Link 也能完成下载、监控和恢复。
  10. Runtime 中断事件映像可被 CatST 稳定读取,且 CatST 不能声明用户 ISR。

2. 编译器测试

必须覆盖:

  1. 合法赋值。
  2. 合法 IF/ELSIF/ELSE。
  3. 嵌套 IF。
  4. CASE 状态机。
  5. 逻辑表达式优先级。
  6. 比较运算。
  7. 整数运算。
  8. 溢出保护。
  9. 除以 0 保护。
  10. TIME 格式。
  11. TON/TOF/TP。
  12. CTU/CTD。
  13. R_TRIG/F_TRIG。
  14. VAR_ALIAS 权限继承。
  15. 只读变量写入错误。
  16. 越界变量错误。
  17. 禁止 WHILE/REPEAT 错误。
  18. 默认禁止 FOR,Safe Profile 下受限 FOR 正确。
  19. Safe Profile 下索引访问 X[i]Y[i]M[i]D[i] 静态越界检查正确。
  20. 函数参数数量错误。
  21. 函数参数类型错误。
  22. 同一 T/C 实例同一扫描多次更新错误。
  23. 资源预算超限错误。
  24. 生成 C 快照测试。
  25. 用户中断语法禁止测试。

3. 资源和 Profile 测试

每个 Profile 必须覆盖:

  1. X/Y/R/M/D/T/C 边界下限和上限。
  2. 被剪裁资源访问报错。
  3. 补全列表与 Profile 一致。
  4. 仿真器初始资源与 Profile 一致。
  5. 生成 C 的数组/API 索引不越界。
  6. F103_LITE Flash/RAM 预算检查。
  7. F407_STANDARD 完整资源包络检查。

4. Runtime 语义测试

覆盖:

输入滤波后 X 映像稳定性
Y/R 输出映像刷新
安全层覆盖输出
TON/TOF/TP
CTU/CTD
R_TRIG/F_TRIG
M/D 读写
S/E 只读保护
扫描周期统计
通信任务不阻塞扫描
中断事件映像扫描边界一致性
HSC/CAP/L 锁存语义

通过标准:同一输入轨迹下,AST 仿真、PC C Runtime 仿真和实机变量状态一致。


5. 生成 C 检查

生成 C 必须检查:

  1. 只包含允许 include。
  2. 只生成固定入口。
  3. 不包含 mallocfree、文件操作。
  4. 不包含 HAL/GPIO/UART/Flash 直接访问。
  5. 不包含无界循环。
  6. 整数除法使用安全 helper。
  7. 输出映像访问受控。
  8. 代码格式稳定,支持快照测试。

6. 仿真一致性测试

测试流程:

同一 CatST 源码
AST 仿真
生成 C + PC Runtime 仿真
STM32 实机运行
对比 X/Y/R/M/D/T/C/S/E

一致性样例应覆盖:

  1. 启停联锁。
  2. 延时启动。
  3. 延时断开。
  4. 脉冲输出。
  5. 计数到达。
  6. 状态机。
  7. 急停安全覆盖。
  8. 通信超时状态。
  9. 输入短脉冲锁存。
  10. 高速计数到达。
  11. 捕获值有效和溢出。

7. 协议和下载测试

协议测试:

  1. GET_DEVICE_INFO。
  2. GET_STATUS。
  3. SET_MODE_STOP。
  4. SET_MODE_RUN。
  5. READ_VARIABLES。
  6. WRITE_VARIABLES。
  7. 只读区域写入返回错误。
  8. 非法索引返回错误。
  9. CRC 错误。
  10. 序号错误。
  11. 超时和重试。

下载测试:

  1. 正常下载。
  2. 下载前强制 STOP。
  3. 下载中断。
  4. 单包 CRC 错误。
  5. 整体 App CRC 错误。
  6. Flash 写失败。
  7. 下载成功后默认 STOP。
  8. 下载失败旧程序保护。
  9. 不使用 J-Link 的串口下载全流程。
  10. Bootloader 兜底入口恢复下载。
  11. Bootloader 不支持现场自升级或默认关闭该能力。

8. 安全测试

以下场景必须验证物理输出关闭:

上电初始化
复位期间
STOP
ERROR
DOWNLOAD
急停输入有效
App CRC 错误
参数 CRC 严重错误
看门狗复位后
下载中断后

通过标准:

  1. Y/R 物理输出关闭。
  2. 在线状态能读取到明确模式或故障。
  3. CatST 无法绕过安全层。

9. 通信扩展测试

启用 CatST-Comm 时必须验证:

  1. 通信输入过程映像在扫描边界稳定。
  2. CatST 写通信输出映像不阻塞扫描。
  3. 通信超时映射到 S/E 或扩展状态。
  4. CANopen/EtherCAT 状态字别名类型正确。
  5. 通信掉线时安全策略生效。
  6. 快速通信任务不会破坏普通扫描一致性。

10. 中断模型测试

必须验证:

  1. CatST 不能声明 INTERRUPT、ISR 或 HAL 回调。
  2. Runtime ISR 不执行 UserLogic_Scan()
  3. L 锁存位在短脉冲场景下不丢事件。
  4. HSC 高速计数值在扫描边界读取一致。
  5. CAP 捕获值多字节读取不撕裂。
  6. 扫描期间新到事件不会被清除策略误清。
  7. 中断事件不能绕过安全层直接驱动物理输出。
  8. CatST-Fast 若启用,必须有独立执行时间实测和资源预算。

11. 发布准入

发布前必须满足:

  1. CatST 编译器错误检查 100% 通过。
  2. 生成 C 快照测试 100% 通过。
  3. Runtime 功能测试 100% 通过。
  4. 下载失败保护测试 100% 通过。
  5. 安全输出关闭场景 100% 通过。
  6. 至少一个目标板完成实机一致性测试。
  7. 文档、Profile、编译器和 Runtime 版本一致。
  8. 固定 Bootloader + 串口下载 + 在线监控流程完整通过。
  9. 中断事件映像和禁止用户 ISR 测试通过。