创建并运行实时测试
您可以使用 Simulink Test Manager 将桌面仿真测试用例转换为实时基线测试、等效性测试或仿真测试。随后,您可以在测试管理器中通过指定测试设置来定义测试的执行方式。某些设置出现在测试管理器仅在实时测试用例中可用中。有关测试管理器的通用设置信息,请参阅 在测试管理器中指定测试属性。
有关配置模型进行实时测试以及设置目标计算机的详细信息,请参阅 准备实时测试.
添加一个实时测试用例
要将一个实时测试用例添加到现有测试文件中:
在 Simulink® 工具栏中,选择 App 选项卡,在模型验证、确认和测试下,点击 Simulink Test。
在测试选项卡中,点击 Simulink 测试管理器。
在测试管理器中,在文件部分,点击打开并选择一个测试文件。
选择 新建 > 测试用例 > 实时测试。
在新的实时测试对话框中,设置测试类型参数并点击创建。您可以选择基线、等效性或仿真实时测试:
Baseline
- 将目标计算机返回的信号数据与测试用例中的基线数据进行比较。要将实时执行结果与模型仿真结果进行比较,请将模型基线结果添加到实时测试用例中,并在基线准则部分对信号应用选项容差。请参阅 基线准则 和 设置信号容差。Equivalence
- 将仿真中的信号数据与实时测试结果进行比较,或比较两个实时测试结果。当您选择此类测试时,可以指定目标上的仿真 1 和目标上的仿真 2 参数。要在目标计算机上运行实时测试并比较结果与模型仿真,请选择目标上的仿真 1 并清除目标上的仿真 2。测试用例显示两个仿真部分,仿真 1 (实时) 和仿真 2。要比较两个实时测试的信号数据,请选择目标上的仿真 1 和目标上的仿真 2。测试用例显示两个仿真部分,仿真 1 (实时) 和仿真 2 (实时)。Simulation
- 仅使用verify
语句和实时执行来评估测试结果。如果没有verify
语句失败,并且实时测试执行,测试用例通过。
有关将桌面测试用例转换为其他格式的信息,请参阅 重复使用桌面测试用例进行实时测试。
指定在测系统
在测试管理器中,展开在测系统部分,并指定模型以及如何加载实时应用程序。您还可以根据需要选择性地指定测试框架或仿真覆盖设置。
选择模型和测试框架
您可以通过在当前活动的 Simulink 窗口中选择要测试的模型,或通过浏览选择模型来指定要测试的模型。如果您的模型具有测试框架,您可以为测试用例选择相应的测试框架。有关如何指定测试的模型或测试框架的信息,请参阅 在测系统。
加载应用程序
实时应用程序是根据您的模型或测试框架构建的。要选择要加载的应用程序,请将从以下位置加载应用程序参数设置为:
Model
– 此设置从建模中加载应用程序,构建实时应用程序,将其下载到目标计算机并在目标计算机上执行。如果您是首次运行实时测试,或者自上次实时执行以来模型发生了变化,请使用此设置。此设置通常需要最长时间来完成。注意
如果您的测试从信号编辑器场景或测试序列场景中执行表迭代,请选择模型设置。
Target Application
– 使用此设置将主机上的目标应用程序发送至目标计算机,并执行该应用程序。如果希望在多个目标上加载已构建的应用程序,请使用此设置。Target Computer
– 此设置更新测试用例中的参数并执行测试。使用此设置在实时目标计算机上执行已加载的应用程序。
下表总结了每个选项执行的步骤和回调。如果您的测试使用回调函数和测试迭代,则回调函数会在每次迭代中执行。
测试用例执行步骤 | 从参数设置加载应用程序 | ||
---|---|---|---|
Model | Target Application | Target Computer | |
执行预加载回调 | 是 | 是 | 是 |
加载 Simulink 模型 | 是 | 否 | 否 |
执行加载后回调 | 是 | 否 | 否 |
设置信号编辑器场景 | 是 | 否 | 否 |
从模型构建实时应用程序 | 是 | 否 | 否 |
下载实时应用程序到目标计算机 | 是 | 是 | 否 |
设置运行时参数 | 是 | 是 | 是 |
运行测试序列场景 | 是 | 否 | 否 |
执行启动前实时回调 | 是 | 是 | 是 |
执行实时应用程序 | 是 | 是 | 是 |
执行清理回调 | 是 | 是 | 是 |
覆盖仿真设置
对于实时测试,您可以使用仿真设置覆盖部分来覆盖仿真停止时间,这在调试实时测试失败时非常有用。考虑一个 60 秒的测试,由于模型中的错误,该测试在 15 秒时返回 verify
语句失败。调试模型后,执行实时测试来验证修复。您可以覆盖停止时间以在 20 秒时终止执行,从而减少验证修复所需的时间。
为实时回调分配代码
使用预启动实时应用程序回调函数在应用程序在目标计算机上执行之前执行命令。实时测试回调与模型加载、构建、下载和执行步骤按顺序执行。回调和步骤执行取决于测试用例加载应用程序的方式。
顺序 | 加载应用程序自: 模型 | 加载应用程序自: 目标应用 | 加载应用程序自: 目标计算机 |
---|---|---|---|
首先执行 | 预加载回调 | 预加载回调 | 预加载回调 |
后加载回调 | — | — | |
预启动实时应用程序回调 | 预启动实时应用程序回调 | 预启动实时应用程序回调 | |
最后执行 | 清理回调 | 清理回调 | 清理回调 |
如果您的测试有不同的系统目标文件需求,您可以通过测试用例或测试套件回调来设置该参数。实时测试执行后,使用清理回调将参数设置为其原始设置。例如,此回调函数打开 sltestProjectorController
模型,并将 SystemTargetFile
设置为 speedgoat.tlc
。
openExample("sltestProjectorController"); set_param("sltestProjectorController",... "SystemTargetFile','speedgoat.tlc");
创建测试迭代
您可以在测试管理器中的迭代部分执行实时测试中的迭代操作。使用迭代执行实时测试,以遍历参数值或信号编辑器场景。测试管理器根据迭代次数对结果进行分组。有关设置迭代的更多信息,请参阅 测试迭代。您可以创建:
从参数集进行表迭代 - 在测试用例的参数覆盖部分定义多个参数集。在表模式迭代下,点击自动生成并选择参数集。
信号编辑器场景中的表迭代 - 如果您的模型或测试框架使用了信号编辑器输入,请在表模式迭代表下方点击自动生成,然后选择信号编辑器场景。如果您使用信号编辑器场景,必须将从以下位置加载应用程序设置为
Model
。测试序列场景中的表迭代 - 如果您的测试框架使用 Test Sequence 模块场景,您可以在测试管理器中为每个场景创建一个迭代.在表模式迭代表格下方,点击自动生成并选择测试序列场景。如果您使用测试序列场景,请从模型中加载应用程序。
脚本迭代 - 使用脚本使用模型变量或参数进行迭代。例如,假设您正在测试振荡器系统,并使用 Test Sequence 模块使用参数
frequency
创建方波测试信号。在测试管理器部分的脚本模式迭代节中,您可以使用实时测试脚本迭代来覆盖从 5 Hz 到 35 Hz 的频率扫描。该脚本在 Test Sequence 模块中迭代
frequency
的值。%% Iterate over frequencies to determine best oscillator settings % Create parameter sets freq = 5.0:1.0:35.0; for i_iter = 1:length(freq) % Create iteration object testItr = sltestiteration(); % Set parameters setVariable(testItr,'Name','frequency','Source',... 'Test Sequence','Value',freq(i_iter)); % Register iteration addIteration(sltest_testCase, testItr); end
运行测试并查看实时测试结果
定义测试后,您可以通过点击运行在测试管理器中执行测试。您可以在结果和工件窗格中查看结果。如果您的测试是基准测试或等效性测试,右侧窗格将测试信号数据与您在基准或等效性准则部分定义的数据和容差进行比较。如果您的测试包含 verify
语句,在结果和工件窗格中,展开验证语句部分以选择评估并查看结果。右侧窗格显示 pass
、fail
和 untested
的结果。
另请参阅
App
函数
setVariable
|verify
|assert