使用Simulink Test进行单元测试(下)

发表于:2023-5-06 09:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:丁旭    来源:知乎

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

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号