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

文章目录

前言

一、例程功能

二、仿真ECU

三、SystemVariables数组:

四、测试模块

五、测试运行效果

六、分析和应用

总结


前言

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

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

一、例程功能

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

二、仿真ECU

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

三、SystemVariables数组

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

四、测试模块

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

cpp 复制代码
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工程可以到笔者的主页查找和下载。


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

相关推荐
测试老哥1 天前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
互联网杂货铺2 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
测试19982 天前
Chrome+Postman做接口测试
自动化测试·软件测试·chrome·测试工具·职场和发展·测试用例·postman
小码哥说测试3 天前
Charles简单压力测试
自动化测试·软件测试·网络协议·selenium·接口测试·压力测试·postman
霍格沃兹测试开发学社测试人社区3 天前
用户体验测试与专项测试常用工具
软件测试·测试开发
钱钱钱端3 天前
软件测试工程师面试整理 —— 编程与自动化!
自动化测试·软件测试·selenium·测试工具·面试·职场和发展
钱钱钱端3 天前
技术分享 —— JMeter接口与性能测试实战!
自动化测试·软件测试·python·jmeter·职场和发展·压力测试·性能测试
钱钱钱端4 天前
Pytest参数详解 — 基于命令行模式!
自动化测试·软件测试·python·jmeter·职场和发展·pytest·压力测试
测试19984 天前
什么是自动化测试?
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
虹科网络安全5 天前
艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型
自动化测试·ci/cd·持续集成·saas平台·circleci