RobotFramework简介及在汽车电子测试中的应用

汽车电子设计 2022-06-17 10:37

● ●


汽车电子软件扮演着越来越重要的角色,为适应市场变化,车载软件和功能的开发需要快速迭代。敏捷开发、持续测试、CI/CT/CD实现和DevOps等成了汽车电子行业的高频词,也正在帮助OEM和零部件供应商实现频繁的代码部署和实现可靠软件交付的目标。测试自动化是这些过程中不可或缺的一部分,因为可以提升测试效率以加速开发迭代,特别是对于重复性的任务或不需要任何人工干预的任务。


说到自动化测试,Robot Framework作为自动化测试领域的明星框架,已经开始摩拳擦掌,跃跃欲试。今天我们一起来看下Robot Framework在汽车电子测试中,可以发挥出多大的作用。




Robot Framework简介




Robot Framework是一个广受欢迎的自动化测试框架。所谓框架,可以理解为一组准则,遵循这些准则可以获取明显的收益。自动化测试框架就是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。


Robot Framework是一个基于Python语言开发的,可扩展的,是以关键字驱动模式的自动化测试框架。



特点



1

编辑用例简单,启用易于使用的表格语法,以统一的方式创建测试用例;

2

提供从现有关键字创建可重复使用的更高级别关键字的功能;

3

提供易于阅读的结果报告和HTML格式的日志;

4

提供一个简单的库API,用于创建自定义测试库,可以使用Python或Java本机实现;

5

支持创建数据驱动的测试用例;

6

提供标记以分类和选择要执行的测试用例;

7

可以和SVN或者GIT及Jenkins持续集成。


上文我们提到Robot Framework是以关键字驱动模式的自动化测试框架,同时支持创建数据驱动的测试用例。那么关键字驱动和数据驱动分别有什么特点呢?


关键字驱动是由关键字和数据组成测试用例执行测试,测试框架的底层负责解释关键字,完成指令,测试用例的编辑者只需要使用关键字和数据组合,即可实现复杂的测试逻辑。测试执行的代码和测试用例代码是分离的。这种方式学习成本比较高,开发关键字及其相关功能的初始投资可能需要更长的时间。


数据驱动测试是从数据文件读取输入、输出数据,通过变量传入测试脚本执行测试,数据是可变的,测试设计是重复的、高度抽象的。使用这种测试方式可以减少重复劳动,测试用例易于修改和维护。但是这种方式不擅长逻辑处理,一组脚本只能处理特定格式的数据。在一些特定的测试场景下,这种方式具有明显优势。比如汽车ECU(如网关)测试有数据转发/路由的测试场景,需要测试的数据有时多达上千个,我们只需创建一条数据转发业务的测试用例,从数据文件中读取输入、输出数据后,遍历所有数据即可完成测试。




Robot Framework整体架构




Robot Framework是一个通用的,和具体测试工具松耦合的框架,其高度模块化的架构如下图所示:




测试数据(Test Data)使用非常简单、易于编辑的表格格式。Robot Framework会解析测试数据, 执行测试用例, 并生成日志和报告。框架本身对测试对象可以完全“一无所知”, 而是通过测试库与其交互。测试库可能是直接使用被测应用程序的接口, 也可以使用其它底层的测试工具作为驱动。




Robot Framework环境安装



Robot Framework环境的安装比较简单,只需两步即可完成:


1.安装python配置环境变量;

2.打开dos窗口,输入指令 pip install robotframework,点击回车,安装RobotFramework。




Robot Framework常用关键字



上文我们提到Robot Framework是一个关键字模式驱动的自动化测试框架,Robot Framework的测试用例由关键字和测试数据组成。关键字是用Python语言编写的函数,也即是一个个方法。它是为了完成一个功能来设计的,分为系统关键字和用户关键字。


系统关键字包含标准库里面的关键字和第三方库里面的关键字,就像C/C++的库函数或者Python的内置函数一样。


用户关键字是根据业务需求将不同的业务封装成一个关键字或者将用例执行的步骤封装成一个关键字,就像C/C++或者Python中的用户自定义函数。



