技术文章和通讯

为什么您应该收集模型测试覆盖率度量

帕特·坎尼(Pat Canny), MathWorks


系统测试你的Simulink金宝app®设计确保您在生成代码之前考虑了预期行为和非预期行为。在基于需求的模拟测试期间,由于细微的设计错误、不完整的测试或缺少需求,可能无法执行部分设计。模型测试覆盖率通过测量在模拟过程中使用了多少Simulink设计,帮助您识别测试中的这些差距。金宝app

在基于需求的测试期间,模型测试覆盖率不完整的一个常见原因是缺少需求。这种类型的缺失模型测试覆盖率通常是无法追踪到更高层次需求的设计元素的结果。收集模型测试覆盖率可以帮助您考虑这种情况。本文描述了一个例子,在这个例子中,由于缺少需求,三重选择算法设计的测试被发现是不完整的。

三重选择算法:概述和要求

三重信号选择算法是航天控制系统软件中常用的一种选择算法。在三重信号选择中,从三个独立的传感器中选择一个“投票”信号,用于控制飞机。如果未检测到传感器故障,则传感器为“有效”。

在本例中,将选择飞机空速信号。空速信号选择算法的要求如下:

  • HLR_1为三传感器选择空速信号:当三个空速信号有效时,飞行控制计算机应选择三个传感器的中间值。
  • HLR_2为双传感器选择空速信号:当只有两个航速信号有效时,飞行控制计算机应选择两个传感器的平均值。
  • HLR_3选择单传感器空速信号:当只有一个空速信号有效时,飞行控制计算机应选择有效信号。

图1显示了这些需求的Simulink实金宝app现。

图1所示。金宝appSimulink实现的空速信号选择算法。

实现算法并收集模型测试覆盖度量

我们在模型中的一个专用子系统中实现每个需求,并为每个需求编写一个单独的测试用例。在运行这些测试之前,我们需要确保我们捕获了模型测试覆盖率指标。

模型测试覆盖率度量可以是单独的(为单个测试收集)或累积的(跨多个测试聚合)。我们将在基于需求的测试中收集累积覆盖率,以衡量我们的完整测试套件执行完整设计的情况。

有许多类型的模型测试覆盖度量,例如执行覆盖、决策覆盖、信号范围覆盖和关系边界覆盖。在本例中,我们对决策覆盖感兴趣,这是一种结构性覆盖,用于衡量模型中决策的所有可能逻辑结果的执行情况。如果在模拟过程中至少选择了一次交换机的所有输入,则Simulink模型对象(如交换机块)将接收完整的决策覆盖。金宝app

我们使用中的coverage Analyzer应用程序在模型上启用模型测试覆盖率收集应用程序选项卡的Simulin金宝appk Toolstrip(图2)。

图2。的应用程序选项卡。金宝app

一旦我们打开覆盖率分析器应用程序,我们可以使用保险范围开/关按钮新闻报道标签。我们还使用累计收款按钮。然后,我们在覆盖启用的情况下使用按钮,现在标记为分析覆盖率(图3)。我们使用每个模拟中使用的不同测试向量进行多次模拟。

图3。覆盖分析器应用程序覆盖收集启用。

图4显示了得到的覆盖率。绿色高亮表示完整的模型测试覆盖率,包括每个子系统中的所有模型对象,而红色表示不完整的覆盖率。

图4。空速信号选择算法测试的覆盖率结果。

Multiport Switch块上的决策覆盖率似乎丢失了。为了理解为什么会发生这种情况,我们通过在Simulink中打开coverage details窗格来检查单个块的模型测试覆盖率细节(图5)。金宝app

图5。打开Simulink覆盖率详细信息窗格金宝app。

然后,我们单击MultiportSwitch块,以查看它的覆盖细节(图6)。

图6。多端口交换机块的覆盖率详细信息窗格。

在模拟过程中,多端口开关的第一个输入从来都不是0。回想一下图1所示的模型,其中多端口开关的第一个输入是有效信号的数量。因此,我们没有测试任何空速信号都无效的情况。

这个丢失的模型测试覆盖率是由于丢失了一个更高层次的需求。当没有空速信号时,没有一个要求指定应该选择哪个信号。然而,设计似乎已经包含了考虑这种情况的逻辑。

我们添加了这个缺失的要求:

  • HLR_4选择无有效传感器的空速信号:当三个空速信号均无效时,飞行控制计算机应保持选定的空速信号。

然后我们添加一个新的测试用例并重新运行测试。现在我们得到了完整的决策覆盖(图7)。

图7。添加新需求后的覆盖率结果。

如本例所示,模型测试覆盖率是在基于需求的测试期间识别缺失需求的可靠方法。您可以使用模型测试覆盖率结果来确保使用了设计的正确部分。

不完全模型测试覆盖率的另一个常见原因是死逻辑.死逻辑是Simulink模型或状态流的任何部分金宝app®在模拟过程中永远不能执行的图表,例如永远不能选择的Switch块的输入,或者永远不能执行的状态机中的转换。最佳实践是在编写和执行基于需求的测试之前,使用Sim金宝appulink Design Verifier™分析模型并解决死逻辑。您还可以使用Simulink Check™中的modelslicer特性来改进和调试死逻辑。金宝app

2019年出版

查看相关功能的文章

查看相关行业的文章