您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
Simulink 需求关联与模型测试
 
作者:我不是MATLAB
   次浏览      
 2022-5-20
 
编辑推荐:
本文主要介绍Simulink 需求关联与模型测试相关知识。希望对你的学习有帮助。
本文来自于知乎 ,由Linda编辑、推荐。

模型的开发往往是根据需求进行,Simulink Requirements与Simulink Test集成了需求与测试功能,以验证在需求给定的要求下,模型的性能。

这是一个简单的PI控制器模型,且PI参数都已经调整完毕。我拥有测试输入数据(error)与测试输出数据(out),接下来的操作类似于对训练好的神经网络进行验证。

首先,要确定是对整个模型进行测试还是仅对一个模块(子系统)进行测试。接下来主要讲对一个模块(子系统)进行测试。对于整个模型的测试,可以不需要Harness,直接引入输入端,调用测试用例即可。

1 单个子系统的测试

这里我要测试我的控制器能否在测试输入下产生测试输出。

1.1 Test Harness的产生

首先要把子系统从模型中隔离出来,我们右击controller这个模块,然后点击Test Harness、 Create for ‘controller’。弹出的界面,可以不进行更改,点击 ok 即可,得到以下测试模型。

接着,点击模型工具栏的Analysis、Test Manager,弹出测试管家窗口,点击左上角 New 、 Test File 来新建测试文件,这里我们取名为demo

在右侧窗口的SYSTEM UNDER TEST部分,我们选择我们要测试的模型为 demo.slx,进一步,点击下方的 TEST HARNESS 刷新后选择我们新建的Harness(由于我这边多次创建,我的harness已经编号为6)

1.2 载入测试数据

前面完毕后,定义测试输入与测试输出的数据集合。在Test Manager的demo树中,选中New Test Case 1,右侧窗口的右下角会有INPUTS栏与BASELINE栏(两栏默认展开),前者是输入数据文件的调用,后者是输出数据文件的调用,且看下图,注意数据文件格式

数据采用EXCEL表格制作,为节省,我将输入与输出放在了一个文件下,即两个sheet,每个sheet至少需要两列,默认第一列是采样时间列,这个必须有。此外,需要给每个sheet的第一行起标签,标签名需要对应于测试模块的输入输出端口名,时间列的标签可随意。展开INPUT栏,点击下方Add,选择数据集(test_data.xlsx),仅勾选输入测试数据(Error),然后点击 Map Inputs,若STATUS显示绿色,最后点击Add即可,若为红色叉叉,请检查数据文件是否满足格式要求。

之后,同样的操作,展开BASELINE CRITERIA,对测试输出进行数据导入操作。

1.3 需求的产生

需求一般以文字的形式出现,仿真结果确实数据的形式出现,Simulink如何测试模型是否满足需求?难道Simulink内部自带语义识别,可以将文字转化为数字?不是的,Simulink的需求有如下两种方式

代码

测试数据集

这里,我们仅就测试数据集进行讨论,我们可以通过文字描述需求,进而将需求与测试数据相关联,若模型的测试结果符合测试数据,则认为该需求能够被满足。

首先,我们要创建需求,即Simulink Requirements。回到我们的顶层模型(demo0.slx),右下角鼠标找到虚化的图标,可显示如下

点击中间的大图标,可以调出需求编辑器

点击绿色的新建按钮,创建新的需求集。

点击创建需求,编辑Summary(可修改为输出误差)

右键点击demo0slreqx可以设置该需求集,例如显示需求的部署情况与测试通过情况。左击controller模块,再右击第一条需求任意位置后,选择Link From ‘controller’以及Link From Selected Test Case,使需求与模块、测试管家相关联,更新部署状态与验证状态后,如下图,蓝色满进度表示完全部署,黄色满进度表示完全未测试

1.4 测试与结果分析

前面都做完之后,回到测试管家,点击demo树下的New Test Case 1,然后点击工具栏的Run,见下图。发现一堆叉叉,说明模型未通过,这是理所当然的(测试数据的输出原先就设定了高度不匹配)。

我们回到simulink顶层模型,更新需求状态,得到

红色表示需求完全不满足。

回到测试管家,点击结果中的Baseline Criteria Results下的out,可视化结果如下。发现误差不小。

我们可以通过调整容许的误差,产生误差带,以使需求通过(根据实际而定),这里我选择了20的绝对误差,这时候,我们的需求就满足了

 
   
次浏览       
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践

最新活动计划
C++高级编程 12-25 [线上]
白盒测试技术与工具实践 12-24[线上]
LLM大模型应用与项目构建 12-26[特惠]
需求分析最佳实践与沙盘演练 1-6[线上]
SysML建模专家 1-16[北京]
UAF架构体系与实践 1-22[北京]
 
 
最新文章
大数据平台测试
微服务架构下的测试之道
从零开始掌握微服务软件测试
如何进行测试需求分析:从接收需求到用例设计
python_selenium自动化测试框架
最新课程
测试需求分析与测试用例设计
性能测试方法与技术
自动化测试框架设计高级实践
接口自动化测试方法与工具
软件测试方法与实践(贯穿案例)
更多...   
成功案例
某支付企业 单元测试与重构培训
北京 用户体验、可用性测试与评估
某军工研究单位 自动化测试方法、案例与工具
知名消费金融公司 探索性测试与测试分析
北京 航天科工某子公司 软件测试架构师
更多...