为模型或组件生成测试和测试框架
在测试管理器中,创建组件测试向导会为模型或模型中的组件创建测试框架和测试用例。您还可以使用该向导为模型中的多个组件创建测试框架和测试用例。您可以为其创建测试框架的组件包括子系统、Stateflow® 图和 Model 模块。有关测试框架支持的组件的完整列表,请参阅 测试框架与模型关系。如果选择的模型组件与向导不兼容,则该组件不会出现在向导中。
在向导中,您指定:
要测试的模型。
如果您不测试整个模型,则需要测试一个或多个组件。
测试输入。
要在组件上运行的测试类型。
是否将测试数据保存在 MAT 文件或 Excel® 中。有关在测试管理器中使用 Excel 文件的更多信息,请参阅 Excel 中的输入、基线和其他测试用例数据格式。
有关使用向导的示例,请参阅 创建并运行背靠背测试。
打开创建组件测试向导
运行向导之前,请检查您的模型。
如果您使用采用软件在环(SIL) 或处理器在环(PIL) 模式的等效性测试来测试原子子系统的代码,请验证该子系统是否已生成代码。
如果您正在测试为可重用库子系统生成的代码,则在打开“创建组件测试”向导之前,请验证子系统是否已定义函数接口,以及库是否已生成代码。有关可重用库子系统、功能接口和生成的代码的信息,请参阅 Library-Based Code Generation for Reusable Library Subsystems (Embedded Coder)。您必须拥有 Embedded Coder® 许可证才能验证生成的代码。
如果要测试一个或多个组件,请在打开向导之前选择模型中的组件。当向导打开时,点击使用当前选择的组件以添加选定的组件并填写顶层模型字段。
要打开“创建组件测试”向导,请在测试管理器中选择“新建 > 为模型组件创建测试”。
选择要测试的模型或组件
如果您没有在模型中选择任何组件,请在向导的第一页上点击使用当前模型按钮 以填写顶层模型字段。
然后,如果您正在测试:
整个模型,不要选择将组件添加到选择的组件窗格。
要测试整个模型而不创建测试框架,请清除为组件创建测试框架。如果您正在测试模型中的一个或多个特定组件,向导将自动创建测试框架,并且不会显示为组件创建测试框架选项。
一个或多个组件,并且您在打开向导之前没有在模型中选择组件,请选择组件或按 Ctrl 并点击要测试的组件。点击加号按钮 将组件添加到选择的组件窗格。要删除一个或多个组件,请按 Ctrl 并在选择的组件窗格中点击以选择它们,然后点击删除按钮 。
Model 模块中的组件,您不需要指定 Model 模块作为顶层模型。使用包含 Model 模块的模型的名称作为顶层模型。
具有函数接口的可重用库子系统,显示函数接口设置选项。选择要创建测试的功能接口。如果选择多个组件,则不会显示函数接口设置选项。
可重复使用的库包含可与多个模型共享的组件和子系统。如果子系统位于可重用库的顶层并且具有函数接口,则可以共享子系统生成的代码。函数接口指定子系统输入和输出模块参数设置。
注意
对于导出函数模型,测试框架会自动创建一个 Test Sequence 模块。
如果您已经在模型中选择了一个或多个组件,请在向导的第一页上点击“使用当前选择的组件”以填写“顶层模型”字段并自动添加所选组件。
单击“下一步”转到向导的下一页。
设置测试输入
在测试输入页面上,选择如何获取测试输入。
使用来自顶层模型的组件输入作为测试输入 —仿真模型并记录组件的输入。然后,使用这些输入作为创建的测试框架的输入。使用此选项进行调试。
注意
如果您正在测试具有函数调用的子系统,则您无法通过仿真模型来获取输入,因为无法记录函数调用。使用另外两个选项中的任意一个来获取输入。
使用 Design Verifier 生成测试输入场景 — 使用 Simulink® Design Verifier™ 创建测试框架输入以满足测试覆盖率需求。仅当安装了 Simulink Design Verifier 时才会出现此选项。
仿真顶层模型并在分析中使用记录的组件输入 — 当 Design Verifier 生成的测试用例的覆盖率低于预期时,选择此选项以包含 Design Verifier 分析的顶层模型仿真。
在创建的框架中指定输入 — 向导创建框架后,在测试管理器中打开框架并手动指定框架输入。如果您选择不创建测试框架,则不会出现此选项。
测试方法
在验证策略页面上,选择如何测试组件。
使用在测组件输出作为基线 —仿真模型并记录组件的输出,用作基线。
执行背靠背测试 — 比较在两种不同的仿真模式下运行组件的结果。对于每次仿真,从下拉菜单中选择模式。要对原子子系统或可重用库子系统进行 SIL 测试,包含该子系统的子系统或库必须已经生成代码。
如果您在测试输入选项卡上选择了使用 Design Verifier 生成测试输入场景,并选择了仿真 2 到
Software-in-the-Loop (SIL)
或Processor-in-the-Loop (PIL)
,则向导将显示将模型覆盖率目标设置为 "增强的 MCDC" 选项。增强型 MCDC 通过生成避免下游模块掩盖效应的测试用例扩展 MCDC 覆盖率。参见 Simulink Design Verifier 中的增强 MCDC 覆盖范围 (Simulink Design Verifier) 和 使用增强型 MCDC 创建背靠背测试 (Simulink Design Verifier)。在创建的框架中定义验证逻辑 — 向导创建框架后,打开该框架。使用生成的框架中的 Test Sequence 或 Test Assessments 模块手动指定验证逻辑。或者,在生成的测试用例中使用逻辑和时序评估或自定义准则。如果您正在测试顶层模型并且选择不创建测试框架,则不会出现此选项。
保存测试数据
在生成的测试页面上,选择保存测试数据的格式并指定生成的测试的文件名。
选择测试框架输入源 — 选择如何将 Design Verifier 生成的输入应用于测试框架。仅当您在“测试输入”选项卡上选择“使用 Design Verifier 生成测试输入场景”时才会出现此选项。
输入端口 — 创建一个以 Inport 模块为源的测试框架。
信号编辑器 — 创建一个测试框架,以信号编辑器为源,其中包含由 Design Verifier 生成的输入场景。
指定文件格式 — 指定保存数据的文件类型。仅当您选择输入端口作为输入源时才会出现此选项。
Excel — 将测试输入、输出和参数保存到 Excel 电子表格文件的一张表中。对于具有多次迭代的测试,每次迭代都在单独的表中。有关在测试管理器中使用 Excel 文件的更多信息,请参阅 Excel 中的输入、基线和其他测试用例数据格式。
MAT — 将输入和输出保存在单独的 MAT 文件中。对于使用 Simulink Design Verifier 的测试,向导会将输入和参数保存在一个文件中,并将输出保存在一个基线文件中。
指定保存测试数据的位置 — 指定文件的完整路径。或者,您可以使用默认文件名和位置,将
sltest_<model name>
保存在当前工作文件夹中。此选项仅适用于 Excel 格式的文件。MAT 文件保存到模型配置设置中指定的默认位置。测试文件位置 — 指定您想要保存生成的测试文件的完整路径。或者,您可以使用默认文件名,即
sltest_<model name>_tests
。该文件保存在当前工作文件夹中。仅当您在打开向导之前未在测试管理器中打开测试文件时,才会出现此字段。如果在打开向导之前在测试管理器中打开了一个测试文件,则会显示这些选项而不是测试文件位置:
将测试添加到当前所选测试文件中 — 生成的测试将添加到您打开向导时在测试管理器的测试浏览器面板中选择的测试文件中。
创建包含测试的新测试文件 — 为测试创建一个新的测试文件。它出现在测试管理器的测试浏览器面板中。
生成测试框架和测试用例
单击完成生成测试框架和测试用例。如果您正在测试整个模型并且在向导的第一个选项卡上取消选择创建测试框架,则不会创建测试框架。
然后,测试管理器打开,测试浏览器窗格中显示测试用例,如果创建了测试框架,则在测系统部分的框架字段中显示测试框架名称。该测试用例名为<model name>_Harness<#>。
注意
如果模型具有现有的外部框架,向导将为被测组件创建额外的外部测试框架。如果不存在框架或者存在内部框架,向导将创建一个内部测试框架。
如果您使用等效性测试测试原子子系统或模型模块的代码,并且在验证策略选项卡上将仿真 2 设置为 Software-in-the-Loop (SIL)
或 Processor-in-the-Loop (PIL)
,则向导只会为普通和 SIL 或 PIL 仿真模式创建一个测试框架。对于其他等效性测试,向导将创建两个框架,每个仿真模式一个。对于以下类型的子系统和模型配置,即使子系统是原子的,向导也会创建两个测试框架。
虚拟子系统
Function-call、For Each、If Action、S-Function、Initialize Function、Terminate Function 和 Reset Function 子系统
Stateflow 图
如果子系统代码将
PreserveStaticInFcnDecls
设置为on
,则子系统中ERTFilePackagingFormat
属性设置为Compact
。生成内联代码的子系统,例如
RTWSystemCode
属性不是Nonreusable function
或Reusable function
的子系统。包含引用模型、S-Function、数据存储读取或 Data Store Write 模块的子系统
接口处具有虚拟总线的子系统
包含 LDRA 或 BullsEye 代码覆盖率的子系统
包括信号记录的子系统
另请参阅
sltest.testmanager.createTestForComponent