CANoe自动化测试的配置方式总结分析(五)——CSV表格方式

文章目录

前言

一、例程功能

二、仿真ECU

三、CSV表格

四、测试模块

五、测试运行效果

六、分析和应用

总结


前言

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

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

一、例程功能

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

二、仿真ECU

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

三、CSV表格

        CSV表格的创建如下图所示。测试人员在测试开始前,新建一个CSV文件,在表格中一次性设定全部的测试配置信息。

CANoe自动化测试的配置方式总结分析(五)——CSV表格方式_第1张图片

四、测试模块

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

CANoe自动化测试的配置方式总结分析(五)——CSV表格方式_第2张图片

includes
{
  #include "..\Include\DemoLib.cin"
}

variables
{
  char csvfile[30] = ".//Cfg//DemoCfg.csv";
  int csvHandle;
  char buf_line[100];
  char data_line[100][100];
  struct csv_line
  {
    dword ID;
    byte IsStad;   
    byte Length; 
    byte Data;   
  };
  struct csv_line TestCfg[10];
  message * TestMsg;
  int j;
}

void MainTest()
{
  LoadTestCfg();
  for(j=1;j<=4;j++)
    CaseEvery(j);
}

void LoadTestCfg()
{
  int i;
  csvHandle = OpenFileRead (csvfile,1);
  if (csvHandle!=0 ){   
    write("load csv file :%s successed.",csvfile); 
    
    fileGetStringSZ(buf_line,elcount(buf_line),csvHandle);
    for(i=1;i<=4;i++)
    {
      fileGetStringSZ(buf_line,elcount(buf_line),csvHandle);
      CutString(buf_line,data_line); 
      TestCfg[i].ID = HexStr2dword(data_line[1]);
      TestCfg[i].IsStad = atol(data_line[2]);
      TestCfg[i].Length = atol(data_line[3]);
      TestCfg[i].Data = HexStr2dword(data_line[4]);
    }
//    write("TestCfg[4].ID:%x",TestCfg[4].ID);
//    write("TestCfg[4].IsStad:%d",TestCfg[4].IsStad);
//    write("TestCfg[4].Length:%d",TestCfg[4].Length);
//    write("TestCfg[4].Data:%x",TestCfg[4].Data);
    fileClose (csvHandle);
  }
  else{
    write("load csv file :%s failed.",csvfile); 
  }
}

testcase CaseEvery(byte j)
{
  int i;
  
  write("Load Cfg");
  TestMsg.can = 1;
  if(TestCfg[j].IsStad) TestMsg.id = TestCfg[j].ID;
  else TestMsg.id = mkExtId(TestCfg[j].ID);
  TestMsg.DataLength = TestCfg[j].Length;
  for(i=0;i

五、测试运行效果

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

CANoe自动化测试的配置方式总结分析(五)——CSV表格方式_第3张图片

六、分析和应用

        上述使用CSV实现自动化测试配置的方式,特点跟前两种使用系统变量和CIN全局变量的方式类似,都是是各个测试参数使用一个统一的配置文件(CSV文件)进行配置。具有相同的优缺点和适用场景。优点是,在一个地方即可完成对全部自动化测试信息的配置,不需要对每个测试配置单独输入或单独编程。缺点是,在编程逻辑上会稍微复杂一些,后期使用和维护时对工程师的个人能力要求会稍微高一些,尤其是测试模块对CSV文件的加载和数据提取特别复杂,经过了好几层函数的数据处理。CSV这种方式也是适合应用于测试项目的中后期阶段,测试配置相对稳定,需要快速迭代和重复测试的场景。但是与前两种配置方式也有一定的区别,CVS文件的编辑是一种表格的形式,配置信息泾渭分明,非常直观,在测试配置环节不容易出错。

总结

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

        至此,全部五种CANoe自动化测试配置的实现方式就全部讲解完了。欢迎评论区留言、点赞、收藏和关注,这些鼓励都将成为笔者持续分享的动力。

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


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

你可能感兴趣的:(CANoe,汽车,mcu,网络,单元测试,自动化)