使用Simulink Test进行单元测试

这篇具有很好参考价值的文章主要介绍了使用Simulink Test进行单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例。

  • 单元测试的目的

创建完模型后,我们需要验证模型的行为,即仿真结果,是否跟我们预期的一致,这样才能保证由模型生成的代码在嵌入式系统中执行得到结果跟我们预期的一致。单元测试主要是以模型或者模型内的子系统为单位进行测试。

虽然单元测试不能发现所有的问题,比如实际系统中的接口信号跟我们预期的不符,或者一些性能方面的需求。但是单元测试个人感觉还是必须的,测试用例设计的越全面,即把自己能想到的所有情况都测试一遍,后续在实车上出现非预期的情况就越少。

并且在模型单元测试中找问题会比在后续的集成测试,以及实车测试中找问题容易的多,所以尽量能在单元测试中发现的不能就不应该流出到后续的开发流程中。

做好单元测试会极大的提高开发效率。

现在Matlab的Simulink Test工具箱做的也越来越完善,只需要简单几步就可以创建出测试环境,方便的修改测试用例,结果的可视化和报告功能也做得很好了,下面就具体介绍一下用法。

  • 创建Test Harness测试模型

Test Harness 模型可以理解为一个测试框架。由被测试模型,信号输入和信号输出组成。

如果一个模型不是很复杂的话,可以直接对一个模型整体创建一个Test Harness模型,进行测试。具体方法是在模型最外层的空白处,点击鼠标右键,选择Test Harness -> Create for Model…

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

如果模型很复杂的话,也可以对模型中的各个子系统分别创建Test Harness模型,然后分别单独测试这些子系统。具体方法是选中想要测试的子系统,点击鼠标右键,选择Test Harness -> Create for 'subsystem name'

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

点击后,就会出现如下的配置界面

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

其中,{Name}是给出Test Harness模型的名称
{Save test harness extern}如果不勾选 ,那么这个test harness模型就不会单独的生成一个文件,而是保存在原模型里面
{Save test harness extern}如果勾选,那么这个test harness模型就以一个单独的文件保存

Test Harness模型的可以选择的输入输出如下:

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

其中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的测试用例模板来给出。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

其中,Signal spec and routing 里的内容如下,会按照原模型的设置,将所有的输入信号的数据类型和采样时间做一个转换。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

这样一个Test Harness模型就创建完了,接下来就准备对这个模型做测试。

  • 自动创建excel格式的测试用例模板

首先打开Simulink Test Manager,可以在模型菜单的APPS里面搜索Simulink Test

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

然后点击“Simulink Test Manager”

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

或者直接在窗口输入命令:
sltest.testmanager.view

就会打开Test Manager的窗口

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

接下来用AUTO CREATE功能,新建一个Test File,并且自动生成测试用例的模板。点击New -> Test File from Spreadsheet

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

然后会跳出如下界面,选择“Create a test template file for specifying data”

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

点击Next后跳出如下的界面,在Model中选择要被测试的模型,Harness中选择该模型中创建的需要被测试的Test Harness模型

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

然后会跳出如下界面,勾选想要在excel中想要包含的项目

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

Inputs:模型最外层的输入。这个必须要选的,可以在excel表中编辑输入的值
Parameters:模型中的参数。如果测试时不需要改变参数值的话,可以不勾选。
这边推荐是弄清楚Parameters在excel页中设置的格式后,这边也都不用勾选了,如果需要修改参数值的话,按照格式,手动添加想要修改的参数值
Comparison signals:信号线上logged的信号。这个必须勾选,并且需要把希望被测试的信号对应的信号线设置为logged。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

Include all attributes in the spreadsheet:信号的一些参数设置,比如插值方式,绝对允许误差等,推荐勾选上。

下一步是设置测试用例的个数和测试用例的基本名称

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

比如按照上面的设置,就会在测试用例的excel文件中,生成10个sheet,每一个sheet的名字为我们指定的名称+序号

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

最后,指定Test Manager的测试文件名和测试用例的excel文件名和存储位置。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

这样就会自动生成Test Manager的测试文件和测试用例的excel文件。
Test Manager的测试文件打开后,如下图。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

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文件进行修改。
*标记:提示这些设置是有过修改