下面我们介绍几个常见关键字的用途


Convert To Integer:将给定的变量转换成一个整数。示例:



${result} =Convert To Integer100# Result is 100


Import Library:导入扩展库或者自定义库。示例:



Import Library MyLibrary

Import Library ${CURDIR}/Lib.py arg1 named=arg2 WITH NAME Custom

Get Variable Value:获取变量的值,赋给一个新的变量,如果变量不存在可以设置一个默认值。示例:



${x} =    Get Variable Value    $a    default

${y} =    Get Variable Value    $a    ${b}

${z} =    Get Variable Value    $z



Log:使用给定的级别记录给定的信息。示例:



LogHello, world!# Normal INFO message.

LogWarning, world!WARN# Warning.



Set Variable:给变量设置值。示例:



${hi} =Set VariableHello, world!

${hi2} =Set VariableI said: ${hi}

${var1}${var2} =Set VariableHelloworld

@{list} =Set Variable${list with some items}

${item1}${item2} =Set Variable${list with 2 items}


Should Be Equal:Robot Framework中的断言关键字,如果给定的对象不相等,就会判定失败。示例:



Should Be Equal${x}expected

Should Be Equal${x}expectedCustom error message

Should Be Equal${x}expectedCustom messagevalues=False



Sleep:测试执行等待一定时间。示例:



Sleep42

Sleep1.5

Sleep2 minutes 10 seconds

Sleep10sWait for a reply




Robot Framework测试用例示例




说了这么多,大家肯定想赶紧看看Robot Framework是怎么使用的,现在我们通过一个简单的例子来说明Robot Framework是怎么执行测试的。




测试用例操作步骤

  • 加载CANoe测试工程

  • 启动测试

  • 等待一定时间,确保CANoe启动完成

  • 设置系统变量的值

  • 等待一定时间,确保系统变量设置完成

  • 获取关联系统变量的信号值

  • 比较设置的值和读取的值是否相同

  • 终端输出提示“测试用例执行结束”

Robot Framework编写的测试用例如下图一所示:



图一  Robot Framework测试用例示例


执行测试用例:dos窗口中输入robot 测试用例路径,点击回车即可,这里执行用例的逻辑是使用pip安装Robot Framework时,会在Python安装路径下面的Scripts文件夹生成robot.exe文件,Scripts文件夹已经添加到系统路径,因此不需要再配置robot.exe的系统路径就可以直接调用。


执行后用例后,CANoe中关联系统变量的信号值设置成功,如图二所示。


图二  CANoe信号EngineState::OnOff值设置为1


用例执行完成后,生成的测试报告如图三所示。


图三  测试用例执行后生成的测试报告




Robot Framework与CANoe结合使用



相比于IT行业的软件测试,汽车电子需要搭建硬件测试环境,测试时需要监控和仿真很多总线信号和硬线信号,CANoe作为专业的总线网络开发和测试工具被众多整车厂和供应商的系统设计师、开发工程师和测试工程师所广泛使用。配合Vector的硬件设备,如VN通信硬件接口卡及VT IO板卡,以及图形化自动化测试工程开发软件vTESTstudio,可以胜任汽车电子研发测试的各项任务。Robot Framework和CANoe结合使用,既带来了Robot Framework可以自动部署测试软件、自动截取日志、可以生成易于阅读的测试报告和可以灵活的选取测试用例的优点,也保留了Vector工具在多总线支持、网络监测和分析、系统仿真等方面的优势,各取所长。


CANoe是留有COM Interface的,这样我们可以通过第三方的程序调用CANoe开放的API。调用交互的部分DEMO代码如下图四所示:


图四  Python编程调用CANoe代码


Robot Framework和CANoe结合使用一般有两个思路:

第一种情况是把测试用例的过程主体在Robot Framework环境中编写脚本实现并执行,在执行过程中调用CANoe提供测试数据、参数、变量的读取和设定,这个思路适合对时间要求不敏感的测试用例。如下图五所示用例,CanoeHandle为自定义的关键字库,创建了加载CANoe工程、启动测试、停止测试、获取信号值、设置系统变量值、获取系统变量值等关键字,可以使用这些关键字组合创建Robot Framework测试用例,执行测试。


