扩展现有测试套件
此示例展示如何使用 Simulink® Design Verifier™ 扩展现有测试套件以获得缺失的模型覆盖率。
您分析示例模型并生成测试套件以实现全面覆盖率。然后,修改模型,使得测试用例不再实现完全覆盖率。最后,使用 Simulink® Design Verifier™ 分析修改后的模型以获得缺失覆盖率。
生成初始测试套件
分析sldvdemo_cruise_control
模型并生成实现全模型覆盖率的测试套件。要分析模型以生成提供模型覆盖率的测试用例,请使用sldvrun
函数。使用 sldvoptions
设置设计验证参数。
open_system 'sldvdemo_cruise_control'; opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'MCDC'; opts.SaveHarnessModel = 'off'; opts.SaveReport = 'off'; [ status, files ] = sldvrun('sldvdemo_cruise_control', opts, true);
测试生成分析结果出现在“Simulink Design Verifier 结果摘要”窗口中。
close_system('sldvdemo_cruise_control',0);
验证完整覆盖范围
sldvruntest
函数使用现有的测试套件仿真模型。cvhtml
函数生成覆盖率报告,表明 sldvdemo_cruise_control
模型的初始覆盖率。
open_system 'sldvdemo_cruise_control'; [ outData, initialCov ] = sldvruntest('sldvdemo_cruise_control', files.DataFile, [], true); cvhtml('Initial coverage',initialCov); close_system('sldvdemo_cruise_control',0);
修改模型
加载修改后的sldvdemo_cruise_control_mod
模型。通过使用Saturation
模块,控制器目标速度值限制为70。
load_system 'sldvdemo_cruise_control_mod'; load_system 'sldvdemo_cruise_control_mod/Controller';
测量现有测试套件的覆盖率
sldvruntest
函数使用现有的测试套件和与 sldvdemo_cruise_control
模型相同的输入来仿真修改后的 sldvdemo_cruise_control_mod
模型。cvhtml
函数生成覆盖率报告,表明修改后的 sldvdemo_cruise_control_mod
模型不再实现完全覆盖率。
[ outData, startCov ] = sldvruntest('sldvdemo_cruise_control_mod', files.DataFile, [], true); cvhtml('Coverage with the original testsuite',startCov);
扩展现有测试套件
为了实现完整的模型覆盖率,sldvgencov
函数会分析模型并扩展现有的测试套件。
[ status, covData, files ] = sldvgencov('sldvdemo_cruise_control_mod', opts, true, startCov);
验证完整覆盖范围
验证新的测试套件是否对sldvdemo_cruise_control_mod
修改后的模型实现了全面覆盖率。sldvruntest
函数使用扩展的测试套件仿真修改后的模型。cvhtml
报告显示了sldvdemo_cruise_control_mod
模型实现的总体覆盖率。
[ additionalOut, additionalCov ] = sldvruntest('sldvdemo_cruise_control_mod', files.DataFile, [], true); totalCov = startCov + additionalCov; cvhtml('With additional coverage',totalCov);
为了完成示例,请关闭模型。
close_system('sldvdemo_cruise_control_mod');