CatST TestPlan:编译器、Runtime、协议与实机一致性验证¶
本文档定义 CatST 独立文档集合对应的验证要求。测试目标是证明 CatST 程序从文本、AST、生成 C、PC 仿真到 STM32 实机运行语义一致,并且不会破坏 Runtime 安全边界。
1. 测试目标¶
必须验证:
- CatST 词法、语法、语义和安全检查正确。
- 变量区、权限、越界和 Profile 剪裁正确。
- 定时器、计数器、边沿检测语义一致。
- 生成 C 不包含禁止行为。
- AST 仿真、生成 C 仿真和 STM32 实机结果一致。
- 下载失败不导致危险输出。
- STOP、ERROR、DOWNLOAD、急停等状态下输出关闭。
- 在线变量和协议权限正确。
- 固定 Bootloader 固化后,现场不使用 J-Link 也能完成下载、监控和恢复。
- Runtime 中断事件映像可被 CatST 稳定读取,且 CatST 不能声明用户 ISR。
2. 编译器测试¶
必须覆盖:
- 合法赋值。
- 合法 IF/ELSIF/ELSE。
- 嵌套 IF。
- CASE 状态机。
- 逻辑表达式优先级。
- 比较运算。
- 整数运算。
- 溢出保护。
- 除以 0 保护。
- TIME 格式。
- TON/TOF/TP。
- CTU/CTD。
- R_TRIG/F_TRIG。
- VAR_ALIAS 权限继承。
- 只读变量写入错误。
- 越界变量错误。
- 禁止 WHILE/REPEAT 错误。
- 默认禁止 FOR,Safe Profile 下受限 FOR 正确。
- Safe Profile 下索引访问
X[i]、Y[i]、M[i]、D[i]静态越界检查正确。 - 函数参数数量错误。
- 函数参数类型错误。
- 同一 T/C 实例同一扫描多次更新错误。
- 资源预算超限错误。
- 生成 C 快照测试。
- 用户中断语法禁止测试。
3. 资源和 Profile 测试¶
每个 Profile 必须覆盖:
- X/Y/R/M/D/T/C 边界下限和上限。
- 被剪裁资源访问报错。
- 补全列表与 Profile 一致。
- 仿真器初始资源与 Profile 一致。
- 生成 C 的数组/API 索引不越界。
- F103_LITE Flash/RAM 预算检查。
- 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 必须检查:
- 只包含允许 include。
- 只生成固定入口。
- 不包含
malloc、free、文件操作。 - 不包含 HAL/GPIO/UART/Flash 直接访问。
- 不包含无界循环。
- 整数除法使用安全 helper。
- 输出映像访问受控。
- 代码格式稳定,支持快照测试。
6. 仿真一致性测试¶
测试流程:
一致性样例应覆盖:
- 启停联锁。
- 延时启动。
- 延时断开。
- 脉冲输出。
- 计数到达。
- 状态机。
- 急停安全覆盖。
- 通信超时状态。
- 输入短脉冲锁存。
- 高速计数到达。
- 捕获值有效和溢出。
7. 协议和下载测试¶
协议测试:
- GET_DEVICE_INFO。
- GET_STATUS。
- SET_MODE_STOP。
- SET_MODE_RUN。
- READ_VARIABLES。
- WRITE_VARIABLES。
- 只读区域写入返回错误。
- 非法索引返回错误。
- CRC 错误。
- 序号错误。
- 超时和重试。
下载测试:
- 正常下载。
- 下载前强制 STOP。
- 下载中断。
- 单包 CRC 错误。
- 整体 App CRC 错误。
- Flash 写失败。
- 下载成功后默认 STOP。
- 下载失败旧程序保护。
- 不使用 J-Link 的串口下载全流程。
- Bootloader 兜底入口恢复下载。
- Bootloader 不支持现场自升级或默认关闭该能力。
8. 安全测试¶
以下场景必须验证物理输出关闭:
通过标准:
- Y/R 物理输出关闭。
- 在线状态能读取到明确模式或故障。
- CatST 无法绕过安全层。
9. 通信扩展测试¶
启用 CatST-Comm 时必须验证:
- 通信输入过程映像在扫描边界稳定。
- CatST 写通信输出映像不阻塞扫描。
- 通信超时映射到 S/E 或扩展状态。
- CANopen/EtherCAT 状态字别名类型正确。
- 通信掉线时安全策略生效。
- 快速通信任务不会破坏普通扫描一致性。
10. 中断模型测试¶
必须验证:
- CatST 不能声明
INTERRUPT、ISR 或 HAL 回调。 - Runtime ISR 不执行
UserLogic_Scan()。 - L 锁存位在短脉冲场景下不丢事件。
- HSC 高速计数值在扫描边界读取一致。
- CAP 捕获值多字节读取不撕裂。
- 扫描期间新到事件不会被清除策略误清。
- 中断事件不能绕过安全层直接驱动物理输出。
- CatST-Fast 若启用,必须有独立执行时间实测和资源预算。
11. 发布准入¶
发布前必须满足:
- CatST 编译器错误检查 100% 通过。
- 生成 C 快照测试 100% 通过。
- Runtime 功能测试 100% 通过。
- 下载失败保护测试 100% 通过。
- 安全输出关闭场景 100% 通过。
- 至少一个目标板完成实机一致性测试。
- 文档、Profile、编译器和 Runtime 版本一致。
- 固定 Bootloader + 串口下载 + 在线监控流程完整通过。
- 中断事件映像和禁止用户 ISR 测试通过。