Main Content

执行功能测试并分析测试覆盖率

功能测试从基于需求构建测试用例开始。这些测试可以涵盖设计的关键方面,并验证各个模型组件是否满足需求。测试用例包括输入、预期输出和验收标准。

通过在测试套件中收集各个测试用例,您可以系统地运行功能测试。为了检查回归,请在测试用例中添加基线标准,并以迭代方式测试模型。覆盖率测量反映这些测试覆盖模型运行范围的程度。覆盖率测量还可以帮助您添加测试和需求,以满足覆盖率目标。

Functional testing workflow

使用测试用例生成逐步增加测试覆盖率

此示例说明如何对巡航控制模型执行基于需求的测试。这些测试链接到需求文档。您执行下列操作:

  1. 运行测试。

  2. 使用 Simulink® Coverage™ 确定测试覆盖率。

  3. 使用通过 Simulink Design Verifier™ 生成的附加测试来增加覆盖率。

  4. 报告结果。

打开测试框架和模型

  1. 打开工程:

    openExample("shared_vnv/CruiseControlVerificationProjectExample");
    pr = openProject("SimulinkVerificationCruise");

  2. 打开模型和测试框架。在命令行中输入:

    open_system simulinkCruiseAddReqExample
    sltest.harness.open("simulinkCruiseAddReqExample","SafetyTest_Harness1")
  3. Test Model Against Requirements and Report Results (Simulink Test)加载测试套件,并打开 Simulink 测试管理器。

    pf = fullfile(pr.RootFolder,"tests","slReqTests.mldatx");
    tf = sltest.testmanager.TestFile(pf);
    sltest.testmanager.view

  4. 打开 Test Sequence 模块。序列验证系统在出现以下任一情况时不啮合:

    • 踩下制动踏板。

    • 速度超限。

测量模型覆盖率

  1. 在 Simulink 测试管理器中,选择 slReqTests 测试文件。

  2. 要启用覆盖率收集,请在右侧页中的覆盖率设置下执行以下操作:

    • 选择记录引用模型的覆盖率

    • 使用覆盖率过滤器文件名指定覆盖率过滤器。

    • 选择 DecisionConditionMCDC

  3. 点击测试管理器工具条上的运行

  4. 测试完成后,选择结果。该测试实现了 50% 的决策覆盖率、41% 的条件覆盖率和 25% 的 MCDC 覆盖率。

    Coverage results

生成测试以增加模型覆盖率

  1. 使用 Simulink Design Verifier 生成附加测试以增加模型覆盖率。在 Results and Artifacts 中,选择 slReqTests 测试文件,并打开位于右窗格中的 Aggregated Coverage Results 部分。

  2. 右键点击测试结果,然后选择 Add Tests for Missing Coverage

  3. Harness 下,选择 Create a new harness

  4. 点击 OK 以使用 Simulink Design Verifier 向测试套件添加测试。待测模型必须在MATLAB® 路径上或者在工作文件夹中。

  5. 在测试管理器工具条中,点击 Run 以执行更新后的测试套件。测试结果现在包含新增的测试用例输入的覆盖率,实现了更高的模型覆盖率。

您也可以通过使用 sltest.testmanager.addTestsForMissingCoverage (Simulink Test)sltest.testmanager.TestOptions (Simulink Test) 以编程方式创建并使用测试来增加覆盖率。

相关主题