收集测试覆盖率
覆盖率是指通过分析模型的运行程度来确定模型和生成的代码的测试完整性。要使用 Simulink® Test™ 测试管理器或 sltest.testmanager.CoverageSettings
收集覆盖率,您必须安装 Simulink Coverage™。虽然您仅使用 Simulink Coverage 即可设置和运行测试用例,但 Simulink Test 提供了额外的测试创建和测试管理功能。对于启用了覆盖率收集的测试,测试管理器在结果中包含您选择收集的每个度量的覆盖率。如果您安装了 Requirements Toolbox™,您还可以使用测试管理器来验证覆盖率结果是否追溯到特定需求。
注意
支持模型参考模块、原子 Subsystem 模块以及为软件在环 (SIL) 或处理器在环 (PIL) 配置的顶层模型的覆盖。子系统中的 SIL 或 PIL 模型不支持覆盖。
有关在测试框架中收集覆盖率时的注意事项的信息,请参阅 测试框架与模型关系 中的测试框架注意事项。
使用测试管理器设置覆盖率收集
在测试管理器中,您可以启用覆盖率并选择测试文件级别的覆盖率度量。测试套件和测试用例从测试文件继承覆盖率设置。您可以关闭单个测试套件和测试用例的覆盖率收集。但是,您无法关闭基于 MATLAB® 的 Simulink 测试的测试套件或测试用例级别的覆盖率。有关基于 MATLAB 的 Simulink 测试的信息,请参阅 使用基于 MATLAB 的 Simulink 测试的测试模型。
注意
测试管理器使用其覆盖率设置,而不是模型配置参数中的覆盖率设置。
设置测试管理器以包含覆盖率收集:
为您的模型创建一个测试文件并设置一个测试用例。
选择测试文件并展开覆盖率设置部分。在要收集的覆盖率下,选择覆盖率:
记录在测系统的覆盖率 — 收集模型的覆盖率,或(如果包含)收集每个测试用例的 在测系统 部分中指定的组件的覆盖率。如果您正在使用测试框架,在测系统就是为其创建框架的组件。测试框架不是在测系统。
对于模块来说,在测系统就是整个模块。
对于 Model 模块,在测系统是参考模型。
对于一个子系统来说,在测系统就是该子系统。
记录引用模型的覆盖率 — 收集在指定的在测系统中引用的模型的覆盖率。如果测试框架引用另一个模型,那么也包括该模型的覆盖率结果。
所选的覆盖率设置从测试文件传播到测试文件中的测试套件和测试用例。
或者,要添加或删除现有的覆盖率过滤器文件,请分别点击“覆盖率过滤器”部分中的添加或删除,然后选择过滤器文件。可以同时应用多个过滤文件。
选择要收集的覆盖率度量。有关度量的信息,请参阅 模型覆盖的类型 (Simulink Coverage) 和 接受覆盖的模型对象 (Simulink Coverage)。
运行测试。收集测试文件中测试套件和测试用例的覆盖率。
要关闭测试套件或测试用例的覆盖率收集,请选择该测试套件或测试用例,然后取消选择要收集的覆盖率选项。要关闭一种或多种类型的覆盖率收集,请从覆盖率度量部分取消选择它们。对于基于 MATLAB 的 Simulink 测试,您只能在测试文件级别更改覆盖率收集和覆盖率度量。
在测试管理器中查看覆盖率结果
查看聚合覆盖率结果和度量
收集覆盖率后,使用测试管理器中的结果和工件窗格查看结果。所有测试用例的覆盖率结果汇总在结果集中报告。过滤后的覆盖率结果仅显示在结果级别,而不显示在测试文件、测试套件或测试用例级别。分析过滤后的覆盖率结果时,在结果级别查看它们可以提供整体覆盖率信息。例如,如果特定测试用例的覆盖率低于 100%,则缺失的覆盖率可能会包含在不同的测试用例中。
在窗格中选择一个结果项目并展开聚合覆盖率结果部分。显示每个度量的覆盖率百分比,颜色汇总覆盖率结果。
深蓝色——满意的覆盖率
红色——不满意的覆盖率
浅蓝色 — 已申述的覆盖率
要将不同测试文件的结果汇总到单个结果集中,请在结果和工件列表中选择单独的结果。然后,从上下文菜单中选择合并覆盖率结果。包含组合覆盖率结果的结果集出现在列表中。
限定基于需求的测试的覆盖率
对于基于需求的设计和测试,例如为了符合 DO-178B,启用将覆盖率结果限定为链接需求来检查您的模型设计是否正在执行需求,以及测试是否正在验证这些需求。需要 Simulink Coverage 和 Requirements Toolbox 许可证。仅当结果集包含多个仿真(如多个测试用例或迭代)时,此选项才可用。
当选中将覆盖率结果限定为链接需求复选框时,覆盖率结果仅包括与需求直接相关且经过明确测试的测试。汇总结果会自动更新,无需重新仿真模型。如果您的测试涉及模型组件但与需求没有直接关联,则当您启用范围界定时,您的聚合覆盖率结果百分比可能会降低。为了获得 100% 满足您需求的覆盖率,您可能需要更新测试、添加需求链接、对某些项进行申述或从覆盖率排除某些项。
将覆盖率结果追踪至模型
要从测试管理器中的测试覆盖率结果导航到模型,点击聚合覆盖率结果表中的模型名称。
模型打开,其覆盖率报告在模型窗口的覆盖率详细信息窗格中打开。在这个示例模型中,模型元素显示为红色,因为它们的覆盖率低于 100%。
指向模型元素即可查看其度量和模块执行的摘要。
单击模型元素即可滚动到“覆盖率详细信息”窗格中的详细覆盖率结果信息。
创建覆盖率报告
要创建模型覆盖率报告,点击聚合覆盖率结果表的报告列中的箭头。
添加缺失覆盖测试
如果您拥有 Simulink Design Verifier™ 许可证,您可以生成额外的测试用例来增加模型的覆盖率。
在测试管理器中,
在测试管理器中,选择结果和工件窗格。
选择您想要获得更多覆盖率的结果项目。
在右侧窗格中的聚合覆盖率结果部分中,选择表中覆盖率不完整的行。
在聚合覆盖率结果部分的底部,点击针对缺失覆盖率添加测试。
在“添加缺失覆盖率测试”对话框中,
框架 — 选择是否使用现有框架或创建新框架
源 — 选择框架输入的来源。如果您使用现有的框架,则源字段是只读的。
测试用例 — 选择是否使用现有的测试用例或创建新的测试用例。如果创建新的框架,唯一的选择就是使用新的测试用例。
测试类型 — 选择新测试用例要使用的测试类型。如果您选择创建新的框架或新的测试用例,则会显示此字段。
测试文件 — 选择是否使用现有测试文件或创建新的测试文件。如果您选择创建新的框架或新的测试用例,则会显示此字段。
位置 — 如果选择创建新的测试文件,请指定测试文件的路径和名称。
单击确定生成添加缺失覆盖率范围的测试用例。
如果您创建了新的测试用例或新的框架,请在测试浏览器窗格中将该测试用例拖放到包含原始测试用例的测试套件中。
重新运行测试套件。
有关如何在测试管理器中增加测试覆盖率的完整示例,请参阅 增加模型的测试覆盖率。
您也可以通过使用 sltest.testmanager.addTestsForMissingCoverage
和 sltest.testmanager.TestOptions
以编程方式创建并使用测试来增加覆盖率。
使用测试管理器进行覆盖率过滤
覆盖率过滤器规则指定要从覆盖率收集中排除的一个或多个模型对象或一行或多行生成代码,或者您想要对其覆盖率结果进行申述。一个过滤文件中包含一组覆盖率过滤规则,可以应用于被测试的模型或代码。您可以将多个过滤文件应用于一个测试,也可以为不同的模型重复使用过滤文件。当您应用新的或更新的过滤器时,结果集显示的聚合覆盖率结果会自动更新。您不必重新仿真您的模型。有关更多信息,请参阅 覆盖率过滤 (Simulink Coverage)。
要查看过滤后的覆盖率结果,请在结果和工件窗格中选择一个结果集(即结果项)。
从测试管理器中,您可以:
添加或删除现有的覆盖率过滤器文件 — 在测试浏览器窗格中,选择测试文件并展开覆盖率设置部分。单击覆盖率过滤器或应用的覆盖率过滤器表底部的添加或删除,然后分别选择要添加或删除的覆盖率过滤器文件。可以将多个覆盖率过滤文件应用于覆盖率结果。
编辑或创建过滤器文件、定义过滤器规则以及申述或排除覆盖率— 从模型的覆盖率报告或覆盖率详细信息窗格中,通过单击申述图标 或
Justify or Exclude
链接打开 Simulink Coverage 过滤器编辑器。当过滤器编辑器打开时,测试管理器被锁定。当您关闭过滤器编辑器时,测试管理器将被启用,并且结果和应用的过滤器列表将根据您的更改进行更新。有关使用过滤器编辑器的信息,请参阅 创建和使用覆盖率过滤器 (Simulink Coverage) 和 创建、编辑和查看覆盖率过滤规则 (Simulink Coverage)。将当前应用的覆盖率过滤器附加到测试文件 — 单击更新测试文件。
查看覆盖率结果 — 在结果和工件窗格中选择一个结果项目并展开聚合覆盖率结果部分。
有关覆盖率过滤器、规则和文件的更多信息,请参阅 分析覆盖率并查看结果 (Simulink Coverage) 中的覆盖率过滤主题。
另请参阅
sltest.testmanager.CoverageSettings
| sltest.testmanager.addTestsForMissingCoverage
| sltest.testmanager.TestOptions
相关主题
- 分析覆盖率并查看结果 (Simulink Coverage)
- 接受覆盖的模型对象 (Simulink Coverage)
- 执行功能测试并分析测试覆盖率
- 基于需求的测试的测试覆盖率
- 评估基于需求的测试的覆盖率结果 (Simulink Coverage)
- 追踪覆盖率结果是否符合需求 (Simulink Coverage)
- Verify Requirements by Using Tests (Requirements Toolbox)
- 添加缺失覆盖测试
- 使用基于 MATLAB 的 Simulink 测试收集覆盖率