【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式

本文主要是介绍【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

前言

一、例程功能

二、仿真ECU

三、SystemVariables数组:

四、测试模块

 五、测试运行效果

 六、分析和应用

总结


前言

        近期在做的一个自动化测试项目,尝试了一种以前没用过的测试配置方式,感觉效果还不错。然后又回顾了一下以前用过的其他几种方式,利用周末时间总结分享出来,希望对相关领域的网友有所帮助。

        由于实际项目比较庞大,而且不便在网络公开,所以就参考其中一项典型的测试来做一个例程,重点是讲解其中自动化测试配置的用法。

一、例程功能

        见《CANoe自动化测试的配置方式总结分析(一)——CAPL编程方式》

二、仿真ECU

        见《CANoe自动化测试的配置方式总结分析(一)——CAPL编程方式》

三、SystemVariables数组

        SystemVariables数组的创建如下图所示。测试人员在测试开始前,一次性设定全部的测试配置信息。

四、测试模块

        测试模块的创建和编程代码如下。该模从SystemVariables数组自动读取测试配置信息,发送激励报文,然后与仿真ECU解析的接收报文相对比,自动判定测试结果。

void MainTest()
{for(j=0;j<4;j++)CaseEvery(j);}testcase CaseEvery(byte j)
{write("Load Cfg");TestMsg.can = 1;if(@DemoVar::IsStad[j]) TestMsg.id = @DemoVar::ID[j];else TestMsg.id = mkExtId(@DemoVar::ID[j]);TestMsg.DataLength = @DemoVar::Length[j];for(i=0;i<@DemoVar::Length[j];i++) TestMsg.byte(i) = @DemoVar::Data[j];write("Test Start");output(TestMsg);if(@DemoVar::IsStad[j]){if(TestWaitForMessage(@DemoVar::ID[j], 5000)){write("Judge Received");if(@MiddleVar::ID_r != @DemoVar::ID[j]) testCaseFail();if(@MiddleVar::IsStad_r != @DemoVar::IsStad[j]) testCaseFail();if(@MiddleVar::Data_r[0] != @DemoVar::Data[j]) testCaseFail();if(@MiddleVar::Length_r != @DemoVar::Length[j]) testCaseFail();testStepPass();}}else{if(TestWaitForMessage(mkExtId(@DemoVar::ID[j]), 5000)){write("Judge Received");if(@MiddleVar::IsStad_r == 0) @MiddleVar::ID_r = @MiddleVar::ID_r & 0x7FFFFFFF;if(@MiddleVar::ID_r != @DemoVar::ID[j]) testCaseFail();if(@MiddleVar::IsStad_r != @DemoVar::IsStad[j]) testCaseFail();if(@MiddleVar::Data_r[0] != @DemoVar::Data[j]) testCaseFail();if(@MiddleVar::Length_r != @DemoVar::Length[j]) testCaseFail();testStepPass();}}testWaitForTimeout(1000);  }

 五、测试运行效果

        实际测试运行的效果如下。测试配置的信息在系统变量数组中保存后,一键执行测试模块,可以看到激励报文的发送与配置信息一致。每个测试配置执行后的finished提示行是绿色,表示测试结果的判定为Pass。相反出现红色提示行时,表示Fail。

 六、分析和应用

        上述使用系统变量数组实现自动化测试配置的方式,特点是各个测试参数使用一个统一的配置文件(系统变量)进行配置。这种方式的优点是,在一个地方即可完成对全部自动化测试信息的配置,不需要对每个测试配置单独输入或单独编程。缺点是,这种实现方式涉及到归一化程度比较高的数据调用算法,在编程逻辑上会稍微复杂一些,在后期使用和维护时对工程师的个人能力要求会稍微高一些。整体而言,这种方式适合应用于测试项目的中期阶段,测试设计已经比较成熟,测试配置相对稳定,但是需要快速迭代和重复测试的场景

总结

        以上就是本人在对CANoe自动化测试配置方式进行总结分析时,讲解的第三种实现方式。主要讲解了实现该方式的详细代码,展示了实际运行效果,最后分析了这种配置方式的特点以及适用场景。

        后续还会更新后面几种CANoe自动化测试配置的实现方式,欢迎评论区留言、点赞、收藏和关注,这些鼓励都将成为笔者持续分享的动力。

        另外,上述例程使用的Demo工程可以到笔者的主页查找和下载。


        版权声明:原创文章,转载和引用请注明出处与链接,侵权必究!

这篇关于【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900735

相关文章

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties