使用基于matlab的Simulink测试模型金宝app
一个MATLAB®基于仿真软件金宝app®测试在MATLAB代码中定义(.m
)文件,然后在Test Manager中打开、运行并查看结果。测试文件是继承自的类定义文件slt。TestCase
.继承使您能够在test Manager中打开测试文件。当您在测试管理器中打开MATLAB测试文件时,它的显示和行为与在测试管理器中创建的测试相同,尽管具有一些有限的功能(请参阅基于MATLAB的测试的局限性).除了在test Manager中使用MATLAB测试外,您还可以像在任何其他单元测试文件一样在命令行中使用它。
因为这些测试文件是文本(.m
)文件,您可以编辑,比较和合并与其他.m
测试文件,并从文件链接到需求。相比之下,在测试管理器中创建的测试文件或通过使用金宝app仿真软件测试™API被保存为二进制MLDATX文件。
类和方法
TestCase类和方法
的slt。TestCase
类及其方法特别适用于MATLAB测试。您可以在测试文件和命令行中使用这些方法,除了sltest.TestCase.forInteractiveUse
,只能在命令行中使用。除了这些方法外,您还可以使用matlab.unittest.TestCase
方法与MATLAB测试。
要从其继承的类 |
|
负荷模型 |
|
模拟模型 |
|
假设两组数据是等价的 |
|
断言两组数据是等价的 |
|
致命断言两组数据是等价的 |
|
验证两组数据是否相等 |
|
创建用于命令行的测试用例 |
|
创建临时文件夹,当测试用例超出范围时删除该文件夹 | |
createSimulationInput |
创建金宝app仿真软件。SimulationInput 或sltest.harness.SimulationInput 对象。 |
测试装备类
sltest.harness.SimulationInput
创建一个对象,您可以使用该对象指定在模拟期间应用于测试装备的更改。除了将这个类用于基于MATLAB的Simulink测试之外,您还可以在其他MATLAB代码中使用它金宝app。
测试运行器方法
这些方法matlab.unittest.TestRunner
特别适用于基于matlab的Simulink测试。金宝app
addModelCoverage
-启用使用测试运行器的模型覆盖收集。add金宝appSimulinkTestResults
-将测试结果推送到Simulink测试管理器。金宝app
插件类
这些sltest.plugins
类为基于matlab的测试提供功能。除了这些方法外,您还可以使用其他方法sltest.plugins
带有这些测试的类。插件可以附加到matlab.unittest.TestRunner
控件时启用功能slt。TestCase
测试。
允许将MATLAB测试模拟和测试结果与测试管理器集成 |
|
允许向Test Manager结果写入文本输出记录信号测试管理器的窗格 |
|
启用收集模型覆盖率 |
创建基线MATLAB的金宝app测试
创建一个基准MATLAB测试:
创建一个MATLAB代码(
.m
定义测试用例的文件。您可以从命令行启动MATLAB编辑器,或从测试管理器通过使用新>基于matlab的Simu金宝applink测试(.m).看到在MATLAB中编写基于类的单元测试.MATLAB测试的唯一区别是类必须继承
slt。TestCase
,而不是frommatlab.unittest.TestCase
.此示例MATLAB测试文件包括一个测试,该测试定义在
testOne
函数。当您在test Manager中运行测试时,测试将加载命名的模型sltestMATLABBasedTestExample
.的值gain2_var
变量,并对模型进行仿真。最后,测试将模型仿真输出与基线数据MAT文件进行比较。classdef myTest < sltest。TestCasemethods (Test) function testOne(testCase) testCase.loadSystem... ('sltestMATLABBasedTestExample'); evalin('base','gain2_var = 2.01;'); simOut = testCase.simulate... ('sltestMATLABBasedTestExample'); testCase.verifySignalsMatch(simOut,'baselineOne.mat',... 'AbsTol',0.015); end end end
如果您正在使用测试线束,请更换
simOut
行在上面的MATLAB测试文件用simOut = testCase.simulate('sltestMATLABBasedTestExample',…“WithHarness”、“sltestMATLABBasedTestExample_harness1”);
simOut
与in = testCase.createSimulationInput('sltestMATLABBasedTestExample',…“WithHarness”、“sltestMATLABBasedTestExample_harness1”);in. setmodelparameter ("StopTime","10") simOut = testCase.simulate(in);
如果基线数据mat文件不存在,或者需要更新它,在MATLAB命令行中使用:
runtests(<测试>,“GenerateBaselines”,真正的)
对于示例文件,
<测试>
是““myTest / testOne”
.当您生成基线时,测试开始运行。它暂停打开一个仿真数据检查器报告,MATLAB命令行提示您检查基线数据。当您批准数据时,它将基线数据保存到一个新的mat文件或更新现有的mat文件。然后,测试继续运行,但是失败,因为新的或更新的基线数据没有包含在当前运行中。方法重新运行测试
runtests
命令使用新的或更新的基线并产生一个通过的结果。您还可以使用黄色来重新运行测试重新运行
命令行上的超级链接。如果你有金宝app仿真软件覆盖™许可证,您可以在您的测试中包含覆盖率集合。看到使用基于matlab的Simulink测试收集覆盖率金宝app有关覆盖率收集的示例和信息。
如果你有要求工具箱™许可证,您可以添加需求。打开Test Manager并更新测试文件。
点击开放>基于matlab的Simulink测金宝app试(.m)并选择测试文件。加载的测试文件及其测试层次结构显示在测试浏览器窗格。如果选择测试文件,则需求而且测试文件内容窗格出现在测试管理器中。
控件来添加需求需求部分。添加打开“传出链接编辑器”。看到链接到需求有关添加需求的信息。
更新MATLAB代码(
.m
)测试文件从测试管理器,单击在MATLAB编辑器中打开测试链接。在编辑
.m
文件并保存您的更改,或者在添加覆盖率或需求之后,返回到Test Manager并单击同步按钮中的测试文件旁边的测试浏览器窗格。运行测试,查看结果,并创建测试结果报告。
或者,不是在test Manager中添加覆盖率(步骤4)和运行测试(步骤8),您可以在MATLAB命令行中使用这些命令来添加覆盖率,运行测试,并将结果推送到test Manager。然后,当您打开Test Manager时,将显示测试结果。
testsuite('myTests');Runner = testrunner('textoutput');runner.addModelCoverage(…“CollectMetrics”(“MCDC”、“条件”));runner.add金宝appSimulinkTestResults(“ExportToFile”,…“testmgr_results.mldatx”);runner.run(套);
链接到需求MATLAB的金宝app测试文件
请注意
你一定有需求的工具箱包括需求链接。
若要在MATLAB编辑器中从正在编辑的文件中添加到需求的链接,请参见需求可追溯性的MATLAB代码(需求工具箱).对于MATLAB测试文件,使用相同的过程添加链接。然而,您在MATLAB代码中选择的文本(.m
)文件决定链接的类型和它被添加到的测试。如果您选择:
类定义行(例如,
classdef myClass < sltest。TestCase
) -添加一个验证了
整个测试文件的链接测试函数中的文本-添加
验证了
这个函数的链接跨多个测试函数的文本-添加一个
验证了
链接用于选择的第一个函数任何其他选定的文本-添加一个
有关
链接选择
添加需求链接后,您可以通过单击在requirements Editor中查看验证状态显示>验证状态.更新节点的状态验证了
需求,右键单击需求并选择运行测试.看到评审需求验证状态(需求工具箱).
在MATLAB代码中创建的链接(.m
)文件出现在需求部分的测试管理器。在Test Manager中链接到需求的工作原理与中所描述的相同链接到需求.
当您打开需求编辑器并单击用于MATLAB测试的传入链接时,如果您有金宝app仿真软件测试许可证,测试管理器打开并转到相关的测试。如果许可证不可用,MATLAB编辑器将打开并转到与该需求相关的代码行。
对于参数化检验,需求的工具箱不支持链接到测试的金宝app各个参数化版本。在你的.m
文件中,如果您创建了从参数化测试到需求的链接,则该链接将与该测试的所有版本相关联。在Test Manager中,如果您创建了一个从参数化测试版本到需求的链接,那么这个链接将与该测试的所有版本相关联。
的局限性MATLAB基于-的测试
基于matlab的Simu金宝applink测试不支持:金宝app
基线测试以外的测试类型。
并行运行测试。
在多个版本中运行测试。
测试标签和描述。
回调。(然而,虽然测试管理器不支持基于matlab的测试的回调,但您可以使金宝app用
TestClassSetup
而且TestMethodSetup
,或固定在你的.m
文件实现类似的功能。看到使用类编写安装和拆卸代码.)逻辑和时间评估。
另请参阅
add金宝appSimulinkTestResults
|addModelCoverage
|slt。TestCase
|matlab.unittest.TestCase
|matlab.unittest.TestRunner