Simulink模型覆盖度测试方法(结构测试)
覆盖度是用来表示一个测试用例对模型逻辑结构的所有路径测试的完成程度,适用于对模型进行结构测试的测试用例。一个完整的模型结构测试用例应当对模型或状态机内的每条路径都有唯一的条件进行测试。并且不与其他路径条件发生冲突。
覆盖度的作用对象是模型的测试用例,不是模型对象本身。
一、Simulink自动生成测试用例。
针对被测试的模型编写测试用例,使尽可能的包括所有的输入情况,可以使用Design Verifier 自动生成测试用例,再根据自己的流程对用例进行修改。
自动生成之前,应将所有的输入信号取值范围、参数类型设置好,这样生成的测试用例能更准确。
详细见《基于模型的设计——MCU篇》第443页-454页
二、覆盖度测试
- 模型覆盖测试
模型覆盖通过测量被测试模型被彻底测试的程度,帮助你验证你的模型测试用例,模型覆盖计算测试程序经过一个模型的模拟路径次数多少,模型覆盖是一定程度的说明一个测试案例如何彻底的测试一个模型和测试路径百分率的测度。
- 模型覆盖测试工作方式
模型的覆盖分析以下类型的模型对象的执行情况,直接或间接地通过您的模型确定simulation 路径:
Simulink 块
模型块中引用的模型
Stateflow 的状态和转换
模拟运行期间,该工具记录涵盖对象的行为、状态和转换。 在仿真最终,该工具报告在多大程度上运行行驶过的隐藏仿真路径通过模型的每个覆盖对象。
Verification and Validation程序只能为一个模型采集覆盖如果他的仿真模型设置正常。如果仿真模型设置为除正常外的所有模型,覆盖将在仿真期间不被测量。
3.模型覆盖的类型
1.序复杂性
序复杂性是模型结构复杂性的度量 ,为了计算对象的序复杂性,模型覆盖用下面的公式:
N是对象表示的决策点数,On是第N个决策点的输出数。
2.决策覆盖(DC)
决策覆盖分析模型中表示决策点的要素,比如开关模块或者状态流状态,对于这些项,模型覆盖确定模拟测试时实际通过这些路径的百分率。
3.条件覆盖(CC)
条件覆盖分析组合逻辑(比如逻辑操作)和状态转移,条件覆盖分析报告是否模型中的每个模块被完全覆盖了。
当收集模型覆盖,可能达不到100%的条件覆盖,比如如果确定短路逻辑模块(一种处理方式),就不能达到100%的条件覆盖。
4. 改进条件/决策覆盖(MDCD)
改进的条件/决策覆盖分析扩展了决策和条件覆盖能力,它确定测试实验测试逻辑模块输入和转移条件独立性的程度。
一个测试实验达到模型的完全覆盖,当改变模块的一个独立于其它输入的输入,引起了模块的输出改变。
一个测试实验到到状态流转移的完全覆盖,也就是每个转移条件在一个条件触发时,状态至少转移一次。
MCDC也不保证100%的决策覆盖和条件覆盖。
SIMULINK的一些模块支持MCDC覆盖,一些仅支持条件覆盖,一些仅支持决策覆盖。关于这更细致的MCDC,可以研究一下DO-178B标准。
5. 查询表条件覆盖
查询表覆盖用表实体的输入、输出、内插、外推信息来分析模块,它记录每个内插间隙被使用的频率,要达到完全覆盖,每个内插和外推间隙至少被执行一次。
- 信号范围覆盖
信号范围覆盖是在模拟期间记录模型中没个模块的最大最小值。
7. 信号宽度覆盖
信号宽度覆盖记录可变宽度信号的最大最小值。
- 覆盖范围设置
打开tools—》coverage setting 打开覆盖设置选项卡
Coverage for this model
指示软件手机和报告您在仿真过程中制定的模型覆盖范围。
Select subsystem
指定软件收集和报告覆盖数据的子系统。默认情况下,生成整个模型的覆盖数据。
Coverage for referenced models
记录和报告在仿真过程中的参考模型指定模型覆盖范围。
三、根据测试结果修改模型
自动生成测试用例后运行仿真,观察被测试状态机,当提示手动选择路径时,表示状态机条件有冲突,根据实际情况修改。