Simulink覆盖度详解-模型覆盖度

前言

在网上查找了一番关于测试覆盖度的资料,发现大部分都讲的不太清楚。本文参考官方Simulink Coverage User’s Guide结合自己的理解进行一下总结。

模型覆盖度

覆盖度种类

Execution Coverage (EC)

执行覆盖是覆盖的最基本形式。对于每个项目,执行覆盖决定项目是否在仿真期间执行。这个覆盖度选项是必选的,不需要勾选生成的报告里也会带。只要模块执行了,就表示覆盖到了。

Decision Coverage (DC)

决策覆盖分析模型中表示决策点的元素,例如Switch块或statflow状态。对于每个项目,决策覆盖度表示为仿真所遍历的项目与仿真路径总数的百分比

例如:对于一个Switch来说,在测试过程中,true和false都要执行,才可以保证Decision Coverage为100%

决策分析表列出了决策的可能结果,以及结果在每个测试模拟中出现的次数(如上图中的19907)。未发生的结果在表行中以红色高亮显示

Condition Coverage (CC)

条件覆盖分析其输入(例如,logical Operator块)和statflow转换的块的输出逻辑组合。当测试用例使模型中逻辑块的每个实例的每个输入和转换中的每个条件在仿真期间至少一次为真,在仿真期间至少一次为假时,测试用例实现了完全覆盖。条件覆盖分析报告测试用例是否完全覆盖了模型中每个块
例如:下面的条件在仿真过程中都为False,没有一次为True,所以Condition Coverage只有50%

条件分析表列出了对应块的每个输入端口上true和false条件出现的次数。

注意:如果在Simulink Coverage中disableTreat Simulink logic blocks as short-circuited,则该Condition Coverage可能达不到100%.

Treat Simulink logic blocks as short-circuited:

指定覆盖率必须考虑执行逻辑运算的块(例如,逻辑运算符块)中的操作数顺序。

ON:覆盖率分析不考虑由于另一输入而变得冗余的逻辑操作的输入

OFF:覆盖率分析考虑逻辑操作的所有输入

例如,如果考虑到逻辑AND块的两个输入的顺序,则当第一个输入为假时,第二个输入是冗余的。因此,对于第一输入为假的情况,不考虑通向第二输入的路径进行覆盖。按道理应该是需要设置为ON的。

Modified Condition/Decision Coverage (MCDC)

改进的条件/决策覆盖(MCDC)利用Simulink coverage软件,扩展了决策和条件覆盖能力。它分析输出其输入和Stateflow转换的逻辑组合的块,以确定测试用例测试逻辑块输入和转换移条件独立性的程度。

1.当一个输入中的更改(独立于任何其他输入)导致模块输出中的更改时,测试用例实现了模块的完全覆盖

2.当条件中的更改至少有一次触发每个条件的转移时,测试用例实现了statflow转移的完全覆盖。

如果您的模型包含定义表达式的模块,这些表达式具有不同类型的逻辑运算符超过12个条件,软件就不能记录MCDC覆盖率

因为Simulink Coverage MCDC可能无法实现完全的决策或条件覆盖,所以可以在不实现100%决策覆盖的情况下实现100%的MCDC覆盖。见附表

当您为一个模型收集覆盖率时,您可能无法实现100%的MCDC覆盖率。例如,设定了Treat Simulink logic blocks as short-circuited,您可能无法对该块实现100%的MCDC覆盖

MCDC分析表列出了对应块表示的MCDC输入条件用例,以及报告的测试用例覆盖条件用例的程度

MCDC分析表的每一行表示块的特定输入的条件情况。一个模块的输入n的条件是输入值的组合。输入n称为条件情形的决定性输入。单独改变输入n的值会改变模块的输出值

MCDC分析表显示了一个字符串类型的条件表达式(TF):

•字符串中某个字符的位置对应于输入端口号,比如第一个T为第一个输入条件。

•位置上的字符表示输入的值。(T:True;F:False)。

蓝色字符对应决定输入的值

Decision/Condition列为输入条件情况中指定的决定输入True Out列指定决定输入值,该值使模块输出为真值
True Out列使用一个条件表达式(例如FF)来表示块的所有输入的值,其中决定输出的值以粗体显示。

