单元测试之Simulink Test(下)
下面详细介绍测试用例的每一项设置的内容:TAGS:可以给一个标签名,比如按照功能,测试类型等,方便以后批量查找测试用例。
DESCRIPTION:可以给描述测试用例的测试步骤,方法等,方便理解。
REQUIREMENTS:可以和需求关联。Matlab现在有“Simulink Requirements”这个Toolbox,可以在里面写需求文档,将需求和模型,以及对应的测试用例关联起来,以满足A-ASPICE或者ISO26262所规定的软件开发流程中的可追溯性的要求。
SYSTEM UNDER TEST:里面设置了要被测试的模型,或者针对模型中所创建的某一个Test Harness模型进行测试。
另外,如果有需要的话,这边也可以在进行单元测试时,覆盖掉原模型的设置,比如常用的一个就是仿真时间,可以根据每个测试用例输入数据的实际结束时间,覆盖掉原模型的仿真结束时间。
http://www.51testing.com/attachments/2023/05/15326880_20230504140158104eM.jpg
PARAMETER OVERRIDES:这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的,里面列出了某个测试用例中,需要改变的参数。
http://www.51testing.com/attachments/2023/05/15326880_202305041402011ssTw.jpg
CALLBACKS:里面分为3个不同时刻的,运行我们想要的脚本。
其中PER-LOAD是在读取模型之前,POST-LOAD是在读取完模型之后,CLEANUP是在测试仿真完成之后。
一种比较常见的用法是,在PER-LOAD中读取测试模型的数据词典里数据,在CLEANUP中清除这次测试的所有数据。
http://www.51testing.com/attachments/2023/05/15326880_202305041402041VttV.jpg
INPUTS:定义测试的输入信号,这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。
另外这边有两个选项可以勾选,如果勾选“Include input data in test result”的话,在最后的结果中,也会显示输入信号。
如果勾选“Stop simulation at last time point”的话,仿真测试到最后一个输入点的时候就会停止。
http://www.51testing.com/attachments/2023/05/15326880_202305041402081tR45.jpg
SIMULATION OUTPUTS:可以在里面再选取模型中logged的信号作为观测量
CONFIGURATION SETTINGS OVERRIDES:可以在仿真测试的时候对原模型的设置进行覆盖
BASELINE CRITERIA:里面设置了期望值,以及比较仿真测试结果和期望值的一些参数。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。但可以点击Edit在excel文件中修改。
对比数据时,可以设置绝对误差,相对误差,时序领先误差和时序滞后误差。
http://www.51testing.com/attachments/2023/05/15326880_202305041402111MU2q.jpg
这四个参数可以在excel中,对应变量的下方设置,具体格式和参数名称如下:
http://www.51testing.com/attachments/2023/05/15326880_2023050414021510wXe.jpg
ITERATIONS:迭代测试。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。会根据测试用例数自动生成,表示这个测试会根据不同的配置重复进行。
http://www.51testing.com/attachments/2023/05/15326880_2023050414021811oBk.jpg
COVERAGE SETTINGS:统计覆盖度的设置。如果需要统计模型的覆盖度的话,就勾选“Record coverage for referenced models”和“Record coverage for system under test”。
http://www.51testing.com/attachments/2023/05/15326880_2023050414022112ttn.jpg
COVERAGE METRICS 的设置要在最外面的工程中设置,一般选择Decision,Condition和MCDC这三个覆盖度就够应付各种检查了。
http://www.51testing.com/attachments/2023/05/15326880_202305041402251lTqz.jpg
点击Run,就会执行测试:
http://www.51testing.com/attachments/2023/05/15326880_202305041402281WEBn.jpg
测试的结果会在Result and Artifacts中显示。如果仿真结果和预期符合就是绿色的勾勾,否则是红色的叉叉。
Baseline Criteria Result里显示的就是我们给定的信号期望值与实际值之间的比较。
上面的图是把仿真结果和期望结果放在一张图上显示出来,下面的图是两者之差和允许误差范围。
External Inputs里显示的是输入信号的值。(在{INPUTS}里勾选了Include input data in test result才会有)
Sim Output里显示的是模型中logged信号的值。
http://www.51testing.com/attachments/2023/05/15326880_2023050414023219UAD.jpg
另外如果设置了搜集覆盖度,那么还可以看到针对被测模型,所有测试用例累积的覆盖度。
http://www.51testing.com/attachments/2023/05/15326880_202305041402351pcqU.jpg
手动创建excel测试用例模板
了解了Test Manager用的excel测试模板的格式后,有时候手动创建测试模板会更方便一些。被测对象有多个测试用例的话,可以写多个excel文件,也可以在一个excel文件中的多个sheet上写。
比如对于下图的Test Harness模型,有7个输入和两个输出,那我们就要给7个输入赋值,以及给出对应时刻的输出的值。
http://www.51testing.com/attachments/2023/05/15326880_202305041402391oGkd.jpg
首先定义输入信号,时间序列{time}定义必须写在最前面,然后在每一列跟着输入信号的名称。
对于输入信号还推荐定义输入信号的数据类型,用Type:<数据类型>来定义。
另外为了区分信号是输入还是输入,需要在输入信号最开始的一列定义Source:Input
对于输出信号,也是一样,首先是时间序列{time},然后在后面的列跟着输出信号的名称。
输出信号也要定义数据类型,以及定义该信号为输出Source:Output
对于输出信号还可以定义允许误差,比较常用的是相对误差和绝对误差。一般对于浮点类型的数据,需要给一个相对误差,因为浮点数没法比较完全相等
对于输出信号,还需要指定该信号在模型中的位置,是通过BlockPath加PortIndex来确定的。
比如对于上图的两个输出信号,不但要指定信号名,还要指定连接信号线的模块{BlockPath}和该模块对应的端口号{PortIndex}(如果端口号是1的话可以忽略不填)
还可以指定信号的插值方式{Interp},如果时间序列不是最小步长的话,插值方式有两种,一个是保持上一次时刻的值“zoh”和线性插值”linear“
http://www.51testing.com/attachments/2023/05/15326880_2023050414024217IQO.jpg
创建好测试用例的excel模板后,就可以手动创建一个以填写好的excel模板,在Test Manager中创建Test Case。
点击New -> Test File,然后给测试文件起一个名字。
http://www.51testing.com/attachments/2023/05/15326880_2023050414024618aX4.jpg
在{SYSTEM UNDER TEST}下面选择要被测试的模型以及模型内的Harness模型,然后选中“Create Test Case from External File”,选择之前创建的excel测试用例文件。系统就会把在excel模板中填写的输入和输出的信息分别在{INPUTS}和{BASELINE CRITERIA}中自动创建好。
http://www.51testing.com/attachments/2023/05/15326880_202305041402491hTIK.jpg
最后再修改一些其他想要修改的设置,就能进行测试了。
页:
[1]