Main Content

创建简单基线测试

此示例说明如何创建一个简单的测试来将测试结果与基线数据进行比较。当您更改模型并希望确保输出与基线数据匹配时,可以在回归测试中使用基线测试。

此示例中使用的模型是 sltestBasicCruiseControlBaseline,它有一个名为 Controller 的子系统,其中包含具有六个输入信号以及油门和目标速度输出信号的总线。

打开模型

open_system('sltestBasicCruiseControlBaseline')

Cruise control model for baseline test

创建测试框架

此示例的测试框架是一个单独的模型,可用于测试 Controller 子系统,而无需更改子系统或主模型。

1.在主模型中,右键点击 Controller 模块,然后从菜单中选择测试框架 > 为 'Controller' 创建

2.在“创建测试框架”对话框中,点击确定以使用默认值创建测试框架。系统会打开创建的测试框架 sltestBasicCruiseControlBaseline_Harness1

Harness model for controller component

创建测试文件和测试结构

打开测试管理器,为您的测试创建测试文件和测试文件结构。默认结构中包含一个测试套件,该测试套件中包含一个测试用例。当您创建测试文件时,默认情况下会创建一个新的基线测试用例。测试文件可以包含一个或多个测试套件,测试套件可以包含一个或多个测试用例。

1.在框架选项卡中,点击 Simulink 测试管理器

2.在测试管理器中,点击新建 > 测试文件以打开“保存文件”对话框。

3.输入 baseline_test 作为测试文件的名称,然后点击确定。系统会在测试浏览器窗格中打开测试文件结构。

Test file structure showing file, test suite, and test case names

4.右键点击新建测试用例 1,然后从菜单中选择重命名。将测试用例命名为 My Baseline Test

Renamed test case

指定模型和测试框架

设置用于测试用例的模型和测试框架。

1.点击 My Baseline Test 测试用例。

2.在右窗格中,展开在测系统部分。点击模型字段旁边的“使用当前模型”图标 current model button image,将 sltestBasicCruiseControlBaseline.slx 添加为要测试的模型。

System under test section for the test case

3.展开测试框架部分,然后点击框架下拉菜单旁边的“刷新框架模型信息”图标 refresh button image 以刷新框架列表。

Test harness section for the test case

4.从下拉菜单中选择 sltestBasicCruiseControlBaseline_Harness1

指定输入

此示例使用 inputs.mat 文件中提供的输入。

1.展开输入部分。

2.在外部输入下,点击添加

3.在“添加输入”对话框中,指定或浏览 inputs.mat 文件,然后点击添加

4.系统会展开“添加输入”对话框以显示其他选项。在输入映射下,将映射模式属性保留为 Block Name,然后点击映射输入。系统会更新“添加输入”对话框以显示输入已成功映射。

Add input dialog box

5.点击添加以关闭对话框,然后将 inputs.mat 文件添加到外部输入表中。

捕获基线数据

获取并保存基线数据。

1.展开基线准则部分。

2.点击该部分底部的捕获

3.在“捕获基线”对话框中,输入 baseline_data 作为文件名。然后点击捕获。模型会仿真并保存基线数据。

运行测试并查看结果

运行基线测试并显示油门信号结果。

1.在“测试浏览器”选项卡中,确保选中 My Baseline Test。点击工具条中的运行以运行基线测试用例。

2.测试完成后,测试管理器会打开结果和工件窗格。在此示例中,捕获基线后模型未发生更改,因此基线测试通过。

在“结果和工件”窗格中,展开结果并选择 throt:1 信号。

Test results plots

上面的图显示了基线数据和仿真输出数据,二者是匹配的。下面的图显示了在整个运行过程中,两个数据集之间的差值为零。target:1 信号的测试结果也匹配,也具有零差值。

清理

清除测试结果,关闭测试管理器而不保存,然后关闭模型。

sltest.testmanager.clear
sltest.testmanager.clearResults
sltest.testmanager.close
close_system('sltestBasicCruiseControlBaseline',0)

相关主题