下面详细介绍测试用例的每一项设置的内容:
TAGS:可以给一个标签名,比如按照功能,测试类型等,方便以后批量查找测试用例
DESCRIPTION:可以给描述测试用例的测试步骤,方法等,方便理解
REQUIREMENTS:可以和需求关联。Matlab现在有“Simulink Requirements”这个Toolbox,可以在里面写需求文档,将需求和模型,以及对应的测试用例关联起来,以满足A-ASPICE或者ISO26262所规定的软件开发流程中的可追溯性的要求。
SYSTEM UNDER TEST:里面设置了要被测试的模型,或者针对模型中所创建的某一个Test Harness模型进行测试。
另外,如果有需要的话,这边也可以在进行单元测试时,覆盖掉原模型的设置,比如常用的一个就是仿真时间,可以根据每个测试用例输入数据的实际结束时间,覆盖掉原模型的仿真结束时间

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

PARAMETER OVERRIDES:这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的,里面列出了某个测试用例中,需要改变的参数

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

CALLBACKS:里面分为3个不同时刻的,运行我们想要的脚本。
其中PER-LOAD是在读取模型之前,POST-LOAD是在读取完模型之后,CLEANUP是在测试仿真完成之后。
一种比较常见的用法是,在PER-LOAD中读取测试模型的数据词典里数据,在CLEANUP中清除这次测试的所有数据。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

INPUTS:定义测试的输入信号,这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。
另外这边有两个选项可以勾选,如果勾选“Include input data in test result”的话,在最后的结果中,也会显示输入信号。
如果勾选“Stop simulation at last time point”的话,仿真测试到最后一个输入点的时候就会停止。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

SIMULATION OUTPUTS:可以在里面再选取模型中logged的信号作为观测量
CONFIGURATION SETTINGS OVERRIDES:可以在仿真测试的时候对原模型的设置进行覆盖
BASELINE CRITERIA:里面设置了期望值,以及比较仿真测试结果和期望值的一些参数。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。但可以点击Edit在excel文件中修改。
对比数据时,可以设置绝对误差,相对误差,时序领先误差和时序滞后误差

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

这四个参数可以在excel中,对应变量的下方设置,具体格式和参数名称如下

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

ITERATIONS:迭代测试。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。会根据测试用例数自动生成,表示这个测试会根据不同的配置重复进行

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

COVERAGE SETTINGS:统计覆盖度的设置。如果需要统计模型的覆盖度的话,就勾选“Record coverage for referenced models”和“Record coverage for system under test”

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

COVERAGE METRICS 的设置要在最外面的工程中设置,一般选择Decision,Condition和MCDC这三个覆盖度就够应付各种检查了。

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

点击Run,就会执行测试

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

测试的结果会在Result and Artifacts中显示。如果仿真结果和预期符合就是绿色的勾勾,否则是红色的叉叉
Baseline Criteria Result里显示的就是我们给定的信号期望值与实际值之间的比较。
上面的图是把仿真结果和期望结果放在一张图上显示出来,下面的图是两者之差和允许误差范围
External Inputs里显示的是输入信号的值。(在{INPUTS}里勾选了Include input data in test result才会有)
Sim Output里显示的是模型中logged信号的值

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

另外如果设置了搜集覆盖度,那么还可以看到针对被测模型,所有测试用例累积的覆盖度

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

手动创建excel测试用例模板

了解了Test Manager用的excel测试模板的格式后,有时候手动创建测试模板会更方便一些。被测对象有多个测试用例的话,可以写多个excel文件,也可以在一个excel文件中的多个sheet上写。

比如对于下图的Test Harness模型,有7个输入和两个输出,那我们就要给7个输入赋值,以及给出对应时刻的输出的值

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

首先定义输入信号,时间序列{time}定义必须写在最前面,然后在每一列跟着输入信号的名称。
对于输入信号还推荐定义输入信号的数据类型,用Type:<数据类型>来定义。
另外为了区分信号是输入还是输入,需要在输入信号最开始的一列定义Source:Input

对于输出信号,也是一样,首先是时间序列{time},然后在后面的列跟着输出信号的名称。
输出信号也要定义数据类型,以及定义该信号为输出Source:Output
对于输出信号还可以定义允许误差,比较常用的是相对误差和绝对误差。一般对于浮点类型的数据,需要给一个相对误差,因为浮点数没法比较完全相等
对于输出信号,还需要指定该信号在模型中的位置,是通过BlockPath加PortIndex来确定的。
比如对于上图的两个输出信号,不但要指定信号名,还要指定连接信号线的模块{BlockPath}和该模块对应的端口号{PortIndex}(如果端口号是1的话可以忽略不填)
还可以指定信号的插值方式{Interp},如果时间序列不是最小步长的话,插值方式有两种,一个是保持上一次时刻的值“zoh”和线性插值”linear“

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

