Main Content

本页采用了机器翻译。点击此处可查看英文原文。

增加模型的测试覆盖率

通过生成测试输入来增加测试覆盖率。

如果您的测试实现的模型覆盖率不完整,您可以使用 Simulink® Design Verifier™ 生成测试输入来增加覆盖率。这个例子展示了如何增加初始测试用例之外的测试覆盖率。您测量测试用例的初始覆盖率。然后,生成新的测试用例,将其添加到测试套件中,运行测试并检查总体覆盖率。

工作流

此示例使用测试框架测试自动驾驶仪系统的组件。来自基础工作区的时间序列数据被映射到测试框架中的根输入端口。测试文件已配置为收集覆盖率。

示例工作流程如下:

  1. 测量初始测试用例的模型覆盖率。

  2. 生成额外的测试以实现更大的覆盖率。

  3. 将新的测试用例添加到测试文件中。

  4. 运行所有测试用例并检查总体覆盖率。

路径和示例文件

设置示例的路径和文件名。

rollModel = 'RollAutopilotRevised';
testHarness = 'RollReference_LoggedDataTest';
testFile = 'RollRefTest.mldatx';

运行初始测试并审查覆盖率

1.打开该测试文件。

sltest.testmanager.load(testFile);
sltest.testmanager.view;

2.运行测试。在测试浏览器中,突出显示记录的数据和覆盖率测试套件。点击运行

3.测试完成后,在测试结果中,展开覆盖率结果部分。该测试实现了对 Roll Reference 子系统的部分覆盖率。

  • 决策覆盖率:80%

  • 条件覆盖率:70%

  • MCDC 25%

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

针对缺失的覆盖率生成额外的测试。

1.在覆盖率结果下方,点击添加缺失覆盖率测试

2.在添加缺失覆盖率测试对话框中,设置以下选项:

  • 框架: RollReference_LoggedDataTest。这会将新的测试输入映射到现有的测试框架。

  • 测试用例Create a new test case。这将使用生成的测试输入创建一个新的测试用例。

  • 测试类型:Baseline Test。这提供了从模型中捕获用于生成测试的基线数据输出的选项。

  • 测试文件:RollRefTest。这将重新使用现有的测试文件。

3.点击确定。对话框显示测试用例生成的进度。当测试用例生成完成后,测试管理器中会出现一个新的测试用例。

或者,您可以使用 sltest.testmanager.addTestsForMissingCoverage 函数以编程方式添加测试。

运行新的测试用例

1.将新的测试用例拖放到记录数据和覆盖率测试套件中。

2.再次运行记录数据和覆盖率测试套件。

3.仿真完成后,在结果和工件部分中,选择结果集并展开聚合覆盖率结果。测试套件实现完整覆盖率:

  • 决策:100%

  • 条件:100%

  • MCDC:100%

清理

清除变量和测试结果,并关闭模型。

clear reqDoc rollModel testFile testHarness topModel;
sltest.testmanager.clearResults;
sltest.testmanager.close;
close_system('RollAutopilotRevised',0);

相关主题