51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 686|回复: 0
打印 上一主题 下一主题

[原创] 单元测试之Simulink Test(下)

[复制链接]
  • TA的每日心情
    擦汗
    前天 08:59
  • 签到天数: 1021 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-5-6 13:47:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    下面详细介绍测试用例的每一项设置的内容:
      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}中自动创建好。

      最后再修改一些其他想要修改的设置,就能进行测试了。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 08:42 , Processed in 0.077181 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表