使用 Simulink Test 管理器过滤模型覆盖率结果
本示例展示了使用 Simulink Test™管理器将覆盖率过滤器应用于覆盖率结果的多种方法,以及如何将现有的覆盖率过滤器应用于测试套件的后续运行。有关不使用 Simulink Test 管理器的覆盖率过滤示例,请参阅 创建和使用覆盖率过滤器。
slvnvdemo_covfilt 示例模型包含从覆盖率结果中过滤出的常见模式示例。

特别是,Stateflow®图 Mode Logic 包含无法达到的覆盖率结果的逻辑。

当图使用 C 作为操作语言时,Simulink Coverage 会报告 tick 事件的决定,该决定永远不会为假。
打开测试管理器并加载测试
打开测试管理器,然后加载并运行测试文件。
sltest.testmanager.view;
testFile = sltest.testmanager.load("covfilt-tests.mldatx");
testResults = run(testFile);过滤覆盖率结果
要过滤覆盖率结果,您可以加载一个或多个现有过滤器,创建新过滤器,或使用 Simulink Design Verifier™创建过滤器规则。如果您已经有一个过滤器文件,并且想要将其应用于所有未来的测试运行,则必须在测试浏览器窗格中应用它,而不是在结果和工件窗格中应用。
加载覆盖率过滤器
接下来,加载覆盖率过滤器。在测试管理器中,在结果和工件窗格中,点击结果。在覆盖率过滤器部分,点击添加。在打开对话框中,选择 Filter_Tick.cvf 并点击打开。
Filter_Tick.cvf 文件包含 Stateflow®tick 事件的排除过滤器。滴答事件永远不会为假,因此它是无效逻辑,可以从覆盖率结果中排除。
创建过滤器文件并申述覆盖率
打开模型并突出显示覆盖率。在测试管理器中,在结果和工件窗格中,点击结果。在汇总覆盖率结果部分,点击slvnvdemo_covfilt。
在模型的覆盖率详细信息窗格中,滚动到详细信息部分,然后向下滚动到子部分逻辑模块逻辑运算符。在分析的条件表中,真列中,点击添加对齐规则图标。在选择覆盖率过滤器对话框中,选择创建新过滤器文件,然后点击 OK。Simulink Coverage 创建一个新的未命名过滤器文件,并为 Logical Operator 模块的真实结果添加规则。在过滤器编辑器中,将名称字段设置为 covFilterTestManager。在过滤器规则下的理由列中,将理由设置为 Not relevant,然后点击应用。在保存过滤器对话框中,将过滤器文件的文件名设置为 covFilterTestManager。
使用 Simulink Design Verifier™为失效逻辑创建理由规则
在某些情况下,缺少覆盖率是由于逻辑失效,导致相关的覆盖率目标无法达到。您可以使用 Simulink Design Verifier 来识别无法达到的覆盖率目标,方法是点击覆盖率报告的缺失模型覆盖率分析部分中的链接。有关详细信息,请参阅识别并解决由死逻辑导致的覆盖率缺失问题。。
在测试管理器中查看过滤后的覆盖率结果
关闭过滤器资源管理器。在测试管理器中,特定测试运行的覆盖率结果部分不会更新以显示过滤后的结果。相反,点击其父级结果。在覆盖率过滤器部分,检查该部分是否包含过滤器。如果缺少任何一项,点击添加并选择它们。

汇总覆盖率结果部分显示一个表格,其中包含当前结果集中每个模型的覆盖率结果。在这个示例中,测试用例分析了决策覆盖率、条件覆盖率和执行覆盖率。蓝色表示覆盖率范围已满足,红色表示覆盖率范围未满足,青色表示覆盖率范围已满足。覆盖率过滤器部分显示已应用过滤器的列表,您可以通过单击添加和删除按钮来添加或删除过滤器文件。更新测试文件按钮会更改用于生成当前结果的测试文件,以便在以后的运行中应用显示的过滤器条件。
将覆盖率过滤器文件应用于后续运行
如果在运行测试后应用过滤器,则聚合覆盖率结果会更新以反映过滤后的覆盖率结果,但如果您重新运行测试,Simulink Test 不会自动应用您的过滤器。有两种方法可以确保以后的运行应用过滤器。您可以使用结果视图中的更新测试文件按钮,或者您可以手动编辑测试文件。
在测试管理器中,点击测试浏览器,然后点击测试文件 covfilt-tests。在右侧窗格中,点击覆盖率设置展开该部分。在覆盖率过滤器部分,您可以添加或删除覆盖率过滤器,以将这些过滤器应用于使用此测试文件运行的所有未来测试。如果您从结果视图中点击更新测试文件,您将在此处看到两个过滤器。

另请参阅
slcoverage.Filter | slcoverage.FilterRule