创建或导入测试框架并选择属性
测试框架是独立的工作区,你可以使用它来将测试与设计模型隔离。您可以为整个模型或模型中的一个或多个组件创建测试框架。您还可以从独立测试模型导入测试框架。
为顶级模型创建测试框架
要为顶层模型(包括子系统和模型参考模型)创建测试框架:
在 Simulink® 模型中单击鼠标右键,然后点击测试框架 > 为模型创建 以打开“创建测试框架”对话框。
选择所需选项后,点击“确定”以创建测试框架。
有关“创建测试框架”对话框属性的信息,请参阅 创建测试框架对话框属性。
为模型组件创建测试框架
要为一个或多个模型组件创建测试框架:
在 App 选项卡上的“模型验证、确认和测试”下,点击 Simulink Test。
在测试选项卡上,点击 Simulink 测试管理器以打开测试管理器。
在测试管理器中创建一个新的测试文件。
单击 新建 > 为模型组件创建测试,打开“为模型组件创建测试”工作流向导。
在向导的第一页上,指定模型并选择一个或多个组件。如果您选择多个组件,向导会为每个组件创建一个测试框架。
通过完成向导页面来创建测试框架或框架组。
注意
为模型组件创建测试工作流向导公开了测试框架选项的子集。如果您的测试框架不需要使用非默认选项,请使用向导快速创建框架。如果需要更改其他选项,请使用通过向导创建的测试框架的测试管理器。有关使用向导及其设置的属性的信息,请参阅 为模型或组件生成测试和测试框架。
导入测试框架
要从独立测试模型导入测试框架:
右键单击 Simulink 模型或模型组件,然后分别点击测试框架 > 为模型导入 或 测试框架 > 为组件导入,以打开“导入测试框架”对话框。
选择所需选项后,点击“确定”导入测试框架。
注意
不支持导入具有客户端-服务器端口的软件架构组件的测试框架。
有关导入测试框架对话框属性的信息,请参阅 导入测试框架对话框属性。
预览并打开测试框架
当模型组件具有测试框架时,模块的右下角会出现一个徽章。要查看测试框架,点击徽章。要打开测试框架,点击一个图模块。
要查看模型模块的测试框架,点击模型画布中的拉出图标。要打开测试框架,点击一个图模块。
更改测试框架属性
要更改打开的测试框架的属性,点击测试框架模块中的徽章 ,然后点击测试框架属性以打开框架属性对话框。
要从主模型更改测试框架的属性,点击测试框架预览中的框架操作图标。
选择测试框架属性的注意事项
在选择测试框架属性之前,请考虑以下事项:
您希望使用什么数据源作为测试用例输入
您希望如何查看或存储测试输出
是否要将参数和工作区从主模型复制到框架
是否计划编辑被测组件
您希望如何在测试框架和模型之间同步更改
除信源和信宿外,您可以稍后使用框架属性对话框更改框架属性。要在创建框架后更改信源和信宿,请手动从测试框架中移除模块并将其替换为新的信源和信宿。
注意
以下部分介绍了“创建测试框架”对话框中的测试框架属性。有关“为模型组件创建测试”向导中的测试框架属性的信息,请参阅 为模型或组件生成测试和测试框架。
创建测试框架对话框属性
框架名称
测试框架必须使用有效的 MATLAB® 文件名。
在外部保存测试框架
使用此复选框选择模型是否在内部或外部存储测试框架:
清除后,模型会在内部保存测试框架,作为模型 SLX 或 MDL 文件的一部分。
选中后,模型会在当前工作文件夹中的单独 SLX 文件中外部保存测试框架,并将框架信息 XML 文件添加到模型文件夹。框架信息文件可以位于 MATLAB 路径上的任何位置。
如果模型已经有测试框架,则对话框不会显示复选框。相反,对话框显示消息框架已内部保存或框架已外部保存,指示先前创建的测试框架的存储方式。模型的所有测试框架均存储在内部或外部,因此当您创建附加框架时,其存储方式与以前的框架相同。
参见 管理测试框架。
选择功能界面
选择要与可重用库子系统测试框架关联的功能接口。仅当被测组件是具有功能接口的可重用库子系统时才会出现此选项。
源和汇
在“创建测试框架”对话框中,在信源和信宿下,从相应的菜单中选择信源和信宿。菜单提供了常见的信源和信宿。
您可以使用来自 Simulink Sources 或 Sinks 库的信源模块和信宿模块。选择自定义信源或信宿,然后输入模块的路径。例如:
simulink/Sources/Sine Wave
simulink/Sinks/Terminator
自定义信源和信宿使用每个端口一个模块来构建测试框架。
创建标量输入
当您选择此属性时,测试框架会为多维信号创建标量输入。各个标量输入被重塑,以匹配被测组件输入信号的维度。仅当框架所有者模型可以框架生成之前进行编译时,才会执行标量扩展。使用创建而不编译模型选项集创建的库、子系统模型和框架不会首先编译,因此创建标量输入不适用于它们。创建标量输入适用于具有 Inport、Constant、Signal Editor、From Workspace 或 From File 源模块的测试框架。
添加函数调用和速率的调度程序/使用生成函数调用信号
此选项的标题取决于被测组件是子系统还是模型。使用调度程序来控制执行模块或子系统的次数和顺序。要在测试框架中包含调度程序模块,请从下拉列表中选择一个模块。您可以使用 Test Sequence 模块、MATLAB 功能模块或 Stateflow® 图作为调度程序。
为函数调用和速率添加调度器:对于模型,您可以使用模块来调用函数并设置模型输入和输出的采样时间。
使用以下项生成函数调用信号:对于子系统,您可以使用模块来调用子系统中的函数。
有关调度程序的信息,请参阅 速率转换 (Embedded Coder)、Rate Transitions and Asynchronous Blocks (Embedded Coder) 或 使用 Stateflow 调度 Simulink 函数 (Stateflow)
启用初始化、重置和终止端口
选择此选项将公开被测组件中的初始化、终止或重置函数调用端口,并将调度程序模块连接到端口。
当您为顶层模型创建测试框架并为为函数调用和速率添加调度器选项选择一个模块时,会出现此选项。
运行测试框架时,如果在初始化、重置或终止端口执行函数调用时遇到错误,请使用这些命令隐藏和断开端口。Subsystem_name
是测试框架中在测系统。
set_param(<Subsystem_name>,'ShowModelInitializePort','off'); set_param(<Subsystem_name>,'ShowModelResetPorts','off'); set_param(<Subsystem_name>,'ShowModelTerminatePort','off');
添加单独的评估模块
选择添加单独的 Test Assessment 模块以在测试框架中包含单独的 Test Assessment 模块。
Test Assessment 模块是一个单独的 Test Sequence 模块,其配置了常用于验证被测组件的属性。有关更多信息,请参阅 评估仿真并比较输出数据 和 使用 verify 语句评估模型仿真。
记录输出信号
选择记录输出信号来记录被测组件的所有输出信号。仅当创建新的框架时才可以使用此选项。在测试用例执行期间记录信号并返回测试结果。如果输出信号没有名称或传播名称,则使用 <component under test name>:<output port number>
格式框架中为其分配一个名称。要删除记录的信号,请打开框架,右键单击信号,然后选择停止记录所选信号。
创建后打开框架
清除创建后打开框架以创建测试框架而不打开它。这对于连续创建多个测试框架很有用。
无需编译模型即可创建
如果您正在对尚无法编译的设计进行原型设计,那么在不编译模型的情况下创建测试框架会很有用。当您创建测试框架而不编译主模型时:
参数不会被复制到测试框架工作区。
主模型配置未复制到测试框架。
测试框架不包含转换子系统。
您可能需要向测试框架添加诸如信号转换模块之类的模块。当您准备好编译主模型时,您可以重建框架。有关更多信息,请参阅 同步测试框架和模型之间的更改。
无需编译模型即可创建子系统模型的测试框架。
验证模式
测试框架验证模式决定了测试框架中生成的模块的类型。
普通:Simulink 模块。
软件在环(SIL)|:被测组件引用生成的代码,以软件在环的方式运行。需要 Embedded Coder®。
处理器在环(PIL):被测组件引用针对特定处理器指令集生成的代码,作为处理器在环运行。需要 Embedded Coder。
子系统模型测试框架不支持 SIL 或 PIL 验证。
注意
保持测试框架中的 SIL 或 PIL 代码与最新的组件设计同步。如果您选择 SIL 或 PIL 验证模式而不选择打开时重新构建框架,您的 SIL 或 PIL 模块代码可能无法反映主模型设计的最新更新。要为测试框架中的 SIL 或 PIL 模块重新生成代码,请选择 重新构建框架 > 更新框架配置设置和模型工作区。
使用生成的代码创建 SIL/PIL 模块
如果 SIL/PIL 模块的生成代码已经存在,请选择此属性以使用现有代码而不是重新生成代码。此选项仅适用于子系统框架。它不适用于子系统模型测试框架。
构建文件夹
指定包含 SIL/PIL 模块生成的代码的文件夹。仅当您选择使用现有生成代码创建 SIL/PIL 模块时此选项才可用。
创建后回调方法
您可以使用一个或多个创建后回调来定制您的测试框架。创建后回调是在创建框架之后运行的函数。例如,您的回调可以设置信号记录,添加自定义模块,或更改框架仿真时间。如果指定多个回调,请使用逗号分隔。回调按照列出的顺序运行。有关更多信息,请参阅 自定义测试框架。此选项不适用于子系统模型测试框架。
重建打开的框架
当您选择此属性时,每次打开时测试框架都会重建。如果您指定使用 sltest.harness.create
或 sltest.harness.set
为 SIL/PIL 子系统使用现有的生成代码,则框架重建将使用该代码而不是重新生成它。有关重建过程的详细信息,请参阅同步测试框架和模型之间的更改。此选项不适用于子系统模型测试框架。
重建时更新配置参数和模型工作区数据
如果选择此属性,则重建框架时配置参数和模型工作区数据将会更新。有关重建过程的详细信息,请参阅同步测试框架和模型之间的更改。此选项不适用于子系统模型测试框架。
重建后回调方法
您可以使用重建后回调来定制您的测试框架。重建后回调是在重建框架后运行的函数。例如,您的回调可以设置信号记录,添加自定义模块,或更改框架仿真时间。有关更多信息,请参阅 自定义测试框架。此选项不适用于子系统模型测试框架。
同步模式
同步模式控制何时将测试组件的变更同步到主模型,以及何时将框架所有者的变更同步到测试框架。同步模式还会影响模型和框架锁定。
有关更多信息和限制,请参阅 同步测试框架和模型之间的更改、为新测试框架设置同步 和 模型和测试框架锁定。
注意
根据打开的是一个测试框架还是多个测试框架,同步会有所不同。有关信息请参阅本表的描述列。
同步类型 | 描述 | 可用性 | 框架打开时模型、切割和框架锁定 |
---|---|---|---|
在框架打开和关闭时同步 | 当您仅打开一个测试框架时,框架组件和参数将从模型同步到测试框架。当您关闭唯一打开的测试框架时,相同的元素将从框架同步到模型。 当您打开多个框架时,将从模型到框架进行同步,但如果有任何框架保持打开状态,则关闭框架时不会发生同步。 | 可以用来:
不适用于:
| 当仅打开一个框架时,主模型中的 CUT 被解锁,但子系统中的 CUT 被锁定。框架中的子系统 CUT 已解锁。 当打开多个框架时,模型框架、子系统框架、库框架和 MATLAB 功能中的 CUT 将被锁定。 |
在框架打开时同步 | 当您打开一个或多个测试框架时,框架组件和参数会从模型同步到测试框架。 | 可以用来:
不适用于:
| 当仅打开一个框架时,主模型和框架中的 CUT 将被解锁,但主模型和框架中子系统中的 CUT 将被锁定。 当打开多个框架时,模型框架、子系统框架、库框架和 MATLAB 功能中的 CUT 将被锁定。 |
仅在推送和重构期间同步 | 当仅打开一个框架时,点击推送更改或重新构建框架时会发生同步。单击推送可将测试框架的更改同步到模型。单击重新编译可将更改从模型同步到测试框架。 当打开多个框架时,仅当您重建模型时才会发生同步。不支持推送同步。 | 可以用来:
不适用于:
| 当打开一个或多个框架时,主模型、框架以及模型和框架中的所有类型的 CUT(包括子系统)都将被解锁。 |
仅在重构间同步 | 当打开一个或多个框架时,仅当您点击重建框架时才会发生同步。变更从模型同步到测试框架。 | 可以用来:
不适用于:
| 主模型、框架以及模型中的所有类型的 CUT 均已解锁。框架中所有类型的 CUT 均已解锁,但 SIL/PIL 验证模式组件除外,这些组件已锁定并被屏蔽。 |
导入测试框架对话框属性
名称
用于导入的测试框架的名称。测试框架必须使用有效的 MATLAB 文件名。
保存外部测试框架
此选项控制模型如何存储测试框架。模型将其所有测试框架存储在内部或外部。
如果模型已经有测试框架,则对话框不会显示复选框。对话框显示框架已内部保存或框架已外部保存,表明先前创建的测试框架的存储方式。由于模型的所有测试框架均存储在内部或外部,因此当您创建附加框架时,其存储方式与以前的框架相同。
清除后,模型会将测试框架保存为模型 SLX 文件的一部分。
选中后,模型会将测试框架保存在当前工作文件夹中的单独 SLX 文件中,并将框架信息 XML 文件添加到模型文件夹。框架信息文件可以位于 MATLAB 路径上的任何位置。
参见 管理测试框架。
要导入的 Simulink 模型
要导入的 Simulink 独立测试模型的名称或完整路径。
导入模型中的被测组件
导入的 Simulink 独立测试模型中被测组件的路径。
重建打开的框架
当您选择此属性时,每次打开时测试框架都会重建。如果您指定使用 sltest.harness.create
或 sltest.harness.set
为 SIL/PIL 子系统使用现有的生成代码,则框架重建将使用该代码而不是重新生成它。有关重建过程的详细信息,请参阅同步测试框架和模型之间的更改。此选项不适用于子系统模型测试框架。
重建时更新配置参数和模型工作区数据
如果选择此属性,则重建框架时配置参数和模型工作区数据会更新。有关重建过程的详细信息,请参阅同步测试框架和模型之间的更改。此选项不适用于子系统模型测试框架。
自定义测试框架创建默认属性值
要为新测试框架的创建设置默认属性值,请使用 sl_customization
文件或 setHarnessCreateDefaults
函数。所有新创建的测试框架都使用新的默认值。
要查看当前默认测试框架属性值,请使用 sltest.harness.getHarnessCreateDefaults
。
对于单个测试框架,您可以使用“创建测试框架”对话框或 sltest.harness.create
函数更改属性值的默认值。使用其中任何一个选项都不会改变创建新测试框架时使用的默认值。另请参阅 创建测试框架对话框属性 和 更改测试框架属性。
使用 sl_customization.m
文件设置默认值
要更改创建新测试框架时使用的默认属性值,您可以创建一个 sl_customization.m
文件。
创建一个
sl_customization.m
文件并指定新的默认属性值。您可以设置
sltest.harness.create
的所有名称-值参量,除非另有说明。此示例
sl_customization.m
文件将框架名称设置为myTestHarness
,设置后创建回调以使用addHarnessAnnotation
函数,在内部保存框架,并记录输出:function sl_customization(cm) % Create the struct with the harness options myStruct.Name="myTestHarness" myStruct.PostCreateCallback = "addHarnessAnnotation"; myStruct.SaveExternally = false; myStruct.LogOutputs = true; % Invoke harness customization cObj = cm.SimulinkTestCustomizer; cObj.setHarnessCreateDefaults(myStruct); end
保存
sl_customization.m
文件。将文件添加到 MATLAB 路径。
通过重新加载 Simulink 或使用
sl_refresh_customizations
来注册新的定制。有关更多信息,请参阅 向 Simulink 注册自定义项。注意
当您注册一个文件时,它的值将成为默认属性值。所有新的测试框架都使用默认属性值,并且所有先前注册的值都将被清除。
要查看自定义的默认值,请使用
sltest.harness.getHarnessCreateDefaults
。
使用 setHarnessCreateDefaults
函数设置默认值
您还可以使用 sltest.harness.setHarnessCreateDefaults
来设置默认属性值。您可以设置 sltest.harness.create
中描述的任何名称-值对属性,除非另有说明。使用 sltest.harness.setHarnessCreateDefaults
保存并注册默认属性值。但是,如果您已经使用 sl_customization.m
文件设置并注册了值,则使用 sltest.harness.setHarnessCreateDefaults
将覆盖文件中指定的值。
另请参阅
sltest.harness.setHarnessCreateDefaults
| sltest.harness.getHarnessCreateDefaults
| Test Sequence