【研发日记】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工程可以到笔者的主页查找和下载。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/615223.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据持久化 AOF RDB

Redis数据持久化 AOF RDB 1、单点 redis 的问题2、主从复制2.1 命令传播 3、Redis的持久化3.1 AOF写回策略重写机制后台重写 3.2 RDB&#xff08;默认方式&#xff09;RDB 方式&#xff1a;执行快照时&#xff0c;数据能被修改吗&#xff1f;RDB 方式总结 3.3 RDB 和 AOF 组合&…

场景:如何做数据清理

如果数据清理简单粗暴按时间进行清理&#xff0c;同时时间字段并没有增加索引就会出问题 如果没有增加索引&#xff0c;他就会进行全表扫描&#xff0c;并且会给全表的数据上一个x锁 会阻塞其他的线程 解决方案参考阿里云DMS数据清理方案 这个SQL查询的目的是从名为table_hol…

Unity之PUN实现多人联机射击游戏的优化(Section 3)

目录 &#x1f4a3;一、准备工作 &#x1f4a3;二、生成弹头脚本的编写 &#x1f4a3;三、实现发射和伤害同步 手雷都加了在给狗剩加个火箭筒不过分吧。效果看GIF动图&#xff0c;分别是单机和联机的效果。 添加火箭筒依旧是在原有的基础上更改&#xff0c;我查看火箭筒模型…

模板初阶的学习

目录&#xff1a; 一&#xff1a;泛型模板 二&#xff1a;函数模板 三&#xff1a;类模板 1&#xff1a;泛型模板 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 以交换函数为列进行讲解&#xff1a; void Swap(…

博客系统项目测试(selenium+Junit5)

在做完博客系统项目之后&#xff0c;需要对项目的功能、接口进行测试&#xff0c;利用测试的工具&#xff1a;selenium以及Java的单元测试工具Junit进行测试&#xff0c;下面式测试的思维导图&#xff0c;列出该项目需要测试的所有测试用例&#xff1a; 测试结果&#xff08;全…

SQL执行流程图文分析:从连接到执行的全貌

SQL执行总流程 下面就是 MySQL 执行一条 SQL 查询语句的流程&#xff0c;也从图中可以看到 MySQL 内部架构里的各个功能模块。 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在…

智能零售:引领购物新时代

智能零售通过整合人工智能、物联网、大数据和机器学习等技术&#xff0c;正在彻底改变传统的购物模式&#xff0c;为消费者和零售商提供前所未有的效率和个性化体验。 智能零售利用消费者数据分析来提供个性化的购物推荐。无论是在线平台或是实体店内&#xff0c;智能系统都能…

【JS】获取接口返回 EventStream 结构的数据(即接收读取 stream 流)

文章目录 EventStream 是一种服务器推送的数据格式&#xff0c;可以用于实时数据传输。 接口返回的示例图 获取示例&#xff1a; // 这里的 url 为虚拟的&#xff0c;仅供演示用 fetch(https://test.cn.com/api/agent/2, {method: POST,headers: {Content-Type: applicatio…

隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践

隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践 文章目录 隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践1.业务背景&#xff1a;安全核对产生的土壤1.1相关政策出台1.2 数据差异的来源 2.产品方案&#xff1a;从试点到规模化的路3.技术共建&#xf…

12V转5V3A降压恒压WT6019

12V转5V3A降压恒压WT6019 WT6019同步降压电源管理芯片。这个小宝贝啊&#xff0c;不管你怎么折腾它&#xff0c;电流都能稳稳地输出3A&#xff0c;而且效率高得吓人&#xff0c;达到92%呢&#xff01; 说到它的工作原理&#xff0c;WT6019用的是电流模式控制&#xff0c;这意…

[BT]BUUCTF刷题第15天(4.11)

第15天&#xff08;共3题&#xff09; Web [WUSTCTF2020]朴实无华 打开网站没有发现可用信息&#xff0c;根据其他人题解了解到网站标题带有bot字样&#xff0c;因此尝试查看robots.txt文件 发现新的文件 User-agent: * Disallow: /fAke_f1agggg.php访问发现并无flag 但此…

桥接模式:解耦抽象与实现的设计艺术

在软件设计中&#xff0c;桥接模式是一种结构型设计模式&#xff0c;旨在将抽象部分与其实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过提供更加灵活的代码结构帮助软件开发人员处理不断变化的需求&#xff0c;特别是在涉及多平台应用开发时。本文将详细介绍桥接…