0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANoe编写CAPL测试脚本的几点思考

jf_EksNQtU6 来源:汽车通信技术 2024-01-02 10:42 次阅读

01配置参数的统一性和便利性

测试脚本的开发人员,需要考虑到测试执行者测试不同控制器时的参数配置。比如不同的网络唤醒条件、不同的网络管理消息、不同的时间参数等等。

编写的测试脚本给他人使用时,最好是把参数配置入口放在一个地方,比如专门的参数配置文件中:

21a0cde6-a7c4-11ee-8b88-92fbcf53809c.png

参数配置文件

再不济可以放在CANoe的系统变量模块中:

21b41c16-a7c4-11ee-8b88-92fbcf53809c.png

系统变量模块

不建议放在CAPL代码中配置测试参数:

21c655d4-a7c4-11ee-8b88-92fbcf53809c.png

CAPL变量模块

为什么不建议放在CAPL代码中配置参数?保证代码的封闭和稳定,以免造成脚本执行错误。同时也能让不懂代码的测试人员执行测试。即使脚本开发人员执行测试,在代码中配置测试参数也不是一个好的选择。

02代码架构的重要性

在测试脚本开发过程中,需要考虑到如何构建代码,尤其是在一个大型的测试脚本中,实现功能众多,逻辑复杂,如果没有清晰的代码架构,不仅会增加大量的冗余代码,还会造成调试的难度变大。

比如在每次测试用例执行前,需要执行测试初始化,初始化需要完成:读取配置文件参数、获取测试执行时间、配置测试报告信息等。其中"读取配置文件参数"需要获取多个参数值,获取多个参数值是一个重复的动作。

获取多个参数值可以通过传入不同的参数调用同一个函数来实现。然后把获取多个参数值的功能用一个函数封装,再把这个封装的函数在初始化函数中调用。

21d85c66-a7c4-11ee-8b88-92fbcf53809c.png

代码结构

这样做的好处是当你在配置参数文件中新增参数,CAPL代码中只需要在ReadIniFile_EthComTest()函数中调用ReadParameter(),传入正确的参数即可。而且结构化的代码层次分明、逻辑清楚、调试失败时容易定位问题点。

03代码语法的细节化掌握

很多人觉得学CAPL就是学CAPL提供的函数接口,当然很多人学不下去也是因为CAPL里的函数太多了,不知道哪个功能应该使用哪个函数。其实学习CAPL编程和其他语言一样,首先要做的应该是打好基础,系统性地学习CAPL基本语法,深入了解语法中的细节。

下面这个错误很多人应该遇到过:

21f36dbc-a7c4-11ee-8b88-92fbcf53809c.png

CAPL运行错误

这种由于没有考虑到数组大小而造成内存溢出的问题,在CAPL编译阶段是不会出现的。

而像字符串类型的数据要如何定义内存大小、如何赋值、如何读取,看似简单却是调试中最容易出问题的。

04注释说明的必要性

在开发测试脚本的过程中,需要对代码进行必要的注释,有利于自己或他人后期维护。

自定义函数应该描述函数功能、行参说明、返回值含义等。一些重要的环节也应该对代码进行单独注释,以帮助后期维护的逻辑梳理。

222bf15a-a7c4-11ee-8b88-92fbcf53809c.png

注释说明

05脚本的高可用性

域集中式的整车架构中,多种ECU和控制器并存,对测试脚本的可用性带来挑战。尤其考虑到整车厂,编写的测试脚本不能只是一锤子买卖,只能用来测试一个控制器,换一个件就出现各种奇怪的问题,这肯定是不行的!

拿CAN通信测试来说,有的控制器是本地唤醒、有的控制器是远程唤醒;有的控制器需要E2E校验,有的不需要;有的控制器的DTC是CAN消息触发,但是以太网通道读取。要考虑的因素太多,不只是要对整车网络架构有所了解,对所有控制器功能差异有所掌握,还要思考如何把这些差异做到脚本中,让同一个脚本能够跑通所有控制器。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15237

    浏览量

    171219
  • 函数
    +关注

    关注

    3

    文章

    3903

    浏览量

    61310
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14636
  • CANoe
    +关注

    关注

    3

    文章

    56

    浏览量

    8465

