在测试用例中捕获仿真数据
通过将信号添加到测试用例的仿真输出部分来捕获测试结果中的信号数据。每个输出都称为一个记录信号。仿真输出中列出的信号与 Simulink® 中已选择记录的信号一起出现在测试结果中。您还可以使用条件或持续时间触发器来开始和停止记录,从而记录信号的一部分。
您可以使用记录的信号进行基线准则、等效性准则、自定义准则中的数据比较,以及在仿真数据检查器中进行数据可视化。记录的信号使您能够进一步测试您的 Simulink 模型而无需改变模型。除了来自顶层模型的信号之外,您还可以记录来自子系统和模型参考的信号。您可以选择与本地和全局数据存储内存相关的信号,以及使用 Simulink.Signal
对象的数据存储内存中的信号。
创建测试框架时添加记录信号
右键单击模型或模型组件并点击测试框架 > 为 <Model or Model Element> 创建 时,将打开“创建测试框架”对话框。要记录被测组件的所有输出信号,请选择记录输出信号,它位于 Subsystem 模块和库框架的“创建新框架”对话框的基本属性选项卡上。对于所有其他类型的框架,选项位于高级属性选项卡上。与日志记录不兼容的信号没有附加日志记录徽章。兼容性在编译时确定。创建框架后,您可以通过打开框架、右键单击信号并选择停止记录所选信号来关闭信号的日志记录。如果信号没有名称,则使用 <component under test name>:<output port number>
格式为其分配一个名称以进行测试执行。未命名的传播信号使用其传播源信号的名称。要以编程方式记录所有测试框架信号,请将 'LogHarnessOutputs',true
作为 sltest.harness.create
的输入。
在测试管理器中添加记录信号
添加信号:
打开模型
sltestFlutterSuppressionSystemExample
。openExample('sltestFlutterSuppressionSystemExample')
使用
sltest.testmanager.view
打开测试管理器。单击打开并打开
sltestFlutterCriteriaTest.mldatx
测试文件。在测试管理器中的仿真输出下,点击添加。
在在测系统中,突出显示您想要记录的模块或信号。要选择多个项目,点击并将选择框拖到多个项目上。
出现一个对话框。在对话框中选择信号。
继续向测试用例添加信号。每次选择一个信号时,对话框还会显示先前记录的信号。您可以通过清除选择来从日志中删除信号。
添加完信号后,返回测试管理器并点击完成。
信号出现在测试用例中的记录的信号表中。
要添加信号集,点击添加箭头并选择信号集。
要指定信号的特定图,请在绘图索引列中输入一个数字。默认情况下,信号出现在一个图上。
您可以通过选择仿真后在指定图上绘制信号复选框来指定在运行测试后立即显示图表。
运行测试后,记录的信号会出现在仿真输出下的测试用例结果中。选择要在图上显示的每个信号。如果您指定了绘图索引,则信号会出现在您指定的绘图编号中。
从本地和全局数据存储中捕获数据
执行类似的步骤来添加与数据存储内存相关的仿真输出:
使用
openExample('sldemo_mdlref_dsm')
打开模型,其中包含本地和全局数据存储内存。使用
sltest.testmanager.view
打开测试管理器。单击新建 > 从模型创建测试文件创建一个新的测试文件。
转到顶层模型,选择 Sine Wave 模块信号并点击记录所选信号。标记 Data Store Read (ErrorCond)模块信号以供记录。
选择顶层模型中的 Data Store Read 模块。在建模选项卡中,点击更新模型。该模型显示该模块的信号存储类,
(global)
。在测试管理器中,选择新测试用例 1 并展开仿真输出部分。点击记录的信号右下角的添加。
在模型中,选择 Sine Wave 模块,然后在连接对话框中选择正弦波:1。然后,选择 Data Store Read 模块并在对话框中选择数据存储读取:1 和 ErrorCond(基础工作区)。
在模型中,双击
sldemo_mdlref_dsm_bot
将其打开。然后,打开子系统PositiveSS
。选择 Data Store Write 模块。对话框显示来自 Gain 模块和数据存储器RefSignalVal
的输入信号。选择
RefSignalVal
数据存储内存进行记录。通过单击测试管理器窗口中的完成来完成信号选择。在测试管理器中,信号出现在记录的信号下。源列显示每个信号的完整路径信息。
记录总线的叶子信号
除了记录整个总线模块之外,您还可以选择总线内的一个或多个单独信号,并将它们添加到测试管理器的记录的信号部分。对于大型公交车,仅添加所需的信号可能会减少测试用例运行所需的时间。
使用
openExample('sldemo_absbrake')
打开模型。使用
sltest.testmanager.view
打开测试管理器。单击新建 > 测试文件创建一个新的测试文件。命名并保存文件。
在在测系统下,点击使用当前模型图标。
在仿真输出下,点击添加。
在在测系统中,选择退出总线的信号
yout
。出现一个对话框。在对话框中选择所需的总线或总线叶信号。三条水平线表示整个公交车。信号名称旁边的单条水平线表示这是一个公交叶信号。如果对话框中没有出现叶信号,点击点击以更新图。
继续向测试用例添加信号,例如非总线
Sd
和tire torque
信号添加完信号后,返回测试管理器并点击完成。
信号出现在测试用例中的记录的信号表中。
要添加信号集,点击添加箭头并选择信号集。
要指定信号的特定图,请在绘图索引列中输入一个数字。默认情况下,信号出现在一个图上。
您可以通过选择仿真后在指定图上绘制信号复选框来指定在运行测试后立即显示图表。
使用触发器启动和停止信号记录
默认情况下,记录整个仿真的输出信号。要指定信号记录的开始和停止时间,请使用输出触发器。输出触发器可以是条件表达式或持续时间。当条件表达式计算结果为 true 时,日志记录开始或停止。开始持续时间是仿真开始后开始记录的时间(以秒为单位)。停止时长是指信号记录开始后,记录停止的时间。要指定触发器和条件触发器中使用的符号,请在测试管理器中使用仿真输出下的输出触发子部分作为测试用例。要以编程方式获取触发器结果,请使用 sltest.testmanager.OutputTrigger
指定触发器,使用 sltest.testmanager.OutputTriggerResult
获取触发器结果。但是,您必须使用测试管理器来定义和映射条件触发器中使用的符号。
向测试用例添加触发器
此示例显示如何使用测试管理器向测试用例添加触发器。当 Ww
输出信号大于 40 时,触发器开始记录输出数据,并在 4 秒后停止记录输出数据。
1.打开模型。
sldemo_absbrake
2.在测试管理器中打开测试文件。该文件包含一个预定义的测试用例,触发测试用例。
sltest.testmanager.load('AddTriggersToTest.mldatx');
sltest.testmanager.view;
3.选择触发测试用例并展开仿真输出部分。
4.在输出触发器下,将开始记录设置为 When condition is true
。然后,点击条件旁边的编辑图标并输入 Ww
< 40
。
5.将停止日志记录设置为 After Duration
。单击持续时间(秒)旁边的,然后输入 4
。保持选中将时间移至零。此选项会移动记录的信号,以便触发的输出显示为从时间 0
开始。
Ww
出现在符号中,带有红色图标,表示它是一个未解析的符号。
6.指向 Ww
,点击菜单图标并选择映射到模型元素。
在模型中,选择 Ww
信号。在“连接”对话框中,选择“Ww
”。
7.返回测试管理器并点击完成。Ww
符号更新并显示其详细信息。
8.运行测试。
9.在结果和工件窗格中,显示触发的 Ww
输出。
将触发的输出图与下图进行比较,该图显示了记录整个仿真时的输出。触发的部分被突出显示。上面触发的图被移至时间 0 开始。当信号等于 40 时开始记录,并在 4 秒后停止。
要创建整个仿真的图表,请将开始记录设置为 On simulation start
,并将停止记录设置为 When simulation stops
。
11.要查看仿真摘要(包括触发器信息),请选择触发器测试用例并展开仿真元数据。
12.清理并关闭测试管理器并关闭模型。
sltest.testmanager.clear sltest.testmanager.clearResults sltest.testmanager.close
触发器限制
这些限制适用于启用了条件或持续时间触发器的测试用例:
您无法获得覆盖率。
如果一个测试用例有迭代,则为该测试用例定义的开始和停止触发器将适用于所有迭代。
另请参阅
sltest.testmanager.TestCase
| sltest.testmanager.LoggedSignal
| sltest.testmanager.LoggedSignalSet
| Simulink.Signal
| sltest.testmanager.OutputTrigger
| sltest.testmanager.OutputTriggerResult
| sltest.testmanager.TriggerMode
| Simulink 测试管理器