本示例展示了如何使用Simulink®Design Veri万博1manbetxfier™扩展现有测试套件以获得缺失的模型覆盖率。
您分析一个示例模型并生成测试套件以实现全面覆盖。然后,修改模型,使测试用例不再达到完全覆盖。最后,使用Simulink®Design Verifier™分析修改后的模型以获得缺失的覆盖范围。万博1manbetx
分析sldvdemo_cruise_control
建模并生成一个测试套件,以实现完整的模型覆盖。要分析模型以生成提供模型覆盖率的测试用例,请使用sldvrun
函数。设置设计验证参数sldvoptions
.
open_system“sldvdemo_cruise_control”;选择= sldvoptions;选择。模式=“TestGeneration”;选择。ModelCoverageObjectives =“MCDC”;选择。SaveHarnessModel =“关闭”;选择。SaveReport =“关闭”;[status, files] = sldvrun()“sldvdemo_cruise_control”、选择正确的);
测试生成分析结果显示在Simulink设计验证器结果摘要窗口中。万博1manbetx
close_system (“sldvdemo_cruise_control”, 0);
的sldvruntest
函数使用现有测试套件模拟模型。的cvhtml
函数生成一个覆盖率报告,该报告指示初始覆盖率sldvdemo_cruise_control
模型。
open_system“sldvdemo_cruise_control”;[outData, initialCov] = sldvruntest(“sldvdemo_cruise_control”,文件。丢失,[],真);cvhtml (“初始覆盖”, initialCov);close_system (“sldvdemo_cruise_control”, 0);
加载修改后的sldvdemo_cruise_control_mod
模型。控制器目标值限制为70,通过使用a饱和
块。
load_system“sldvdemo_cruise_control_mod”;load_system“sldvdemo_cruise_control_mod /控制器”;
的sldvruntest
函数模拟修改sldvdemo_cruise_control_mod
模型与现有的测试套件和输入相同sldvdemo_cruise_control
模型。的cvhtml
函数生成指示已修改内容的覆盖率报告sldvdemo_cruise_control_mod
模型不再实现全面覆盖。
[outData, startCov] = sldvruntest(“sldvdemo_cruise_control_mod”,文件。丢失,[],真);cvhtml (“原始测试套件的覆盖率”, 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”,文件。丢失,[],真);totalCov = startCov + additionalCov;cvhtml (额外的覆盖的, totalCov);
要完成示例,请关闭模型。
close_system (“sldvdemo_cruise_control_mod”);