具有代码模块和 Simulink 模块的模型的覆盖率
此示例显示如何记录包含代码模块和其他 Simulink® 模块组合的模型的覆盖率。
该模型是一个巡航控制系统,由测试用例和来自 Signal Editor 模块的输入信号组成。来自信号编辑器的信号作为 Stateflow® 图 ComputeTargetSpeed
的输入,用于启动或关闭巡航控制系统并设定目标速度 tspeed。
配置模型以记录覆盖率
在 Simulink 编辑器中,选择建模 > 模型设置。在代码生成窗格中,将目标选择菜单中的系统目标文件设置为 ert.tlc
。在代码生成窗格的验证选项卡中,将 SIL 或 PIL 的代码覆盖率参数设置为 None (use Simulink Coverage)
。
点击 RejectDoublePress
模块以打开 S-Function Builder 模块。在 S-Function Builder 选项卡中,点击编译下方的箭头并选择启用覆盖率支持。要构建 S-Function,点击编译。
请注意,要构建 S-Function,必须安装编译器。有关各种平台支持的编译器的更多信息,请参阅支持和兼容的编译器。
记录覆盖率
Signal Editor 模块由八个信号组组成,每组有五个信号。在此示例中,您仿真所有信号组并记录覆盖率。
在 Simulink® 工具条中,点击仿真 > 准备 > 多重仿真。在多个仿真窗格中,点击文件夹图标,然后在选择要打开的文件对话框中,选择 slvnvdemo_doublepress_sfun_ds.mldatx
。在仿真选项卡中,点击全部运行(覆盖率)。在仿真结束时,覆盖率结果浏览器将打开,显示最新覆盖率分析的结果。模型中的模块以不同的颜色突出显示,对应于每个模块所达到的覆盖率级别。
通过生成覆盖率报告来审查结果
覆盖率结果浏览器提供了多种显示和报告覆盖率结果的选项。在左侧窗格的当前累积数据选项卡中选择 Not_Engaged_with_Enable
组。点击覆盖率结果浏览器底部的生成报告链接来生成 HTML 覆盖率报告。覆盖率报告列出了 Simulink 模型模块的模型覆盖率和代码模块的代码覆盖率。向下滚动以查看覆盖率报告中 S-Function 模块的覆盖率度量。点击详细报告链接打开 S-Function 模块的代码覆盖率报告。有关 S-Function 模块的代码覆盖率报告的更多详细信息,请参阅查看 S-Function 模块中自定义 C/C++ 代码的覆盖率结果。
申述缺失覆盖率
在此示例中,您可以通过创建覆盖率过滤器来申述一个输入信号组的覆盖率。在通过生成覆盖率报告审查结果中创建的 S-Function 模块的代码覆盖率报告中,向下滚动到决策/条件 2.1 !(CoastSetSwIn[0] && AccelResSwIn[0])
。对于当前测试用例来说,此条件永远不会是 False
。
点击此条件的详细结果下的申述或排除链接。覆盖率结果浏览器的过滤器选项卡打开,并添加了过滤此转移的规则。将此规则的模式更改为 Justified
并输入理由描述,例如 expression cannot be false
。点击应用以应用更改。
点击应用后,生成报告链接变为可用。点击链接即可生成包含更新的覆盖率过滤器的报告。RejectDoublePress
S-Function 模块的新代码覆盖率报告在从覆盖率分析中过滤的对象下列出了排除的条件。条件 !(CoastSetSwIn[0] && AccelResSwIn[0])
的详细结果表明,该条件的缺失覆盖率已申述。报告覆盖率百分比时,已对齐的对象被视为满足要求,并在覆盖率摘要中显示为浅蓝色。
有关覆盖率过滤器的更多信息,请参阅覆盖率过滤。