原文标题:CANoe编写CAPL测试脚本的几点思考

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CAPL介绍-脚本编辑和常用基本事件#CANoe#CAPL#脚本

    编程语言
    北汇信息POLELINK
    发布于 :2023年01月06日 09:06:50

    两分钟快速了解CAPL脚本结构与常用函数#CAPL #CANoe

    脚本经验分享
    北汇信息POLELINK
    发布于 :2023年03月25日 10:43:38

    CANoe:网络和ECU开发、测试和分析的专业工具

    CANoe的主要应用案例之一就是ECU和网络测试。例如:验证单个开发阶段,检查原型,回归测试和合格测试。为了使得测试任务简单易行,
    发表于 10-09 17:42

    Vector-CANoe 软件中文资料,CPAL语言,软件使用方法等

    本帖最后由 追风逐浪 于 2019-3-12 14:29 编辑 Vector-CANoe 软件中文资料,CPAL语言,软件使用方法等CANoe.LIN基础培训 CANoe快速入门 CAP
    发表于 03-12 14:20

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    详细介绍下如何解析ODX数据库

    针对涉及诊断功能类(如DTC等)测试的项目,实现过程大致为两步:先通过CANoe-CAPL完成通用的诊断功能测试脚本的开发;
    的头像 发表于 02-17 10:27 691次阅读

    什么是CAPL编程?

    与Vspy的"C Code Interface"一样;在CANoe的使用中,一样提供了我们进行二次编程开发的工具——”CAPL Browser”。
    的头像 发表于 06-18 10:13 1567次阅读
    什么是<b class='flag-5'>CAPL</b>编程?

    使用Python访问CANoe COM接口实践

    本文介绍CANoe COM基本构成、常用COM对象以及Python脚本调用CANoe COM的方法。
    的头像 发表于 07-27 16:16 2474次阅读
    使用Python访问<b class='flag-5'>CANoe</b> COM接口实践

    CANoe集成解决方案

    本文介绍CANoe集成解决方案,搭配测试管理平台,实现测试项目的集中管理。用于监控管理CANoe工程,采集、仿真CANoe报文数据等。
    的头像 发表于 08-04 14:49 614次阅读
    <b class='flag-5'>CANoe</b>集成解决方案

    CAPL编程语言快速入门

    CAPL是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程语言。CAPL中程序块的执行由事件控制,在专用的编译器中开发和编译,这样可以访问数据库
    的头像 发表于 09-17 16:11 1654次阅读
    <b class='flag-5'>CAPL</b>编程语言快速入门

    新功能发布 | TSMaster新增CANoe自动化控制模块,欢迎下载体验!

    前言今天介绍TSMaster的新功能—CANoe自动化模块。该模块的功能是通过激励CANoe内部的系统变量,配合运行在CANoe中的CAPL脚本
    的头像 发表于 12-05 15:18 965次阅读
    新功能发布 | TSMaster新增<b class='flag-5'>CANoe</b>自动化控制模块,欢迎下载体验!

    CAPL在诊断中的应用,你值得了解!

    作者|胖胖磊小编|吃不饱CANoe主要用于汽车总线的开发并广泛被汽车电子工程师们使用。它具有强大的开发、分析、仿真、诊断、测试等功能。一提到CANoe大家往往都会想到CAPL,在使用
    的头像 发表于 09-07 08:27 481次阅读
    ​<b class='flag-5'>CAPL</b>在诊断中的应用,你值得了解!

    编写一个点名器脚本

    目的:编写一个脚本,可以将准别好的名字合集的.txt传入脚本,然后每次随机显示一个人的姓名
    的头像 发表于 11-06 12:41 346次阅读
    <b class='flag-5'>编写</b>一个点名器<b class='flag-5'>脚本</b>

    Python与CANoe/CANoe4SW

    Python作为功能强大的编程语言,在智能汽车研发和测试中应用广泛,如数据处理、测试自动化、测试脚本开发,甚至直接将Python应用运行在车辆上。C
    的头像 发表于 11-16 08:25 694次阅读
    Python与<b class='flag-5'>CANoe</b>/<b class='flag-5'>CANoe</b>4SW

    CAPL脚本使用介绍

    CAPL中也有类似于C语言中的回调函数的机制,如检测报文周期和错误帧的函数中就可以使用,当周期超界或者总线出现错误帧就会自动调用回调函数执行一些操作
    的头像 发表于 04-01 11:23 329次阅读