第二章 测试环境搭建:Simulink Test Manager介绍、测试工程创建、测试环境配置

好,咱们直接进入正题。上一章聊了MIL测试到底是个啥,这一章咱们得把家伙事儿支棱起来。说白了,就是搭建测试环境。

我个人习惯,做任何项目前先把环境理清楚。环境搭不好,后面全是坑。Simulink Test Manager,就是咱们MIL测试的主战场。你想想看,没有它,你写测试用例、跑仿真、看结果,全得手动搞,那不得累死?

2.1 Simulink Test Manager 是个啥?

简单说,它就是MATLAB/Simulink官方提供的一个测试管理工具。你可以把它理解成一个“测试总控台”。

它能干嘛?我列几个核心功能:

  • 管理测试用例:把测试输入、预期输出、仿真参数打包成一个TestCase。
  • 批量执行:一键跑完所有测试用例,不用一个个点。
  • 结果对比:自动把仿真结果和预期值做比对,通过/失败一目了然。
  • 生成报告:测试完了,直接导出PDF或HTML报告,给领导看,给客户看。

嗯,这里要注意。Test Manager不是万能的。它擅长的是“基于模型的测试”,也就是咱们MIL这个阶段。到了后面的SIL、HIL,它也能用,但侧重点不同。咱们先把MIL这块吃透。

我的小经验: 刚接触Test Manager时,别想着一步到位。先拿一个简单的模型练手,跑通一个TestCase,再慢慢加复杂度。我见过太多人一上来就想搞个几百个用例的大工程,结果环境配置就卡了三天。

2.2 创建你的第一个测试工程

好,咱们动手。打开MATLAB,在命令行输入:

sltestmgr

回车。Test Manager的界面就出来了。第一次看这个界面,可能会有点懵。别怕,咱们一步步来。

创建一个测试工程,我习惯这么做:

  1. 新建测试文件:在Test Manager左上角,点“New”→“Test File”。它会生成一个.mldatx文件。这个文件就是你的测试工程文件,所有测试用例、配置都存里面。
  2. 添加测试套件:在左侧浏览器窗口,右键你的测试文件,选“Add”→“Test Suite”。测试套件就是一组测试用例的集合。你可以按功能模块分,比如“速度控制测试套件”、“温度监控测试套件”。
  3. 创建测试用例:在测试套件上右键,选“Add”→“Test Case”。好了,一个空的TestCase诞生了。

你看,结构其实很清晰:测试文件 → 测试套件 → 测试用例。三层结构,跟文件夹套文件夹似的。

避坑指南: 我曾经犯过一个低级错误——把测试文件直接放在模型文件夹里。结果模型一改,测试文件也跟着乱套。后来我学乖了,专门建一个Test文件夹,跟ModelScript平级。这样管理起来清爽多了。

2.3 测试环境配置——别让细节坑了你

TestCase创建好了,但还不能直接用。你得告诉Test Manager:你要测哪个模型?仿真跑多久?输入信号从哪来?输出怎么比对?

这些都在TestCase的“属性”面板里配置。双击你的TestCase,右边会弹出详细配置区。我挑几个关键项说说:

2.3.1 关联被测模型

在“System Under Test”那一栏,点“Browse”,选中你要测的Simulink模型。注意,这里选的是模型文件(.slx),不是子系统。Test Manager会自动加载它。

为什么会这样?因为Test Manager需要知道模型的顶层接口,才能把测试输入喂进去。

2.3.2 配置输入信号

在“Inputs”选项卡里,你可以定义测试输入。有两种方式:

  • 使用Signal Builder块:在模型里放一个Signal Builder,画好波形。Test Manager会自动识别。
  • 使用MATLAB脚本:写一个.m文件,定义输入信号的时间序列。我个人更推荐这种方式,灵活,可复用。

举个例子,你想给一个油门信号输入一个阶跃:

% 定义时间向量
time = [0, 1, 1.1, 10]';
% 定义信号值
data = [0, 0, 1, 1]';
% 创建timeseries对象
throttle_input = timeseries(data, time);
% 保存到MAT文件
save('test_input.mat', 'throttle_input');

然后在Test Manager的Inputs里,选择“From Workspace”或“From MAT File”,指向这个变量或文件就行。

2.3.3 设置仿真参数

在“Simulation”选项卡里,设置仿真时长、求解器类型。这里有个坑:仿真时长必须和你的输入信号时长匹配。否则信号还没给完,仿真就停了,或者信号给完了仿真还在跑,结果全是无效数据。

警告: 千万别忘了设置“Stop Time”。我见过有人没设,结果仿真跑了几个小时,把服务器跑崩了。默认的Stop Time是10秒,但如果你输入信号是20秒,记得改过来。

2.3.4 定义预期输出与评估标准

在“Baseline”或“Assessment”选项卡里,定义你期望的输出。Baseline是存一个基准信号,仿真后自动比对。Assessment更灵活,你可以写自定义的评估逻辑,比如“输出必须在5%误差范围内”。

我一般这么用:

  • 功能测试用Baseline,简单直观。
  • 边界测试用Assessment,写一些判断条件,比如“输出不能超过上限”。

2.4 跑一次完整的MIL测试

配置完了,点一下“Run”按钮。Test Manager会开始仿真,跑完自动比对结果。

结果怎么看?在“Results and Artifacts”面板里:

  • 绿色勾:通过。
  • 红色叉:失败。
  • 黄色感叹号:警告,可能比对误差在临界值。

双击失败的用例,可以看到详细的比对曲线。哪里超了,哪里没对上,一目了然。

我的习惯: 每次跑完测试,我都会点一下“Export Report”,生成一份PDF。一来留档,二来方便跟同事讨论。你想想看,你拿着报告说“这个用例没过,因为输出在3.5秒时超了0.2%”,比空口说白话有说服力多了。

2.5 本章小结

嗯,这一章内容不少。咱们把Test Manager的界面、工程创建、环境配置都过了一遍。说白了,就是三步:建工程、配模型、跑测试。

下一章,咱们会深入讲测试用例的设计——怎么写出高质量的测试用例,而不是随便填几个数就完事。到时候我会分享一些我在实际项目中踩过的坑,保证让你少走弯路。

记住,环境搭好了,后面的事就顺了。别急,慢慢来。