系统的Simulink系统测试金宝app®设计确保在生成代码之前,您已经考虑了预期和非预期的行为。在基于需求的模拟测试期间,由于细微的设计错误、不完整的测试或缺少需求,可能无法执行部分设计。模型测试覆盖率通过测量在模拟过程中对Simulink设计的执行程度,帮助您识别测试中的这些差距。金宝app
在基于需求的测试期间,不完整的模型测试覆盖率的一个常见原因是缺少需求。这种类型的模型测试覆盖率的缺失通常是无法追溯到更高层次需求的设计元素的结果。收集模型测试覆盖率可以帮助您考虑这种情况。这篇文章描述了一个例子,在这个例子中,由于缺少需求,三plex选择算法设计的测试是不完整的。
三丛选择算法:概述和要求
三路信号选择算法是航天控制系统软件中常用的算法。在三工信号选择中,从三个独立的传感器中选择一个“投票”信号用于飞机的控制。如果没有检测到该传感器的故障,则该传感器是“有效的”。
对于本例,将选择飞机空速信号。空速信号选择算法的要求如下:
- HLR_1选择三重传感器的空速信号:当三个航速信号有效时,飞行控制计算机选择三个传感器的中值。
- HLR_2双传感器空速信号选择:当仅两个空速信号有效时,飞行控制计算机应选择两个传感器的平均值。
- HLR_3单传感器空速信号选择:当只有一个航速信号有效时,飞行控制计算机应选择有效信号。
图1显示了这些需求的Simulink实金宝app现。
实现算法和收集模型测试覆盖率度量
我们在模型中的专用子系统中实现每个要求,并为每个设计写一个单独的测试用例。在运行这些测试之前,我们需要确保我们捕获模型测试覆盖度量标准。
模型测试覆盖度量可以是个人(收集单个测试)或累积(跨多个测试聚集)。我们将收集跨基于要求的测试的累积覆盖,以衡量我们的全测试套件的锻炼程度。
有许多类型的模型测试覆盖率度量,例如执行覆盖率、决策覆盖率、信号范围覆盖率和关系边界覆盖率。在这个例子中,我们对决策覆盖感兴趣,这是一种结构性覆盖,它度量模型中决策的所有可能逻辑结果的执行。金宝app如果在仿真过程中对开关的所有输入至少选择了一次,那么像Switch块这样的Simulink模型对象将获得完全的决策覆盖。
中使用coverage Analyzer应用程序在模型上启用模型测试覆盖率集合应用程序Simulink To金宝appolStrip的选项卡(图2)。
一旦我们打开覆盖范围Appl应用程序,我们就可以使用覆盖收集报道开/关按钮报道选项卡。的累积覆盖率累积收集按钮。然后,我们使用使用覆盖率模拟模型玩按钮,现在标签分析报道(图3)我们用不同的测试向量在每个模拟中进行多次模拟。
图4显示了所得到的覆盖范围。绿色突出显示表示完整的模型测试覆盖范围,包括每个子系统中的所有模型对象,而红色表示不完整的覆盖范围。
多端口交换机块似乎缺少决策覆盖。要了解为什么发生这种情况,我们通过在Simulink中打开覆盖详细信息窗格来检查各个块的模型测试覆盖详细信息(图5)。金宝app
然后,我们单击MultiPortSwitch块以查看其覆盖详细信息(图6)。
在模拟过程中,多端口开关的第一个输入从未为0。回想一下图1所示的模型,其中Multiport Switch的第一个输入是有效信号的数量。因此,我们没有测试一个没有空速信号有效的案例。
这种缺少的模型测试覆盖率是由于缺少更高级别的要求。无需空速信号有效时,指定应选择哪些信号的要求。但是,似乎设计包括已经为此条件算起的逻辑。
我们添加了这个缺少的要求:
- HLR_4无有效传感器空速信号的选择:当三个航速信号均无效时,飞行控制计算机应持有所选航速信号。
然后,我们添加了一个新的测试用例并重新运行测试。我们现在得到完整的决定覆盖(图7)。
正如这个例子所显示的,模型测试覆盖率是在基于需求的测试中识别缺失需求的可靠方法。您可以使用模型测试覆盖结果来确保设计的正确部分被执行。
不完全模型测试覆盖的另一个常见原因是死的逻辑.死亡逻辑是Simulink模型或状态流的任何部分金宝app®可以在模拟期间永远不会执行的图表,例如无法选择的切换块的输入,或者永远无法被拍摄的状态机中的转换。最佳实践是使用Simulink Design Ver金宝appifier™来分析您的模型,并在编写和执行基于需求的测试之前解决死亡逻辑。您还可以使用Simulink Check™中的模型Slicer功能来改进和调试死亡逻辑。金宝app