图五  基于Robot Framework编写CANoe测试用例


第二种情况是测试用例整体在Vector工具链中开发测试工程和脚本(比如基于vTESTstudio开发图形化测试工程或是CANoe-CAPL编写测试脚本),并在CANoe中执行工程和脚本。此时,如图六所示,Robot Framework作为一个测试用例管理框架来使用,CanoeHandle为自定义的关键字库,创建了加载CANoe工程、加载测试脚本、执行测试脚本等关键字,可以使用Robot Framework进行测试管理,根据实际需求删选测试用例、自动控制测试开始、停止等。结合Jenkins打造通用的自动化持续集成测试平台,可以显著提升测试效率。


图六  基于Robot Framework管理CANoe测试工程




● ●


IT领域的开发理念和以太网等具体通信技术经过优化改造后在汽车上的应用,为软件定义汽车的实现提供了诸多方法论和技术手段上的支撑和支持。同样,发源于IT行业的测试技术也越来越多地被应用到汽车电子的测试中,在过去一年的项目中,北汇信息已经将Robot Framework与CANoe等汽车行业的主流工具进行了结合应用,积累了一些实践经验,期待与大家深入交流和探讨。下期我们将带来Robot Framework结合Jenkins的测试实践应用的主题,敬请关注。


注:文中部分图片来源于Vector。


CANoe集成解决方案

看完这篇文章,还不会Multi CANoe你找我

基于CANoe MQTT节点仿真的T-Box远程功能自动化测试

会充电的CANoe又双叒叕来了:PLC数据采集、分析、仿真

汽车电子设计 本公众号是博主和汽车电子的行业的工程师们一起交流、探讨、思考的小结,以作为技术交流和沟通的桥梁
评论
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 95浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 79浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 97浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 93浏览
  • 职场是人生的重要战场,既是谋生之地,也是实现个人价值的平台。然而,有些思维方式却会悄无声息地拖住你的后腿,让你原地踏步甚至退步。今天,我们就来聊聊职场中最忌讳的五种思维方式,看看自己有没有中招。1. 固步自封的思维在职场中,最可怕的事情莫过于自满于现状,拒绝学习和改变。世界在不断变化,行业的趋势、技术的革新都在要求我们与时俱进。如果你总觉得自己的方法最优,或者害怕尝试新事物,那就很容易被淘汰。与其等待机会找上门,不如主动出击,保持学习和探索的心态。加入优思学院,可以帮助你快速提升自己,与行业前沿
    优思学院 2025-01-09 15:48 98浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 110浏览
  • HDMI 2.2 规格将至,开启视听新境界2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新HDMI规范为规模庞大的 HDMI 生态系统带来更多选择,为创建、分发和体验理想的终端用户效果提供更先进的解决方案。新技术为电视、电影和游戏工作室等内容制作商在当前和未来提供更高质量的选择,同时实现多种分发平台。96Gbps的更高带宽和新一代 HDMI 固定比率速率传输(Fixed Rate Link)技术为各种设备应用提供更优质的音频和视频。终端用户显示器能以最
    百佳泰测试实验室 2025-01-09 17:33 106浏览
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 82浏览
  • 在当前人工智能(AI)与物联网(IoT)的快速发展趋势下,各行各业的数字转型与自动化进程正以惊人的速度持续进行。如今企业在设计与营运技术系统时所面临的挑战不仅是技术本身,更包含硬件设施、第三方软件及配件等复杂的外部因素。然而这些系统往往讲究更精密的设计与高稳定性,哪怕是任何一个小小的问题,都可能对整体业务运作造成严重影响。 POS应用环境与客户需求以本次分享的客户个案为例,该客户是一家全球领先的信息技术服务与数字解决方案提供商,遭遇到一个由他们所开发的POS机(Point of Sal
    百佳泰测试实验室 2025-01-09 17:35 96浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 113浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