创建和执行测试用例
这个例子展示了如何使用仿真软件®设计校验™函数日志输入信号,金宝app创建一个利用模型,生成测试用例为失踪的报道,利用模型合并,并执行测试用例。
示例首先日志记录组件,实现了控制器的输入信号其母模型和创建利用模型的控制器记录数据。你使用仿真软件设金宝app计验证器找到一个新的测试用例,实现失踪的报道。然后合并后的第一个利用模型与利用模型生成仿真软件设计校验分析。金宝app最后,您捕获所有测试用例与测试用例和执行控制器在模拟模式和Software-In-the-Loop (SIL)模式,并比较结果使用CGV API。
检查产品的可用性
本例中需要一个有效的Stateflow®许可证。Software-In-the-Loop演示测试执行(SIL)模式还需要有效的仿真软件®编码器™和嵌入式编码™许可证。金宝app
如果~许可证(“测试”,“Stateflow”)返回;结束canUseSIL =许可证(“测试”,“Real-Time_Workshop”)& &…许可证(“测试”,“RTW_Embedded_Coder”);
日志输入信号和创造利用的组件模型
的slvnvdemo_powerwindow
模型包含一个电动车窗控制器和一个低阶植物模型。组件slvnvdemo_powerwindow power_window_control_system /控制
是一个模型块,引用模型slvnvdemo_powerwindow_controller
,实现了控制器与Stateflow®图表。
创建一个控制器的信号利用模型模拟控制器的植物模型,首先记录输入信号,然后调用利用生成的记录数据。
open_system (“slvnvdemo_powerwindow”);load_system (“slvnvdemo_powerwindow_controller”);loggedSignalsPlant =…sldvlogsignals (“slvnvdemo_powerwindow / power_window_control_system /控制”);harnessModelFilePath =…sldvmakeharness (“slvnvdemo_powerwindow_controller”,loggedSignalsPlant);[~,harnessModel] = fileparts (harnessModelFilePath);
# # #开始连续模型参考模拟构建# # #成功更新了模型参考模拟目标:slvnvdemo_powerwindow_controller构建总结模拟目标构建:模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = slvnvdemo_powerwindow_controller slvnvdemo_powerwindow_controller_msf代码生成和编译。mexa64并不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米26.893秒# # #开始连续模型参考模拟构建# # #模型参考仿真目标slvnvdemo_powerwindow_controller是最新的。构建总结0 1模型的建立(1模型已经更新)构建持续时间:0 h 0米0.65053秒# # #开始连续模型参考模拟构建# # #成功更新了模型参考模拟目标:slvnvdemo_powerwindow_controller构建总结模拟目标构建:模型行动重建原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = slvnvdemo_powerwindow_controller生成和编译代码1的模型建立(0模型已经更新)构建持续时间:0 h 0米13.436秒
测量与记录的信号覆盖
使用cvt
和cvsim
函数来测量模型覆盖率达到控制器模型slvnvdemo_powerwindow_controller
与记录的信号,利用模型中捕获。
的cvhtml
函数产生一份报告,表明40%的决定,35%的条件下,10% MCDC报道是通过模拟闭环模型的测试用例了。
测试= cvt (harnessModel);test.modelRefSettings。使=“上”;test.modelRefSettings。excludeTopModel = 1;covDataFromLoggedSignals = cvsim(测试);cvhtml (与登录测试用例覆盖的,covDataFromLoggedSignals);
寻找失踪的测试用例覆盖
之前,你可以使用现有的覆盖率数据在测试生成,数据必须保存到一个覆盖率数据文件(.cvt)。您可以使用现有的覆盖率数据通过指定的覆盖率数据路径覆盖率数据文件参数和设置忽视目标满足现有的覆盖率数据参数在
在测试生成窗格匹配仿真软件金宝app设计的配置参数。
正如你所看到的报告中,仿真软件设计验证器限制测试生成的覆盖目金宝app标文件中未涉及现有的报道。请注意,8 Stateflow图覆盖的目标控制
被证明是不可满足的。这表明不必要的冗余逻辑,不能测试。
cvsave (“existingCovFromLoggedSignals”,covDataFromLoggedSignals);选择= sldvoptions;选择。IgnoreCovSatisfied =“上”;选择。CoverageDataFile =“existingCovFromLoggedSignals.cvt”;选择。ModelCoverageObjectives =“MCDC”;选择。TestSuiteOptimization =“LongTestcases”;选择。SaveHarnessModel =“上”;选择。ModelReferenceHarness =“上”;选择。MaxProcessTime = 500;(地位、文件名)= sldvrun (“slvnvdemo_powerwindow_controller”、选择正确的);[~,newHarnessModel] = fileparts (fileNames.HarnessModel);open_system (newHarnessModel);
从利用模型合并测试用例
现在使用sldvmergeharness
结合生成测试用例,记录测试用例。利用模型的命令需要一个列表作为参数。
sldvmergeharness (harnessModel newHarnessModel);
日志利用模型的测试用例
以编程方式执行模型slvnvdemo_powerwindow_controller
测试用例中捕获的合并利用模型,第一次使用sldvlogsignals
函数来获得所有必要的测试用例的输入值数据格式。
loggedSignalsMergedHarness = sldvlogsignals (harnessModel);disp (loggedSignalsMergedHarness);
LoggedTestUnitInfo:(1 x1 struct)测试点:[1 x2 struct]
执行模型在模拟模式CGV API
使用sldvruncgvtest
函数执行模型slvnvdemo_powerwindow_controller
在模拟模式,利用模型与测试用例捕获。
runopts = sldvruntestopts (“cgv”);disp (runopts);runopts。cgvConn =“sim卡”;cgvSim = sldvruncgvtest (“slvnvdemo_powerwindow_controller”,…loggedSignalsMergedHarness runopts);
testIdx: [] allowCopyModel: 0 cgvCompType: topmodel的cgvConn:“sim卡”开始执行:组件类型:topmodel连接:sim InputData: / tmp / Bdoc21b_1757077_40715 / tp300809f9 / ex67947267 / cgv_runtest / slvnvdemo_powerwindow_controller / slvnvdemo_powerwindow_controller_cgv_input_tc_1。垫CGV执行:状态完成。开始执行:组件类型:topmodel连接:sim InputData: / tmp / Bdoc21b_1757077_40715 / tp300809f9 / ex67947267 / cgv_runtest / slvnvdemo_powerwindow_controller / slvnvdemo_powerwindow_controller_cgv_input_tc_2。垫CGV执行:状态完成。
执行模型Software-In-the-Loop CGV API (SIL)模式
现在使用的sldvruncgvtest
函数执行模型slvnvdemo_powerwindow_controller
在银模式下,使用相同的测试用例。
如果canUseSIL runopts。cgvConn =“银”;其他的% SIL是不可能时,运行另一个仿真例子。runopts。cgvConn =“sim卡”;结束cgvSil = sldvruncgvtest (“slvnvdemo_powerwindow_controller”,…loggedSignalsMergedHarness runopts);
开始执行:组件类型:topmodel连接:sil InputData: / tmp / Bdoc21b_1757077_40715 / tp300809f9 / ex67947267 / cgv_runtest / slvnvdemo_powerwindow_controller / slvnvdemo_powerwindow_controller_cgv_input_tc_1_1。垫# # #开始构建过程:slvnvdemo_powerwindow_controller # # #成功完成构建过程:slvnvdemo_powerwindow_controller模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = slvnvdemo_powerwindow_controller代码生成和编译代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米23.631秒# # #准备开始SIL模拟……建筑与gcc。墨西哥人成功完成。# # #起始SIL仿真组件:slvnvdemo_powerwindow_controller # # #应用程序停止了# # #停止SIL模拟组件:slvnvdemo_powerwindow_controller CGV执行:状态完成。开始执行:组件类型:topmodel连接:sil InputData: / tmp / Bdoc21b_1757077_40715 / tp300809f9 / ex67947267 / cgv_runtest / slvnvdemo_powerwindow_controller / slvnvdemo_powerwindow_controller_cgv_input_tc_2_1。垫# # #开始构建过程:slvnvdemo_powerwindow_controller # # #成功完成构建过程:slvnvdemo_powerwindow_controller模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = slvnvdemo_powerwindow_controller代码生成和编译生成的代码是过时了。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米12.356秒# # #准备开始SIL模拟……建筑与gcc。 MEX completed successfully. ### Starting SIL simulation for component: slvnvdemo_powerwindow_controller ### Application stopped ### Stopping SIL simulation for component: slvnvdemo_powerwindow_controller End CGV execution: status completed.
比较仿真结果和SIL模式
的sldvruncgvtest
返回一个cgv.CGV
对象在运行测试。使用CGV API比较执行的结果模拟和SIL模式利用模型中的每个测试用例的设计和显示他们是平等的。
为i = 1:长度(loggedSignalsMergedHarness.TestCases) simout = cgvSim.getOutputData(我);silout = cgvSil.getOutputData(我);[mismatchNames matchNames, ~, ~] =…cgv.CGV.compare (simout silout);流(“\ nt案例(% d): % d信号匹配,% d信号不匹配的,…我,长度(matchNames),长度(mismatchNames));结束
测试用例(1):4信号匹配,0信号不匹配的测试用例(2):4信号匹配,0信号不匹配
清理
完成,关闭所有模型。
close_system (harnessModel 0);close_system (newHarnessModel 0);close_system (“slvnvdemo_powerwindow”,0);close_system (“slvnvdemo_powerwindow_controller”,0);