创建好测试用例的excel模板后,就可以手动创建一个以填写好的excel模板,在Test Manager中创建Test Case。
点击New -> Test File,然后给测试文件起一个名字

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

在{SYSTEM UNDER TEST}下面选择要被测试的模型以及模型内的Harness模型,然后选中“Create Test Case from External File”,选择之前创建的excel测试用例文件。系统就会把在excel模板中填写的输入和输出的信息分别在{INPUTS}和{BASELINE CRITERIA}中自动创建好

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

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

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

simulink生成测试用例,程序人生,程序员,自动化测试,单元测试,测试用例,自动化测试,程序人生,职场和发展文章来源地址https://www.toymoban.com/news/detail-567840.html

到了这里,关于使用Simulink Test进行单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB simulink MIL SIL单元测试,模型在环测试,软件在环测试,测试步骤文档

    MATLAB simulink MIL SIL单元测试,模型在环测试,软件在环测试,测试步骤文档,包含期望输出和实际输出的比较,输出测试报告pass或fail状态。 ID:29333 640313736484 卡路卡路里

    2024年02月11日
    浏览(46)
  • [C++] 基础教程 - 如何使用google test进行单元测试

    https://download.csdn.net/download/u011775793/88601877 单元测试是一种软件测试方法,用于测试代码中的最小可测试单元。在软件开发中,我们通常将代码分解为多个模块或类,每个模块或类都有自己的功能和行为。单元测试的目的是确保每个模块或类都能正常工作,不会影响其他模块或

    2024年02月04日
    浏览(33)
  • 使用testMe自动生成单元测试用例

    公司对于系统单元测试覆盖率有要求,需要达到50%或80%以上才可以,但是对于之前的老项目或者是前期赶进度未添加单元测试用例的项目来说,手动添加单元测试耗时又费力,这时候我们就需要一款能够提高效率的一款插件来帮助我们提高单元测试覆盖率,经过对比temstMe、

    2024年02月07日
    浏览(51)
  • Maven-使用maven mvn命令进行单元测试、指定测试某个类、mvn test

    添加测试插件 运行mvn test命令

    2024年02月05日
    浏览(48)
  • Spring Test中使用MockMvc进行上传文件单元测试时,报NullPointerException

    问题 : MockMvc peform在集成测试中返回nullPointerException 原因 : springboot-2.x版本以上,当你添加依赖spring_boot_starter_test后,可以在内部看到自带了jupiter测试核心模块,也就是 junit5,junit5(jupiter测试引擎)不再支持junit4(vintage测试引擎),在使用时自然不再需要spring来提供了,

    2024年02月14日
    浏览(37)
  • 记录使用vue-test-utils + jest 在uniapp中进行单元测试

    uniapp推荐了测试方案 @dcloudio/uni-automator ,属于自动化测试,api提供的示例偏重于渲染组件,判断当前渲染的组件是否和预期一致 vue推荐的测试方案 vue test utils ,属于单元测试,可以搭配jest、mocha等单测运行器 我选了方案2🕶️ 关于vue的组件测试,vue官方提到: 你的 Vue 应用

    2024年02月06日
    浏览(33)
  • MATLAB使用Simulink 进行建模与仿真方法 - Simulink基本操作与入门教程

    Simulink 是 MATLAB 很强大的功能组件,广泛用于系统建模、仿真和分析。下面分享给大家MATLAB使用Simulink 进行建模与仿真方法、步骤,希望能够帮助大家。 电脑 MATLAB及Simulink 组件 MATLAB使用Simulink 进行建模与仿真 1 我们打开MATLAB软件,然后在命令窗口中输入simulink或点击左上角的

    2024年02月05日
    浏览(37)
  • test-02-test case generate 测试用例生成 EvoSuite 介绍

    junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 EvoSuite是一个自动生成Java类的JUnit测试套件的工具,其目标是

    2024年01月19日
    浏览(34)
  • 使用 Simulink 进行 STM32 编程

    介绍 所需材料 步骤 1:在MATLAB中设置STM32-MAT软件路径 步骤 2:在STM32CubeMX中创建一个项目 步骤 3:配置时钟和 GPIO 引脚 步骤 4:项目经理并生成代码 步骤 5:在 Simulink 中创建模型 步骤 6:在模型中插入 STM32_Config 模块 步骤 7:创建模型 步骤 8:编译并生成代码 步骤 9:将代码

    2024年02月14日
    浏览(22)
  • test-04-test case generate 测试用例生成 tcases 快速开始

    junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 关于本指南 本指南详细解释了Tcases的工作原理。在涉及示例

    2024年01月19日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包