False Out列指定导致模块输出False值的决定性输入值,以及该值是否在报告中包含的第一个(或唯一)测试用例中出现。
表达式中的圆括号表明指定的输入组合没有出现在该报告中包含的第一个(或唯一的)测试用例中。换句话说,测试用例没有覆盖相应的条件用例

如下面的例子:input port2输入条件导致的结果True实现了,但False没实现,所以报告中标为红色。

下面这五条测试用例的由来:保证除决定性输入的条件外的其他条件不变,改变决定性输入的值,实际输出应该为对应的值,例如input port1输入为T,其他为F,期望结果为T,input port1输入为F,其他为F,期望结果为F

如果在“Configuration Parameters”对话框的“ Coverage”窗格中选择“ Treat Simulink Logic blocks as short-circuited ”,MCDC覆盖分析不会验证是否实际发生了短路输入。MCDC分析表在条件表达式中使用x(例如,TFxxx)来表示工具没有分析的短路输入。如果disable此特性,则在收集模型覆盖率时,逻辑块不会短路,那么您可能无法对该模块实现100%的覆盖率

Lookup Table Coverage

查找表覆盖(LUT)检查块,例如1-D查找表模块,它从输入和输出表中的输入输出输出信息,在表条目之间插入或从表条目外推。查找表覆盖记录了表查找使用每个插值间隔的频率。当测试用例至少一次执行每个插值和外推区间时,它就实现了完全覆盖。
对于模型中的每个查找表块,覆盖率报告显示了查找表的彩色地图,指示了每个插值。如果n-D Lookup Table块的断点总数超过150万个,软件就不能记录该块的覆盖率。

仅在仿真开始时配置查找表覆盖率。如果在运行时调整影响查寻表覆盖率的参数,则不会更新受影响块的覆盖率设置。

该覆盖度配置项一般不用勾选.

Signal Range Coverage

信号范围覆盖记录模型中每个块的最小和最大信号值,如在仿真期间测量的。只有具有输出信号的块才能接收信号范围覆盖。

如果模型中的信号总数超过65535,或者模型包含的信号宽度超过65535,则软件无法记录信号范围覆盖率。

该覆盖度配置项一般不用勾选.

Signal Size Coverage

信号大小覆盖记录模型中所有可变大小信号的最小、最大和分配大小。报告中仅包含具有可变大小输出信号的块

如果模型中的信号总数超过65535,或者模型包含的信号宽度超过65535,则软件无法记录信号大小覆盖范围。

该覆盖度配置项一般不用勾选.

Objectives and Constraints Coverage

跟Simulink Design Verifier相关,暂时没有使用过。

Saturate on Integer Overflow Coverage

在选择了Saturate on integer overflow参数的情况下,饱和整数溢出覆盖率检查块,如Abs块。只有选中此参数的块才会在整数溢出覆盖率上接收饱和。

Saturate on integer overflow coverage记录块在整数溢出时饱和的次数。

当块在整数溢出时饱和至少一次,并且至少一次不饱和时,测试用例实现完全覆盖。

这个一般不勾选。因为正常情况下都不会溢出,勾选这个后,覆盖率一般都只有50%。

Relational Boundary Coverage

关系边界覆盖检查具有显式或隐式关系操作的块、状态流图和MATLAB功能块。暂时没有使用过。

Simulink Test中的配置选项

Record coverage for system under test

在测试管理器覆盖率设置中启用或禁用覆盖率收集。对应的UI选项Record coverage for system under test

Record coverage for for referenced models

在测试管理器覆盖率设置中启用或禁用引用模型的覆盖率收集。对应的UI选项是Record coverage for for referenced models.

覆盖度选项

在Testflie中进行勾选

附表

一些Simulink对象支持MCDC覆盖,一些对象只支持条件覆盖,一些对象只支持决策覆盖。
所有的Simulink对象都可以接收到Execution coverage,除了那些没有在model coverage中被工具化的模块:

• Merge Blocks

• Scope Blocks

• Outport Blocks

• Inport Blocks

• Width Blocks

• Display Blocks

模块支持的覆盖度如下表:




若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~
建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 11
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值