单元测试之Simulink Test(上)
单元测试的目的创建完模型后,我们需要验证模型的行为,即仿真结果,是否跟我们预期的一致,这样才能保证由模型生成的代码在嵌入式系统中执行得到结果跟我们预期的一致。单元测试主要是以模型或者模型内的子系统为单位进行测试。
虽然单元测试不能发现所有的问题,比如实际系统中的接口信号跟我们预期的不符,或者一些性能方面的需求。但是单元测试个人感觉还是必须的,测试用例设计的越全面,即把自己能想到的所有情况都测试一遍,后续在实车上出现非预期的情况就越少。
并且在模型单元测试中找问题会比在后续的集成测试,以及实车测试中找问题容易的多,所以尽量能在单元测试中发现的不能就不应该流出到后续的开发流程中。
做好单元测试会极大的提高开发效率。
现在Matlab的Simulink Test工具箱做的也越来越完善,只需要简单几步就可以创建出测试环境,方便的修改测试用例,结果的可视化和报告功能也做得很好了,下面就具体介绍一下用法。
创建Test Harness测试模型
Test Harness 模型可以理解为一个测试框架。由被测试模型,信号输入和信号输出组成。
如果一个模型不是很复杂的话,可以直接对一个模型整体创建一个Test Harness模型,进行测试。具体方法是在模型最外层的空白处,点击鼠标右键,选择Test Harness -> Create for Model…
http://www.51testing.com/attachments/2023/05/15326880_202305041354211biWh.jpg
如果模型很复杂的话,也可以对模型中的各个子系统分别创建Test Harness模型,然后分别单独测试这些子系统。具体方法是选中想要测试的子系统,点击鼠标右键,选择Test Harness -> Create for 'subsystem name'
http://www.51testing.com/attachments/2023/05/15326880_202305041354251zBlP.jpg
点击后,就会出现如下的配置界面:
http://www.51testing.com/attachments/2023/05/15326880_202305041354281jWqW.jpg
其中,{Name}是给出Test Harness模型的名称{Save test harness extern}如果不勾选 ,那么这个test harness模型就不会单独的生成一个文件,而是保存在原模型里面。
{Save test harness extern}如果勾选,那么这个test harness模型就以一个单独的文件保存。
Test Harness模型的可以选择的输入输出如下:
http://www.51testing.com/attachments/2023/05/15326880_202305041354321gPnp.jpg
其中Harness模型的输入,可以选择为普通的Inport,Signal Builder,Signal Editor,From Workspace,From File,Test Sequence等。
Harness模型的输出,可以选择为普通的Outport,Scope,To Workspace,To File,Terminator等
实际可以根据自己的习惯和需求进行选择。
下图是输入为Inport,输出为Outport的Test Harness模型,本篇文章主要介绍针对这种类型的Test Harness模型进行单元测试。这种模型的输入信号以及期望的输出信号可以通过excel的测试用例模板来给出。
http://www.51testing.com/attachments/2023/05/15326880_202305041354351Nep3.jpg
其中,Signal spec and routing 里的内容如下,会按照原模型的设置,将所有的输入信号的数据类型和采样时间做一个转换。
http://www.51testing.com/attachments/2023/05/15326880_202305041354381Uu0s.jpg
这样一个Test Harness模型就创建完了,接下来就准备对这个模型做测试。
自动创建excel格式的测试用例模板
首先打开Simulink Test Manager,可以在模型菜单的APPS里面搜索Simulink Test
http://www.51testing.com/attachments/2023/05/15326880_202305041354411tBoC.jpg
然后点击“Simulink Test Manager”
http://www.51testing.com/attachments/2023/05/15326880_202305041354451neQj.jpg
或者直接在窗口输入命令:
sltest.testmanager.view
就会打开Test Manager的窗口。
http://www.51testing.com/attachments/2023/05/15326880_202305041354481E5df.jpg
接下来用AUTO CREATE功能,新建一个Test File,并且自动生成测试用例的模板。点击New -> Test File from Spreadsheet。
http://www.51testing.com/attachments/2023/05/15326880_202305041354521qOP0.jpg
然后会跳出如下界面,选择“Create a test template file for specifying data”
http://www.51testing.com/attachments/2023/05/15326880_202305041354561q0Qf.jpg
点击Next后跳出如下的界面,在Model中选择要被测试的模型,Harness中选择该模型中创建的需要被测试的Test Harness模型。
http://www.51testing.com/attachments/2023/05/15326880_202305041355001TOb4.jpg
然后会跳出如下界面,勾选想要在excel中想要包含的项目。
http://www.51testing.com/attachments/2023/05/15326880_202305041355051nLVX.jpg
Inputs:模型最外层的输入。这个必须要选的,可以在excel表中编辑输入的值。
Parameters:模型中的参数。如果测试时不需要改变参数值的话,可以不勾选。
这边推荐是弄清楚Parameters在excel页中设置的格式后,这边也都不用勾选了,如果需要修改参数值的话,按照格式,手动添加想要修改的参数值
Comparison signals:信号线上logged的信号。这个必须勾选,并且需要把希望被测试的信号对应的信号线设置为logged。
http://www.51testing.com/attachments/2023/05/15326880_202305041355091RFqJ.jpg
Include all attributes in the spreadsheet:信号的一些参数设置,比如插值方式,绝对允许误差等,推荐勾选上。
下一步是设置测试用例的个数和测试用例的基本名称。
http://www.51testing.com/attachments/2023/05/15326880_202305041400091aViC.jpg
比如按照上面的设置,就会在测试用例的excel文件中,生成10个sheet,每一个sheet的名字为我们指定的名称+序号。
http://www.51testing.com/attachments/2023/05/15326880_202305041400131fK7S.jpg
最后,指定Test Manager的测试文件名和测试用例的excel文件名和存储位置。
http://www.51testing.com/attachments/2023/05/15326880_202305041400171RUMQ.jpg
这样就会自动生成Test Manager的测试文件和测试用例的excel文件。
Test Manager的测试文件打开后,如下图。
http://www.51testing.com/attachments/2023/05/15326880_202305041400211z1fk.jpg
Test Suite:每一个测试文件中,都可以定义若干个Test Suite,可以把同一类型或同一功能的测试用例放到一个Test Suite中。
Test Case:每一个Test Suite中,可以定义若干个Test Case,Test Case中规定了测试详细的执行信息。实际测试执行的时候也针对每一个Test Case进行测试的。
Create Test Case from External File:测试用例的具体信息从excel模板中提取,这篇文章重点介绍以这种形式来创建测试用例。
小锁标记:表示这些设置是通过excel文件中的设置固定的,无法在该页面进行修改,只能通过excel文件进行修改。
*标记:提示这些设置是有过修改。
页:
[1]