郑淳允 巫辉燕
摘 要:本文通过对汽车信息娱乐系统测试的各种需求进行研究,有针对性地设计一套自动化测试系统,并对其工作原理和功能实现做出详细解析,从而提高排查功能故障的效率,使汽车各分系统的性能得到较好的发挥,提高了汽车测试的效率,能够把更多的测试人员从重复机械的大部分功能测试中解放出来。
关键词:汽车 信息娱乐系统 自动化测试
Design of automatic test platform for automotive infotainment system
Zheng Chunyun Wu Huiyan
Abstract:In this paper, through the study of various requirements of automotive information and entertainment system testing, we design a set of automatic testing system, and make a detailed analysis of its working principle and function realization, so as to improve the efficiency of troubleshooting function, make the performance of each subsystem of the car get better play, improve the efficiency of automotive testing, and make more testers pay more attention Most of the functions of the machine are free from the test.
Key words:Automobile; infotainment system; automatic test;
1 引言
当前,软件定义汽车逐渐成为行业的标准,汽车测试方法的改进对电动汽车乘坐的舒适性、安全性和节能环保具有重要的意义[1],合理的测试方法既可加快汽车投产升级的速度,又可以使各ECU元件充分发挥其应有的效果,因此,我们有必要对利用脚本对汽车批量测试尤其是对汽车的信息娱乐系统批量测试的技术进行研究,使汽车各分系统能发挥更佳效能,促进电动汽车的普及化。
2 自动化测试系统的组成
汽车的信息娱乐系统具有包括乘客信息娱乐、汽车和环境信息显示、导航和连接等在内的车内特性,主要由信息娱乐系统显示屏,无线音响单元,远程信息处理控制单元(TCU)等组成,与车辆其它分系统之间通过总线以报文的形式实现通信。
本文设计的自动化测试系统主要由总线,图像识别,dSPACE,程控电源,蓝牙配对,查找控件等基本模块组成。其采用Python语言进行编写实现。Python是一种脚本型的编程语言,使用起来非常灵活,其具有功能强大、简单易学、支持面向对象、函數式编程[2]的特点。Python拥有众多的标准库和第三库,简单易用且功能强大,使得开发各种应用程序变得简洁快速,满足不同软件的开发需求,非常适合非软件开发人员学习和应用[3][4]。
相比人工测试,其特点是采用包括自动生成代码/下载和试验/调试的一整套工具包[5]。对传入的测试用例检索各行,每一行按脚本执行测试流程,对测试流程中的重复操作实现全自动化执行[6]。
3 自动化测试系统的工作原理
3.1 总线测试
本文设计的自动化测试系统的总线测试功能目前只支持can总线收发,主要是收集车辆通信的can报文信号并与测试用例中预期的can报文进行比对[7][8]。其工作流程为: gRPC客户端构造一个远程的客户端,然后让PC端进行收发报文,如图1所示。点击总线按钮。
插入总线断言第一步需导入DBC文件。DBC文件可以理解为是对底层通信的can总线信号的翻译,该文件会把把翻译后的文字显示在导入的软件界面上,因此可以更直观地监控总线收发的报文。导入DBC文件后点击报文,点击后出现报文信息和信号信息。Phys Value为需发送的值,Check Value为需接收的有效值,Invalid Value为需接收的无效值,上述参数均为DBC文件翻译后在平台上的显示。插入发送需填写时限,插入接收需填写时限和有效帧数,无效帧数选填。插入成功后会添加到脚本步骤列表之中。
3.2 摄像头截取图像对比功能测试
摄像头图像识别功能测试需要用户在编写脚本时保存一张预期图片和该图片需要对比的区域。测试进行时,该功能会利用摄像头进行拍摄,并抽取一帧图片,获取到需要识别的图片,然后对该图片进行裁剪,将需要对比的区域裁剪下来得到需要对比的区域图。得到区域图后会计算该图与预期图各自的直方图结果,利用两图的直方图结果计算出两图的相似度。最后相似度大于0.7(相似度值可在软件设置调)即为Pass,否则 Fail。流程图如图2。
点击摄像头按钮,出现如图3,该界面可对摄像头进行操作。左边视图是摄像头实时视频,右边视图是点击拍照后截取视频最后一帧的照片。首先需要选择摄像头设备点击连接,连接设备后可进行拍照,拍照后可进行保存或插入断言。保存即保存到本地临时文件夹(关闭软件后会被删除),插入断言即将摄像头的图像对比断言加入到主界面,点击关闭或关闭窗体都可将摄像头关闭。
3.3 dSPACE工具对机柜进行操作
dSPACE[4][5]功能是建立一个gRPC服务器,然后对gRPC服务器进行请求来实现的。gRPC 服务器利用dSPACE的API进行对机柜进行操作,其实质是通过建立一套命令行工具,以方便高级测试人员可以摆脱固定脚本的束缚,用命令行工具实现更灵活的操作,对于一些不常见故障的排查与测试有良好的效果。
3.4 程控电源测试
程控电源的测试是基于硬件在环仿真(HIL)实现的[9][10][11],打开Hil机柜界面,先点击设置,加载和配置SDF后方可进行对信号的操作。右击信号可查看信号信息,插入读或写信号值断言,监控信号值变化。
程控电源简单来说就是通过 pyvisa 发送 SCPI 指令来实现对程控电源的控制。在 PC 端中集合了几个常见的功能,比如调节电压,电流等,具体到实现方法都是一样的发送SCPI的指令。由是通过pyvisa进行操作的,所以pyvisa不支持的程控电源类型无法进行控制。程控电源服务器的流程如图4。
程控电源主要用于汽车信息娱乐系统的硬件测试中,比如额定工作电流电压、高压低压保护、待机时暗电流大小的监测等等测试用例,自动化测试可以准确调节电流电压,避免人工调节的偶然误差和反应时间滞后的缺点,同时保证测试者与测试设备的安全。
脚本中插入配置后,脚本中的所有信号读写都根据该配置进行读写信号值。如未插入配置,脚本中的信号读写会根据自身填寫的MA 端口进行读写,此时如果服务器未开启该端口会导致脚本报错。
3.5 本地图像识别
本地图像识别需用户在编写脚本时保存一张预期图片和该图片需要对比的区域,可以调用摄像头截图获取所需图片。测试进行时,该功能会利用adb对选择运行的安卓设备进行截屏,获取到需要识别的图片,然后对该图片进行裁剪,将需要对比的区域裁剪下来得到需要对比的区域图。得到区域图后会计算该图与预期图各自的直方图结果,利用两图的直方图结果计算出两图的相似度。最后相似度大于0.7(相似度值可在软件设置调)即为Pass,否则Fail。测试流程图如图5。
3.6 查找控件
控件是用户与可与之交互以输入或操作数据的对象。控件通常出现在对话框中或工具栏上。自动化测试系统需要代替人工点击车机的动作,与汽车信息娱乐系统频繁交互,操作量大,因此准确快速查找到相应的控件对提高该自动化测试系统测试的效率和准确率有非常重要的作用。
查找控件主要有两个功能,一是根据包名打开应用;二是获取界面中的控件元素,而获 取控件元素的方式有3种,分别为 text,description,resouceId。还可设置“是否点击”参数来执行相应动作。
4 自动化测试过程实例
基于开发的自动化测试平台,对导航软件中的指示牌文字信息测试用例进行自动化测试,过程如下:
4.1 测试需求
在导航过程中,对导航界面出现的指示牌能够正确显示文字信息。
测试前提描述:连接摄像头,调好对焦曝光等;仪表在地图界面,主题为经典主题;车机在主页界面,用adb工具连接。操作车机模拟导航,地图导航信息(指示牌文字)传输正常。
4.2 测试步骤
用户首先调用采集图像接口,获取同一时刻下的车机和仪表盘的图像。在仪表盘和车机端的图像中,该接口规定了截取导航软件指示牌文字信息所在的矩形区域的坐标;系统模块根据这些坐标对仪表盘和车机的图像进行裁剪,得到两者指示牌文字信息的图像,再根据OCR文字识别工具识别出两者的指示牌文字信息,包括距离下一道路的公里数、下一道路的名称、总行程的剩余公里数、总行程的预计剩余时间。该接口对两者的上述识别出来的信息进行比对,如果下一道路的公里数和道路名称一致,则返回比对成功,否则提示比对失败。
4.3 测试执行及结果分析
对搭建好的测试序列进行系统批量的执行,启动车机高德导航地图,进入模拟导航模式,模拟导航过程中显示出沿途指示牌文字信息,摄像头截取图像清晰,系统能准确定位文字出现区域,并与系统后台文字库比对,如果比对正确,则指示牌文字定位框显示黄色,如图6所示。以上结果能够满足测试预测结果,证明了该系统的科学性和可行性。
对该用例进行180次测试后发现,该自动化测试脚本能够准确定位图片中随机出现指示牌的准确位置,并可以准确识别出指示牌上的中文和数字,经过与百度云、pytesseract等常用的文字识别软件的对比,未发现识别错误的情况出现,表明该系统还具有良好的鲁棒性。
5 结束语
本文根据目前汽车测试效率较低的现状设计了一套自动化测试系统,主要由总线,图像识别,dSPACE,程控电源,摄像头,查找控件等基本模块组成,通过这些功能,可以把大量重复测试步骤进行批量操作,使得测试效率极大提高。合理的测试方法既可加快汽车投产升级的速度,又可以使各ECU元件充分发挥其应有的效果,因此,我们有必要对利用脚本对汽车批量测试的技术进行研究,使汽车各分系统能发挥更佳效能。总的来说,这套自动化测试系统使得汽车测试效率提高,评价标准统一,有利于解放大量测试人力。
本文的主要创新点是研究了汽车自动化测试的绝大部分应用场景,全面覆盖了汽车测试的要点,这些测试功能方法提升了重复测试的效率,统一了测试标准,有利于稳定汽车电子元件性能,具有实用性、先进性等。
参考文献:
[1]欧阳明高.中国新能源汽车产业未来十年大势展望[J].汽车纵横,2016(6):62-65.
[2]周伟,宗杰.Python开发技术详解[M].北京:机械工业出版社.2009.
[3]华剑南.Python语言在自动化测试系统中的应用[J].电子技术与软件工程,2017(8):252-253.
[4]王聪颖.基于Python的自动化测试框架的分析与设计[D].北京:北京邮电大学,2017.
[5]葛庆光.纯电动汽车整车控制器的研究[D].合肥工业大学,2012.
[6]黄福春.新能源整车控制器硬件在环测试研究与应用[J].汽车电器,2019(11):34-36.
[7]任大恒,严晓,黄碧雄,王影.电池管理系统的报文采集与解析[J].计算机系统应用,2020,29(06):132-136.
[8]岳洋,兰国辉,周红进.基于GSM和CAN总线的数据采集监控系统[J].电子测量技术,2012,35(10):107-109+126.
[9]吴方义,刘卫东,燕冬,等.基于硬件在环的整车控制器自动化测试研究与应用[J].汽车电器,2018(11):29-31.
[10]廖奇祥.基于硬件在环的整车控制器自动化测试研究与应用[J].决策探索(中),2020(02):60-61.
[11]巫辉燕,林汉雄.基于HIL的车载网关控制器的自动化测试研究[J].汽车实用技术,2021,46(05):140-142.