主要内容

扩展现有的测试套件

这个例子展示了如何使用Simulink®Design Verifier™来扩展现有的测试套件,以获得缺失的模型覆盖率。

您分析一个示例模型并生成测试套件以实现全面覆盖。然后,修改模型,使测试用例不再达到完全覆盖。最后,使用Simulink®Design Verifier™分析修改后的模型以获得缺失覆盖率。

生成初始测试套件

分析sldvdemo_cruise_control建模并生成一个实现完全模型覆盖的测试套件。要分析模型以生成提供模型覆盖的测试用例,请使用sldvrun函数。设置设计验证参数为sldvoptions

open_system“sldvdemo_cruise_control”;Opts = sldvoptions;选择。模式=“TestGeneration”;选择。ModelCoverageObjectives =“MCDC”;选择。SaveHarnessModel =“关闭”;选择。SaveReport =“关闭”;[status, files] = sldvrun(“sldvdemo_cruise_control”, opts, true);

测试生成分析结果显示在“Simulink设计验证器结果摘要”窗口中。

close_system (“sldvdemo_cruise_control”, 0);

确认完全覆盖

sldvruntest函数使用现有的测试套件模拟模型。的cvhtml方法的初始覆盖范围sldvdemo_cruise_control模型。

open_system“sldvdemo_cruise_control”;[outData, initialCov] = sldvruntest(“sldvdemo_cruise_control”,文件。DataFile, [], true);cvhtml (“初始覆盖”, initialCov);close_system (“sldvdemo_cruise_control”, 0);

修改模型

加载修改后的sldvdemo_cruise_control_mod模型。控制器的目标速度值被限制为70,通过使用饱和块。

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”,文件。DataFile, [], true);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”,文件。DataFile, [], true);totalCov = startCov + additionalCov;cvhtml (“附加保险”, totalCov);

要完成示例,请关闭模型。

close_system (“sldvdemo_cruise_control_mod”);
Baidu
map