【Simulink Test】模型自动测试
本文介绍如何使用Simulink Test Manager构建一个测试工程,实现对模型的自动测试。
Test Manager简介
Test Manager是Matlab Simulink建模功能的子模块,用于检测逻辑流程图的功能。其在生成Test项目时会根据所选模型生成两个文件,一为mldatx文件,用于记录测试中的设置;二为xls(xlsx)表格文档文件,我们可以在表格中设置某个时间的输入值,并给出输出预测,模块运行后就会根据给定的输入值运行,并将真实输出值与预测输出值进行比较,最终生成测试结果。
构建一个测试模型
构建一个测试模型,如下图,该模型实现的功能为档IN1为真时OUT1=1,当IN1为假时,OUT1=0;
并在模型上添加IN/OUT Port口;
使用TestManager新建一个测试模板
打开Simulink Test Manager
在Simulink上面选择APPS->Simulink Test,在新的TESTS工具栏中选择Simulink Test Manager
通过教程创建一个测试用例
第一步,在新生成的Test Manager窗口中选择“基于电子表格中指定的数据创建新测试”,通过这个选项可以额外生成Excel表格文档文件,方便后续的测试。
随后开始创建测试文件。在第一步中,如果已有现成的Excel表格文档文件,则选择上方选项,并在路径中选择要使用的表格;若没有,则选择下方的创建选项。
第二步,选择Model和Harness。若事先创建过Test Harness,就可在下方的选项中选择要测试部分,未创建或不选择将默认为“None”,本选项会测试该模型中的所有内容。
这里如果需要测试模型中的某一部分功能,可以对该部分模型创建Test Harness,这样可以选择该Test Harness进行针对性测试,不选择则是对整个模型进行测试。
第三步,选择数据来源。“Parameters”仅在信号线名称与数据字典关联后显示。默认“Inputs”和“Parameters”已勾选。需要手动勾选最后一个“Comparison”选项,否则生成的表格中将没有预测输出部分。后续也无法将实际输出和预测输出进行比对。下侧为测试范围选择,Yes选项会选择所有项目,No选项选择后可以选择屏蔽不参与测试的内容。
这里“Parameters”可以不勾选,目前实际测试过程中未使用过相关内容。
第四步指定生成的表格所包含的单元表页数及其名称。
第五步设定所生成文件的位置和名字,上方为mldatx文件,下方为xlsx文件。
创建成功后结果:
修改测试输入输出进行测试
测试表格说明
图中表格的A列“time”即为输入信号的时间,初始只有0和10两个时间点(单位为秒),可手动添加。右侧B列起的内容为输入信号名称,通过修改本列中对应时间行的数值即可改变该信号在特定时间的不同输入值,不可为空。C列第二个time后为输出预测部分,其右侧D列内容为输出信号在特定时间的输出预测值,可以通过修改这部分的内容完成对输出的预测,并在测试中与实际输出值比对。
编辑表格内信息
在左侧的输入信号下添加时间和输入值,并在更改右侧的预测值。可以写成函数形式,但是可能会对后续的修改造成影响,所以除非输入输出的关系特别简单,否则一般不推荐使用。
注意:编辑表格时应注意输入的变化应在一个周期内变化,我这里设置的步长为0.01S,所以输入每次均在0.01S变化,若超过步长则会默认为斜线变化导致与预期不一致。
编辑结果如下图所示:
执行测试
选中需要测试的Test Case点击Run执行测试。
结果分析
默认配置下仅包含Baseline Criteria Result和Sim Output,Baseline Criteria Result右侧为测试结果和预期结果的比对。
默认配置下仅包含输出部分,如果需要输入部分的曲线,需要勾选测试用例中INPUTS部分的Include input data in test result选项。
勾选后的测试结果如下:
模拟测试与预期不一致情况
修改测试表格如下:
测试结果:
可以看到测试失败,右侧预期与模拟的结果显示不一致,蓝色线为预期的输出,红色线为模拟输出,下面的差别也能看出来实际结果与预期的不一致。
测试报告生成
选中测试结果,点击上方TESTS->Report
在新的窗口中选择测试报告的相关信息并Create测试报告
结束语
使用这种方式已经可以对模型进行全方位的测试,并且可以实现自动化测试。但是这种方式也存在一些弊端,主要是使用起来不是很方便,但是这种生成输入输出excel表格的方式很实用。