CAPL 编程 - 第 34 期:测试模块 (Test Module) 进阶 - Test Setup 环境
目标: 本期继续深入学习 CANoe 中的 CAPL 测试模块 (Test Module),重点介绍在专门的 "Test Setup" 环境中创建、管理和执行测试模块的方法。这被认为是比上一期(第 33 期)在 Simulation Setup 中创建更常用、更规范的企业级实践方式。
1. 回顾与对比
- 上一期方法: 在 CANoe 的 "Simulation Setup" (仿真设置) 窗口中直接插入 CAPL Test Module 节点。这是一种快速入门的方式。
- 本期方法 (标准实践): 使用 CANoe 菜单栏 "Test" 下的 "Test Setup" (测试设置) 环境来集中管理测试资产。
2. Test Setup (测试设置) 环境
- 访问: 通过 CANoe 菜单栏 -> Test -> Test Setup 打开。
- 目的: 提供一个独立于总线仿真配置的、专门用于组织、配置和执行自动化测试的环境。
- 结构: Test Setup 采用层级结构来组织测试:
- Test Environment (测试环境): 顶层容器。
- Test Module (测试模块): 在测试环境下创建,对应一个具体的测试范围或功能模块,关联一个 CAPL 脚本。
- Test Group (测试组): (本期提及,后续可能详述) 在 Test Module 内部,可以创建测试组来进一步分类管理测试用例。
- Test Case (测试用例): 定义在 Test Module 关联的 CAPL 脚本中,并可在 Test Setup 结构中显示。
3. 在 Test Setup 中创建和配置测试模块
- 创建: 在 Test Setup 窗口中,通常在 Test Environment 下右键点击 -> Insert Test Module。
- 配置:
- 选择新创建的 Test Module,在下方的配置区域进行设置。
- Name: 为测试模块命名。
- File: 关联 CAPL 脚本文件 (
.can),同样推荐存放在项目下的Test Modules子文件夹。 - Test Report: 配置报告输出路径和名称,同样推荐使用
Test Reports子文件夹。
- 优势:
- 集中管理: 所有测试相关的配置(模块、脚本关联、报告设置)都在 Test Setup 中完成。
- 更好组织: 层级结构(环境、模块、组)便于管理大型测试项目。
- 关注点分离: 将测试配置与总线仿真配置 (Simulation Setup) 分开,使两者更清晰。
4. 编写测试脚本 (.can 文件)
- 内容不变: 关联到 Test Module 的
.can脚本的编写方式与上一期相同。- 使用
testcase关键字定义测试用例函数。 - 在
testcase中使用TestStepPass()和TestStepFail()来记录步骤结果和描述信息。 - 实现
void MainTest()函数来调用需要执行的testcase,控制执行流程。
- 使用
5. 从 Test Setup 执行测试
- 执行方式:
- 启动 CANoe 测量。
- 在 "Test Setup" 窗口中,选中想要执行的 Test Module、Test Group 或单个 Test Case。
- 点击 "Test Setup" 窗口工具栏中的 "Run" (▶) 按钮,或者使用 "Test" 菜单下的 "Test Execution" 窗口进行控制。
- 区别: 测试的启动和控制转移到了 Test Setup 环境,而不是通过 Simulation Setup 中的节点。
6. 测试报告
- 生成与查看: 测试报告的生成机制、配置方式(在 Test Module 配置中指定)以及查看方式(通过 Test Execution 面板的按钮或直接打开文件)与上一期介绍的方法完全相同。
7. 实例演示 (Bug 修复与验证)
- 场景: 延续上一期的
add函数测试示例。 - 问题回顾: 上一期中,测试用例
TestAdd02尝试测试add(3.2, 5.4),但由于add函数定义为long add(long a, long b),输入参数和返回值被截断为整数,导致测试失败 (实际结果为 8,预期为 8.6)。 - 代码修复: 本期讲座中,将
add函数修改为处理浮点数:double add(double a, double b),并相应调整TestAdd02中的预期结果比较和TestStepPass/Fail中的结果打印格式(使用%f)。 - 测试验证:
- 修改并编译
.can脚本。 - 在 Test Setup 环境中重新运行 Test Module。
- 查看 Test Execution 面板和 Test Report,确认
TestAdd02现在也通过了测试(实际结果为 8.8,符合预期 8.8 - 讲座中输入改为 3.3+5.5)。
- 修改并编译
- 意义: 这个过程演示了自动化测试的核心循环:编写测试 -> 执行测试发现 Bug -> 开发人员修复 Bug -> 重新执行测试验证修复。
总结: 本期重点介绍了在 CANoe 中使用 Test Setup 环境来管理和执行 CAPL Test Module 的标准方法。这种方法提供了更好的组织结构和配置管理,是企业级自动化测试项目的推荐实践。虽然管理方式不同,但测试脚本的核心编写逻辑(testcase, MainTest, TestStepPass/Fail)保持一致。通过实例展示了测试驱动的开发/修复流程。