主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

Simulink Design Verifier 中的增强 MCDC 覆盖率

增强型修正条件/决策覆盖率(MCDC)是修正条件决策覆盖率的扩展。对于测试模块,增强的 MCDC 生成的测试用例可避免下游模块的封装效应,从而使测试模块对输出产生影响。

要使用增强型 MCDC 覆盖率目标检测测试模块的效果,您可以考虑测试模块的标准模型覆盖率目标,也可以编写自己的自定义测试目标进行分析。有关详细信息,请参阅:

要使用增强型 MCDC 模型覆盖率目标生成测试用例,然后分析结果,请参阅增强型 MCDC 分析的基本工作流程

使用模型覆盖率目标来增强 MCDC 覆盖率

对于给定的测试模块,您可以检测下游模块对模型覆盖率目标的影响。当使用增强的 MCDC 模型覆盖率目标生成测试用例时,生成的测试用例可以避免下游模块的封装效应。模型覆盖率目标可以在检测站点检测到。

考虑由 SwitchMinMax 模块级联组成的这个模型。

为增强 MCDC 覆盖率生成的测试用例确保 Switch (Simulink Coverage) 测试模块的决策目标不会被下游的 MinMax 模块封装。生成的测试用例确保满足 MinMax 模块的这些非掩蔽条件:

  1. F < D,确保 Min 模块不会封装 Switch 输出。

  2. G > E,确保 Max 模块不会封装 Min 输出。

Switch 模块的决策目标以及 MinMax 模块的非掩蔽条件沿着路径得到满足,并在检测站点 (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 参数,其中包含所考虑的模块的名称。

  • Evaluate 参数的 detectBlock 属性设置为 Off

步骤 3:定义模块替换规则,用封装子系统替换所考虑的模块。

要编写自定义测试目标,请使用 blkrep_rule_product_customTestObjective.m 模块替换规则示例文件。在模块替换文件中,您可以根据模型模块更新 rule.BlockTyperule.ReplacementPath。有关详细信息,请参阅 不受支持的模块的模块替换

步骤 4:使用模块替换规则配置您的模型。在“配置参数”对话框的 Design Verifier > 模块替换窗格中,输入模块替换规则列表

步骤 5:为模型覆盖率目标选择 Enhanced MCDC 并进行测试生成分析。

分析增强型 MCDC 模型中的自定义测试目标

此示例显示如何为 sldvCustomTestObjectiveExample 模型中的 Product 模块编写自定义测试目标。此外,它还展示了如何在检测站点检测测试目标的效果。

1.打开 sldvCustomTestObjectiveExample 模型:

open_system('sldvCustomTestObjectiveExample');

product_model_custom.png

原子封装子系统库: blkReplacementlib_customTestObjective 库由 custProduct 封装子系统组成。对自定义测试目标进行编码的逻辑在 MATLAB Function 模块中定义。getCustomTestObjectives MATLAB Function 模块由 Test Objective 模块的两个自定义条件组成。

product_target_custom_library.png

custProduct 封装子系统已预先配置这些参数。有关详细信息,请参阅 封装编辑器概述

masked_system_parameters.png

Block 替换规则,用封装子系统替换所考虑的模块: sldvCustomTestObjectiveExample 模型预先配置了模块替换选项。模块替换规则在 blkrep_rule_product_customTestObjective 文件中定义,用 custProduct 封装子系统替换 Product 模块。

block_replacement_pane.png

2.要配置模型以实现增强的 MCDC 目标,请在 Design Verifier 选项卡上点击测试生成设置。在“配置参数”对话框的 Design Verifier > 测试生成窗格中,对于模型覆盖率目标,选择 Enhanced MCDC。点击确定

3.要生成测试用例,请点击生成测试

该软件分析替换模型以进行测试生成。

custom_test_authoring_results.png

4.分析完成后,结果将在模型中突出显示。要分析 Product 模块的可检测性,点击 Product 模块。

custom_test_authoring_product_results.png

结果表明,Product 模块的测试目标是可检测的。测试用例已生成。

注意:对于通过模块替换引入的目标,软件无法通过验证结果来确认目标状态。因此,测试目标状态报告为满足需求仿真。有关验证的更多信息,请参阅 Simulink Design Verifier 如何通过验证结果报告近似值

5.点击查看测试用例。框架模型和 Signal Editor 模块会打开。点击打开信号编辑器按钮来查看测试用例。

6.要查看详细的分析报告,点击结果摘要中的 HTML。模块替换摘要提供了有关被替换模块的详细信息。

block_replacement_report.png

测试目标状态部分列出了目标。表格中总结了在检测地点可检测到的测试目标。

custom_test_authoring_report.png

另请参阅

主题