主要内容

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

在模型测试仪表板中监控底层测试结果

本示例展示了如何使用底层测试来解决已实现覆盖率的不足,以及如何监控单元边界测试占整体已实现覆盖率的百分比。

  • 低级测试是一种模型测试,它只测试单元的子元素。子元素包括原子子系统、原子子系统引用、原子 Stateflow® 图、原子 MATLAB 功能块和引用模型。例如,如果您的测试只测试单元内的原子子系统,那么该测试就是低级测试。

  • 单元边界测试是一种测试整个单元的模型测试。

您可以同时使用单元边界测试和底层测试来实现覆盖率。运行单元边界测试时,测试可以访问单元设计的整个上下文。运行底层测试时,您只会测试单元的一部分。如果您的整体测试覆盖率中很大一部分来自底层测试,那么您可能需要通过使用单元边界测试来扩大测试范围。

本示例使用 Simulink® Check™、Simulink Test™ 和 Simulink Coverage™。

打开工程仪表盘

1.打开一个包含模型和测试工件的工程。对于此示例,在 MATLAB® 命令行窗口中输入:

openProject("cc_CruiseControl");

2.打开仪表板窗口。在工程选项卡上,点击模型测试仪表板

3.点击工具栏仪表板库中的模型测试,打开模型测试仪表板。

仪表板会打开单元 cc_ControlMode模型测试选项卡。

运行单元边界测试并识别模型覆盖率差距

对整个单元运行测试,并使用模型测试仪表板收集模型覆盖率的度量结果。

1.打开与单元 cc_ControlMode 关联的测试文件。在模型测试仪表板的工件面板中,展开测试>单元测试文件夹,然后双击文件 cc_ControlMode_Tests.mldatx

该文件包含三个测试套件:

  • Control Mode Unit Tests - 原子子系统 Control_Mode_StateMachine 的测试

  • Target Speed Unit Tests - 原子子系统 Target_Speed_Calculator 的测试

  • Combined Tests - 单元 cc_ControlMode 的测试

2.右键点击组合测试,然后点击运行,运行测试套件 Combined Tests。测试套件包含测试用例 Idle,它是单元 cc_ControlMode 的单元边界测试。

3.要刷新模型覆盖率小组件并查看模型覆盖率结果,请在测试管理器工具栏中点击模型测试仪表板,然后点击仪表板警告横幅上的收集按钮。

4.通过将指针指向模型覆盖率子部分中的执行栏,即可查看单元已实现的执行覆盖率。

根据该单元边界测试的结果,所达到的执行覆盖率为 38.2%。

5.要查看单元边界测试的总体执行覆盖率,请将光标指向单元边界测试部分中已实现覆盖率下的执行栏。

由于您只执行了单元边界测试,Idle,因此 100% 的总体执行覆盖率来自单元边界测试。

利用底层测试来解决覆盖率差距问题

运行低级测试,并使用模型测试仪表板观察模型覆盖率的提高情况。

1.在测试管理器中,点击测试浏览器

2.右键点击目标速度单元测试,然后点击运行,运行测试套件 Target Speed Unit Tests

3.在模型测试仪表板中,点击警告横幅或工具栏上的收集按钮以刷新模型覆盖率小组件。在模型覆盖率部分,汇总的模型覆盖率现在包括测试套件 Target Speed Unit Tests 中低级测试的结果。

请注意,只有在之前运行过单元边界测试的情况下,才能收集低级测试的聚合覆盖率。由于低级测试无法测试整个单元,因此仪表板无法计算仅有低级测试结果的单元的汇总覆盖率。单元边界测试必须在模型上执行,而不是通过对模型代码进行软件在环 (SIL) 或处理器在环 (PIL) 仿真来执行。

对于本例,如果没有测试套件 Combined Tests 的测试结果,就无法计算聚合覆盖率。测试套件 Control Mode Unit TestsTarget Speed Unit Tests 仅包含底层测试,因此无法测试整个单元。

4.查看该单元已实现的执行覆盖率。在模型覆盖率部分,指向执行栏中已达到的覆盖率。

测试套件 Target Speed Unit Tests 中的单元边界测试和低级测试的结果使执行覆盖率提高到 47.1%。

5.查看单元边界测试占总执行覆盖率的百分比。在已实现覆盖率小节的单元边界测试下,指向执行栏。

由于您执行了单元边界测试 Idle 和低级测试,现在 81.3% 的总体执行覆盖率来自单元边界测试。

如果运行测试套件 Control Mode Unit Tests,则单元 cc_ControlMode 可实现 100% 的执行、决策和条件覆盖率。但例如,只有 38.2% 的执行覆盖率来自单元边界测试。剩余的 61.8% 的总体执行覆盖率来自底层测试。

测试套件 Control Mode Unit TestsTarget Speed Unit Tests 中的底层测试可以帮助您解决模型覆盖率不足的问题。然而,业界认可的软件开发标准建议使用单元边界测试来确认覆盖率完整性。如果只有一小部分整体覆盖率来自单元边界测试,请考虑修改测试,使其测试整个软件单元的功能,而不仅仅是原子子系统等底层功能。

另请参阅

主题