在参考模型中实现缺失覆盖
如果仿真的引用模型没有达到全覆盖率,可以使用Simulink® Design Verifier™来生成达到全覆盖率的测试用例。有两种方法:
以编程方式实现缺失覆盖率:使用用于测试生成分析的 API 为参考模型生成测试用例。
逐步增加覆盖率:为缺少覆盖率分析功能的测试框架模型生成测试用例。
以编程方式实现引用模型中的缺失覆盖率
该示例模型使用了未实现全覆盖率的参考模型。当您对引用模型运行测试生成分析并将其与之前记录的覆盖率数据相结合时,您可以实现引用模型的 100%覆盖率。
记录示例模型的覆盖率数据
仿真示例模型。记录条件、决策和 MCDC覆盖率。
打开示例模型
sldemo_mdlref_basic
。openExample('sldemo_mdlref_basic');
Model 模块
CounterA
、CounterB
和CounterC
引用模型sldemo_mdlref_counter
。在 App 选项卡上,点击App 部分右侧的箭头。
在 模型验证、确认和测试 下,点击覆盖率分析器 。
在 覆盖率 选项卡上,点击设置 。
在配置参数对话框的 覆盖率窗格中,设置以下选项:
选择启用覆盖率分析。
选择 引用模型 。
点击 选择模型 。在“选择覆盖率分析模型”对话框中,选中引用模型
sldemo_mdlref_counter
的复选框。点击确定。sldemo_mdlref_counter
的复选框变得可见,对应CounterA
和CounterB
。由于参考模型CounterC
处于加速仿真模式,因此未启用CounterC
的覆盖率。指定在仿真期间要记录哪些类型的覆盖率。在 覆盖率度量 下,选择 MCDC 。
在配置参数的 覆盖率 > 结果窗格中。设置以下选项:
选择将上次运行保存在工作区变量中将最近一次仿真运行收集的覆盖率数据保存在MATLAB®工作区中的变量中。
选择分析后自动生成报告以指定仿真创建覆盖率报告。
在 cvdata 对象名称 字段中,输入
covdata_original
来为覆盖率数据工作区变量指定一个唯一的名称。
点击确定。
为了记录覆盖率数据,启动
sldemo_mdlref_basic
模型的仿真。仿真结束后,覆盖率报告打开。报告表明,对于引用模型
sldemo_mdlref_counter
实现了以下覆盖率:决策:25%
健康)状况:50%
MCDC:0%
仿真将覆盖率数据保存在MATLAB工作区变量
covdata_original
中,其中包含覆盖率数据的cvdata
对象。将覆盖率数据保存在 MATLAB 路径上的文件中:
cvsave('existingcov',covdata_original);
继续此示例时保持模型打开。
查找缺失覆盖率的测试用例
为了实现 sldemo_mdlref_counter
模型的 100%覆盖率,请运行使用现有覆盖率数据的测试生成分析。
打开引用的模型。在命令行中输入:
openExample('sldemo_mdlref_counter');
创建一个
sldvoptions
对象:opts = sldvoptions;
创建
sldvoptions
对象时,请指定:该分析忽略了满意的覆盖率数据。
包含满意覆盖率数据的文件名 (
existingcov.cvt
)
输入以下命令来指定这些选项:
opts.IgnoreCovSatisfied = 'on'; opts.CoverageDataFile = 'existingcov.cvt';
使用指定的选项分析引用模型
sldemo_mdlref_counter
:[status, fileNames] = sldvrun('sldemo_mdlref_counter',opts,true);
Simulink Design Verifier 分析满足七个目标并为引用模型创建了一个测试用例。
下一个过程使用分析创建的测试用例仿真引用模型sldemo_mdlref_counter
。
实现缺失覆盖
为了实现引用模型sldemo_mdlref_counter
的缺失覆盖率,请使用来自 Simulink Design Verifier 分析的测试用例来仿真该模型。
打开引用的模型。在命令行中输入:
openExample('sldemo_mdlref_counter');
为仿真创建一个
cvtest
对象并指定记录决策、条件和MCDC覆盖率。cvt = cvtest('sldemo_mdlref_counter'); cvt.settings.decision = 1; cvt.settings.condition = 1; cvt.settings.mcdc = 1;
指定录音覆盖率并设置
cvtest
对象的名称。runOpts = sldvruntestopts; runOpts.coverageEnabled = true; runOpts.coverageSetting = cvt;
使用
cvtest
对象、cvt
和fileNames.DataFile
中定义的测试用例仿真模型。将记录的覆盖率数据保存在工作区变量covdata_missing
中。[~, covdata_missing] = sldvruntest('sldemo_mdlref_counter', fileNames.DataFile, runOpts);
验证完整模型覆盖范围
您将顶层模型sldemo_mdlref_basic
的仿真的覆盖率数据保存在工作区变量 covdata_original
中。要创建一份将顶层模型的覆盖率数据与引用模型sldemo_mdlref_counter
的缺失覆盖率数据相结合的报告,请输入以下命令:
cvhtml('Coverage Summary', covdata_original, covdata_missing);
报告显示,通过分析参考模型并使用这些结果记录覆盖率,可以实现 100% 的决策、条件和 MCDC覆盖率。
增加测试工具中引用模型的覆盖率
您可以逐步实现生成的测试框架模型的全面覆盖率。此示例显示如何首先生成未实现完全覆盖率的测试框架模型。接下来,它展示了如何在测试框架模型上运行缺失覆盖率分析以生成 100%覆盖率的测试用例。
注意
此方法仅支持引用输入模型的Simulink Design Verifier生成的测试框架模型。当测试单元从顶层模型复制时,Design Verifier 应用程序不适用于测试框架模型。有关更多信息,请参阅生成的框架中的参考输入模型。
生成测试工具模型并记录覆盖率数据
为了实现 sldemo_mdlref_counter
模型的完全覆盖率,请对 Simulink Design Verifier 生成的框架模型运行缺失覆盖率分析。
打开示例模型:
openExample('sldemo_mdlref_counter');
为引用模型
sldemo_mdlref_counter
创建框架模型:[savedHarnessFilePath] = sldvmakeharness('sldemo_mdlref_counter');
有关框架模型的更多信息,请参阅管理Simulink Design Verifier框架模型。
框架模型
sldemo_mdlref_counter_harness
中,格式参数必须是数据集,以使引用的模型sldemo_mdlref_counter
和框架模型sldemo_mdlref_counter_harness
具有相同的参数设置。有关更多信息,请参阅模型配置参数:数据导入/导出。仿真
sldemo_mdlref_counter_harness
模型,记录框架模型中测试用例所达到的覆盖率。仿真结束后,出现覆盖率报告。报告表明,sldemo_mdlref_counter
已实现以下覆盖率:
生成缺失覆盖率的测试用例
打开框架模型:
open_system('sldemo_mdlref_counter_harness');
要为缺失覆盖率生成测试用例,请在 Design Verifier 选项卡上点击Add Missing Coverage 。通知指示添加的新测试的数量。
信号生成器对话框显示已添加到前一个 Test Case 1 的 Missing coverage test case 1 。
在信号构建器对话框中,点击全部运行 。该软件使用所有测试用例框架模型,收集模型覆盖率信息,并显示覆盖率报告。覆盖率报告表明缺失的覆盖率分析记录了
sldemo_mdlref_counter
的 100%覆盖率。
更新 Simulink Design Verifier 分析选项
打开框架模型。
open_system('sldemo_mdlref_counter_harness');
在 Design Verifier 选项卡上,点击Test Generation Settings 。引用模型
sldemo_mdlref_counter
的配置参数对话框打开。您可以设置缺失覆盖率分析的设计验证器选项。有关更多信息,请参阅配置参数对话框中的选项。
查看缺失覆盖率分析的有效结果
打开引用的模型。
open_system('sldemo_mdlref_counter');
在 Design Verifier 选项卡的 查看结果 部分中,点击Load Earlier Results 。浏览到之前生成的数据文件并点击打开。
要查看缺失覆盖率测试用例的活动结果,点击结果摘要。“结果摘要”窗口打开,其中显示缺失的覆盖率分析结果。有关活动结果的更多信息,请参阅 查看分析结果 。缺失的覆盖率测试用例数据存储在包含名为
sldvData
的结构体的 MAT 文件中。有关更多信息,请参阅生成 sldvData 结构。
限制
缺失覆盖率分析是一个基于用户界面的工作流程。命令行函数不适用于缺失覆盖率分析。
缺失覆盖率分析工作流不支持约束参数的值。有关更多信息,请参阅使用参数表。