Simulink Design Verifier 中的增强 MCDC 覆盖范围
增强型修正条件/决策覆盖率(MCDC)是修正条件决策覆盖率的扩展。对于测试模块,增强型 MCDC 生成避免下游模块掩盖效应的测试用例,使得测试模块对输出产生影响。
要使用增强型 MCDC覆盖率目标检测测试模块的效果,您可以考虑测试模块的标准模型覆盖率目标,也可以编写自己的自定义测试目标进行分析。有关详细信息,请参阅:
要使用增强型 MCDC模型覆盖率目标生成测试用例,然后分析结果,请参阅增强型 MCDC 分析的基本工作流程。
使用模型覆盖率目标来增强 MCDC 覆盖率
对于给定的测试模块,您可以检测下游模块对模型覆盖率目标的影响。当使用增强的 MCDC模型覆盖率目标生成测试用例时,生成的测试用例可以避免下游模块的掩盖效应。模型覆盖率目标可以在检测站点检测到。
考虑由Switch、Min 和 Max 模块级联组成的这个模型。
为增强 MCDC覆盖率生成的测试用例确保 Switch (Simulink Coverage) 测试模块的决策目标不会被下游的 Min 和 Max 模块掩盖。生成的测试用例确保满足 Min 和 Max 模块的这些非掩蔽条件:
F < D,确保Min模块不会屏蔽Switch输出。
G > E,确保Max模块不会屏蔽Min输出。
Switch模块的决策目标以及 Min 和 Max 模块的非掩蔽条件沿着路径得到满足,并在检测站点 (Out1
) 处被检测到。例如,路径从 Switch
模块的输出信号开始,沿着 Min模块传播,并在 Max模块的输出信号结束(在示例模型中突出显示)。
增强的 MCDC准则可确保更高质量的测试用例,因为测试用例可以在检测站点检测测试模块的模型覆盖率目标的效果。要分析增强 MCDC 分析模型,请参见示例 增强 MCDC 分析的分析模型 。
创建自定义测试目标以增强 MCDC 覆盖范围
增强型 MCDC 考虑在检测站点可检测到的测试模块的默认覆盖率目标。要检查自定义测试目标的可检测性状态,您可以创作模型对象的测试目标,然后执行增强型 MCDC 分析。
考虑这个由 Product模块和 Min模块组成的模型。Product模块没有覆盖率目标。
您可以为 Product模块编写自定义测试目标,以使输出值小于0
,并在检测站点检测自定义测试目标的效果。
编写自定义测试目标的步骤
此工作流程描述了为模块创作自定义测试目标的步骤。
步骤 1:创建一个原子掩码子系统库来编写自定义测试目标。掩蔽子系统由以下模块组成:
正在考虑的模块,例如 Product模块。
对自定义测试目标进行编码的逻辑,例如 MATLAB Function模块。
Simulink® Design Verifier™ Test Objective 模块。
第 2 步:在掩蔽子系统中:
添加
isEnabledForDetectability
参数,并将参数设置为On
。添加
detectBlock
参数,其中包含所考虑的模块的名称。将
detectBlock
参数的Evaluate
属性设置为Off
。
步骤 3:定义模块替换规则,用屏蔽子系统替换所考虑的模块。
要编写自定义测试目标,请使用blkrep_rule_product_customTestObjective.m
模块替换规则示例文件。在模块替换文件中,您可以根据模型模块更新rule.BlockType
和rule.ReplacementPath
。有关更多信息,请参阅 不支持的模块的模块替换 。
步骤 4:使用模块替换规则配置您的模型。在配置参数对话框的 Design Verifier > 模块替换窗格中,输入 List of block replacement rules 。
步骤 5:为模型覆盖率目标选择Enhanced MCDC
并进行测试生成分析。
分析增强型 MCDC 模型中的自定义测试目标
此示例显示如何为 sldvCustomTestObjectiveExample
模型中的Product 模块编写自定义测试目标。此外,它还展示了如何在检测站点检测测试目标的效果。
1.打开sldvCustomTestObjectiveExample
模型:
open_system('sldvCustomTestObjectiveExample');
原子掩码子系统库: blkReplacementlib_customTestObjective
库由 custProduct
掩码子系统组成。对自定义测试目标进行编码的逻辑在MATLAB功能模块中定义。getCustomTestObjectives
MATLAB 功能模块由 Test Objective 模块的两个自定义条件组成。
custProduct
掩蔽子系统已预先配置这些参数。有关更多信息,请参阅 封装编辑器概述 。
Block 替换规则,用屏蔽子系统替换所考虑的模块: sldvCustomTestObjectiveExample
模型预先配置了模块替换选项。模块替换规则在blkrep_rule_product_customTestObjective
文件中定义,用custProduct
掩膜子系统替换Product 模块。
2.要配置模型以实现增强的 MCDC 目标,请在Design Verifier选项卡上点击测试生成设置。在配置参数对话框的Design Verifier > 测试生成窗格中,对于模型覆盖率目标,选择 Enhanced MCDC
。点击确定。
3.要生成测试用例,请点击生成测试。
该软件分析替换模型以进行测试生成。
4.点击突出显示模型上的分析结果。要分析Product 模块的可检测性,点击Product 模块。
结果表明,Product 模块的测试目标是可检测的。测试用例已生成。
注意:对于通过模块替换引入的目标,软件无法通过验证结果来确认目标状态。因此,测试目标状态报告为满足需求仿真。有关验证的更多信息,请参阅 Simulink Design Verifier 如何通过验证结果报告近似值 。
5.点击查看测试用例。框架模型打开并且Signal Builder 模块显示测试用例。
6.要查看详细的分析报告,点击结果摘要中的HTML。模块替换摘要提供了有关被替换模块的详细信息。
测试目标状态部分列出了目标。表格中总结了在检测地点可检测到的测试目标。