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. 要启用覆盖率收集,请在右侧页中的覆盖率设置下执行以下操作:

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

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

    • 选择决策条件MCDC

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

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

    Coverage results

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

  1. 使用 Simulink Design Verifier 生成附加测试以增加模型覆盖率。在结果和工件中,选择 slReqTests 测试文件,并打开位于右窗格中的聚合覆盖率结果部分。

  2. 右键点击测试结果,然后选择针对缺失覆盖率添加测试

  3. 框架下,选择新建框架

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

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

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

相关主题