首页 >> 大全

Simulink Test自动化(一)-自动创建Test Sequence

2023-10-13 大全 32 作者:考证青年

文章目录 自动创建Test 实现效果注意总结

前言

在基于的模型开发过程中,Model in Loop(MIL)是用来验证模型算法是否符合预期的重要方式。在之前的一篇文章中,传送门:Test 与Test 联合测试模型

介绍了手动创建Test ,Test ,运行 Test,并生成Test 及覆盖度的。对于多个测试case来说,Test 不便于测试管理与迭代,手动创建步骤繁琐且浪费时间。基于此,本文利用 Test提供的API函数,根据填写好的特定格式的Excel,实现 Test自动化的第一步-自动创建Test 。

设计Excel模板

打开中的Test ,可以看到测试的重要参数有如下几个:

Step(即测试步),(即跳转条件),Next Step(下一个测试步),(测试步描述)。

Step包括,Step名称和Step执行内容。本文将验证的内容也放到Test 中,所以Step的子Step有条件判断的,该Step应设置When 属性。且子Step进行验证。

基于上述格式需求,设定Excel模板如下:

是作为测试模型的基础,可以设置多个以支持多个Test case。也可以在一个中,采用延长(单位为s)来实现多个Test case。

一个对应一个,一个,及一个,可以对应多个。

只作为管理Test case的参考,在此处没有太大使用价值。

简单设计Test case如下:

m脚本生成对应的Test 及Test

和之前Excel生成标定量的m文件类似,需要在脚本中读取Excel表中的对应信息,再通过特定的方式写入特定的文件中。

自动创建Test

首先需要准备好被测试的模型,该模型需要保证运行时不报错。

删除之前创建的Test

如果已经创建好一个Test ,再次创建同名的时会报错。其实可以判断名称存在后,不再创建,而是打开。本文为了省事,直接删除了之前创建的,每次都会重新再创建。而且需要在删除前,关闭打开的,否则也会报错。

%删除TestharnessharnessList = sltest.harness.find(test_model);harnessOpen = sltest.harness.find(test_model,'OpenOnly','on');%寻找打开的harnessfor i=1:length(harnessOpen)sltest.harness.close(test_model,harnessList(i).name);%close harnessendfor i=1:length(harnessList)sltest.harness.delete(test_model,harnessList(i).name);%delete harnessend

创建Test

创建Test 并设置时间参数

            sltest.harness.create(test_model,'Name',TestharnessName,...'Source','Test Sequence')sltest.harness.load(test_model,TestharnessName);%加载testharness set_param(TestharnessName,'StopTime',TestharnessTime);%设置仿真停止时间,若测试步提前跳出,后面的验证也不会执行

自动创建Test

通过Excel获取到的信息,写入到Test 中。

关键的API函数如下:

创建After测试步

sltest.testsequence.addStepAfter(TestSequenceName,...TestStepName{i},'Initialize','Action',TestStepAction{i},'IsWhenStep',true,...'Description',TestStepDescription{i})

只有在有子测试步中**有验证(即用到的when条件)**的父测试步才需要设置属性。本文只有end测试步做了特殊处理,其他都按处理

上面的例子是从测试步跳转到{i}测试步,且Step执行的动作为{i}

修改测试步

sltest.testsequence.editStep(TestSequenceName,'Run',...'Name','Initialize');%改变run测试步名称为Initialize,自动生成的第一个step会初始化输入,且名称为Run

创建跳转条件

            sltest.testsequence.addTransition(TestSequenceName,...'Initialize','true',TestStepName{i});%初始化跳转

从跳转到{i},跳转条件为‘true’

创建子测试步

TestVerifyStr{ii} = strcat(TestStepName{i},'.',TestVerifyName{ii+1});
sltest.testsequence.addStep(TestSequenceName,...TestVerifyStr{ii},'Action',TestVerify{ii+1},'WhenCondition',WhenCondition{ii+1},...'Description',TestStepDescription{ii+1})%添加子step 验证结果

为与拼接而成,如.,通过这种方式为增加子测试步

实现效果

运行自动生成Test 的脚本后,自动生成的Test 如下:

注意

在填写Excel时,需要注意Input与的名称与数据类型。在Test 中的名称需要与Input,一致,且数据类型为时最好进行数据类型的转换,数据类型为bool时,需要设定为true或false,否则运行可能会报错(数据类型不匹配)。

总结

其实 help中有很多API函数使用的例子,大部分通过help就可以很好的掌握其用法。本文介绍了Test 和Test 的自动生成,后面继续介绍Test File及Test 的自动生成。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了