CAPL 编程系列教程 - 第三十五期 测试模块 (Test Module) - 用例组织与报告描述

CAPL 编程 - 第 35 期:测试模块 (Test Module) - 用例组织与报告描述

目标: 本期在之前 Test Module 基础上,进一步学习如何组织测试模块内的测试用例,以及如何通过 CAPL 函数丰富测试报告的内容,使其更具可读性和信息量。

1. 回顾:测试模块基础

  • 一个 Test Module 关联一个 .can 文件。
  • .can 文件中包含多个用例函数(使用 testcase 关键字定义)。
  • void MainTest() 函数负责调用 testcase 函数,控制执行流程。
  • 测试步骤结果通过 TestStepPass/Fail 记录在报告中。

2. 使用测试组 (TestGroup) 组织测试用例

  • 目的: 当一个 Test Module 包含大量测试用例时(例如,测试一个 ECU 的不同功能),使用测试组可以逻辑地对 testcase 进行分类,提高脚本的可读性和测试报告的结构化程度。
  • 实现方式: 在 MainTest 函数内部,使用以下函数包裹相关的 testcase 调用:
    • TestGroupBegin(char groupID[], char description[])
      • 功能: 标记一个测试组的开始。
      • 参数:
        • groupID: 字符串,测试组的唯一标识符或名称(例如 "Group 1", "Wiper Function Tests")。会显示在报告的层级结构中。
        • description: 字符串,对该测试组目的的详细描述。
    • TestGroupEnd()
      • 功能: 标记当前测试组的结束。
  • 示例用法 (在 MainTest 中):
    Code snippet
    void MainTest()
    {
      TestGroupBegin("Group 1", "Tests for Feature A");
        MyTestCase01(); // Belongs to Group 1
        MyTestCase02(); // Belongs to Group 1
      TestGroupEnd();
    
      TestGroupBegin("Group 2", "Tests for Feature B");
        MyTestCase03(); // Belongs to Group 2
        MyTestCase04(); // Belongs to Group 2
      TestGroupEnd();
      // ...
    }
    
  • 效果:
    • 在 CANoe 的 Test Execution 面板和 Test Report Viewer 中会显示出明确的组结构,便于导航和查看。
    • 支持嵌套(虽然本期未详细展开),可以创建更复杂的层级结构。

3. 丰富测试报告信息

  • 目的: 默认情况下,测试报告中的模块和用例标题可能只是文件名或函数名。通过添加自定义标题和描述,可以使报告更易于理解,提供更多上下文信息。
  • 添加模块信息 (通常在 MainTest 开头调用):
    • TestModuleTitle(char title[])
      • 功能: 设置整个 Test Module 在报告中显示的标题。
      • 示例: TestModuleTitle("BCM Feature Test Suite");
    • TestModuleDescription(char description[])
      • 功能: 为整个 Test Module 添加一段描述性文字,显示在报告的概览部分。
      • 示例: TestModuleDescription("This module tests basic functions of the Body Control Module.");
  • 添加用例信息 (在对应的 testcase 函数内部调用):
    • TestCaseTitle(char testCaseID[], char title[])
      • 功能: 设置单个 testcase 在报告中显示的标题。
      • 参数:
        • testCaseID: 字符串,测试用例的唯一标识符(如 "TC_BCM_001"),会显示在报告中,有助于追溯。
        • title: 字符串,该测试用例的描述性标题。
      • 示例 (在 testcase MyTestCase01() 内): TestCaseTitle("TC01", "Verify Wiper Low Speed");
    • TestCaseDescription(char description[])
      • 功能: 为单个 testcase 添加详细描述,解释测试目的或步骤,显示在报告的用例详情部分。
      • 示例 (在 testcase MyTestCase01() 内): TestCaseDescription("This test checks if the wiper operates correctly at low speed setting.");
  • 效果:
    • 测试报告的对应位置会显示用户指定的中文(或其他语言)标题和描述,取代或补充默认标识符。
    • 报告内容更丰富,更易于团队成员或非技术人员理解测试范围和结果。

4. 实例总结 (来自讲座)

  • 讲座演示了如何将 5 个 testcase 函数分别归入 "Group 1" 和 "Group 2"。
  • MainTest 中调用 TestModuleTitleTestModuleDescription 设置模块信息。
  • 在每个 testcase 函数内部调用 TestCaseTitle (含 ID) 和 TestCaseDescription 设置用例信息。
  • 执行后,展示了 Test Execution 面板和 Test Report Viewer 中如何体现这些分组和自定义的文本信息,使结构和内容更加清晰。

总结: 本期学习了通过 TestGroupBegin/EndMainTest 中组织测试用例,以及通过 TestModuleTitle/DescriptionTestCaseTitle/Description 函数来增强测试报告的可读性和信息量。这些方法对于编写结构清晰、易于理解和维护的大型自动化测试项目至关重要。