增加模型的测试覆盖率
通过生成测试输入来增加测试覆盖率。
如果您的测试实现的模型覆盖率不完整,您可以使用 Simulink® Design Verifier™ 生成测试输入来增加覆盖率。这个例子展示了如何增加初始测试用例之外的测试覆盖率。您测量测试用例的初始覆盖率。然后,生成新的测试用例,将其添加到测试套件中,运行测试并检查总体覆盖率。
工作流
此示例使用测试框架测试自动驾驶仪系统的组件。来自基础工作区的时间序列数据被映射到测试框架中的根输入端口。测试文件已配置为收集覆盖率。
示例工作流程如下:
测量初始测试用例的模型覆盖率。
生成额外的测试以实现更大的覆盖率。
将新的测试用例添加到测试文件中。
运行所有测试用例并检查总体覆盖率。
路径和示例文件
设置示例的路径和文件名。
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);
相关主题
- 收集测试覆盖率
- 基于需求的测试的测试覆盖率
- 运行测试套件并解决缺失的模型覆盖率 (Simulink Coverage)
- 生成模型决策覆盖率的测试用例 (Simulink Design Verifier)