基于Jenkins的DSP处理器驱动自动化测试平台的设计与实现
2019-03-22李煜仇润鹤
李煜,仇润鹤
基于Jenkins的DSP处理器驱动自动化测试平台的设计与实现
李煜,仇润鹤
(东华大学信息科学与技术学院,上海 201620;数字化纺织服装技术教育部工程研究中心,上海 201620)
目前,DSP在音频、视频等领域得到了非常多的应用,为应对DSP处理器产品领域愈发激烈的市场竞争,必须保证产品功能研发速度不断提升,利用Jenkins搭建一个持续集成自动化测试平台,解决了繁复多样的测试需求。介绍了自动化测试平台的总体框架,并结合DSP处理器音频、视频驱动测试实例,验证该平台的实际测试功能。结果表明,该平台使得自动化测试、持续集成得以成功应用,有效提升了测试效率。
DSP;Jenkins;持续集成;自动化测试
现今,数字信号处理器(digital signal processor,DSP)凭借其对信号的快速采集、变换、识别处理等功能,在家庭影音、工业自动化、航空航天等领域得到广泛应用。以车载主机为例,它可以提供诸多特定音效、接收HD无线电等,极大地增强了车载主机的可用性。而这些功能的实现,依赖于DSP产品配套驱动支持,DSP驱动的开发及测试需求随之增长。现代软件行业发展迅速,新的工具与技术层出不穷。这些新技术都旨在提高企业生产力、产品质量、客户满意度,适应日益缩短的软件交付时间。高效的软件测试方案为实现上述目标发挥着重要作用,尤其在应对更具复杂性的企业级软件的开发测试及部署工作方面。
Capgemini,Sogeti和Micro Focus曾在《2017—2018年世界质量报告》中指出,增加测试自动化、敏捷和DevOps方法的广泛采用,成为软件质量和测试方面的两个重要趋势。Selenium,Katalon Studio,IBM Rational Functional Tester等顶级测试自动化工具和框架,帮助企业更好地进行自我定位,完成软件开发完成以后的测试与维护。
持续集成作为一种软件开发实践,要求团队开发成员每天多次集成工作,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。通过搭建持续集成服务器,能够采用自动化的方法,实现更平滑、更快交付和带来更少的问题,而Jenkins就是一种典型开源持续集成测试软件。
1 持续集成自动化测试平台
1.1 自动化测试平台框架
DSP的持续集成自动化测试平台框架如图1所示。
图1 自动化测试平台框架
该平台主要由Jenkins-Master机器、Jenkins-Slave机器、Git、CCES(CrossCore Embedded Studio)、DSP EZ-KIT等组成。
Jenkins-Master安装在Windows PC上,Jenkins-Slave、CCES安装在Linux PC上,此处Linux PC均为Ubuntu系统,DSP驱动程序的自动化测试任务在Linux PC上完成。Windows PC与Linux PC之间通过SSH(Secure Shell)实现远程连接,进行数据传输等。
Jenkins是一个可扩展的持续集成服务器。Jenkins Master/Slave架构中的Master提供web接口,使用户可以管理项目job和Slave,而job不仅可以在Master机器上运行,也可以分配到Slave机器上运行。一个Master可以关联多个Slave,实现为不同的job,或者相同job的不同配置同时提供服务。相关人员根据不同的业务需求,可以利用Jenkins预设测试任务,实现自动完成重复的测试过程,并更快地识别和修复问题。
SSH是建立在应用层和传输层基础上的安全协议,分别在Windows PC与Linux PC上开启ssh(客户端)和sshd(服务端),使两者进行远程通信,从而启动Slave agent。在创建通过ssh连接的Slave node时,提供Slave的host名称,用户名和ssh证书。创建public/private keys,分别保存到Slave和Master上。Jenkins自动完成其他相应配置后,实现ssh服务。
Git是一个分布式的版本控制系统,可以对不同规模的项目版本进行高效管理。Git将跟踪个人对项目代码进行的所有修改,确定代码可行后提交所做出的修改,而Git将记录项目最新的状态,如果想撤销修改,可返回之前的任意一个可行状态。通过Jenkins内置git plugin实现与Git的联动,即Jenkins监控代码托管仓库Git的状态,如果Git有变动,将自动触发Jenkins执行操作,比如代码部署、自动化测试等。Cross Core Embedded Studio是一种集成开发环境(IDE)。该IDE基于Eclipse,采用成熟的代码生成工具,提供无缝直观的C/C++和汇编语言编辑、代码生成和调试支持。CCES还为开发人员提供了一种驱动器、服务和算法软件模块的高度集成插件支持。这些支持包括片内和片外外设的驱动器支持、USB的堆栈、实时操作系统和文件系统等。
1.2 测试对象
测试所用DSP EZ-KIT是基于SHARC系列处理器的测试评估板。该处理器属于单指令多数据数字信号处理器,针对高性能音频/浮点应用进行了优化,具有大容量片内静态随机存取存储器(SRAM),可消除I/O瓶颈的多条内部总线,并且提供创新的数字音频接口(DAI)。该系列DSP被广泛应用于汽车、专业音频和需要高性能浮点处理的工业应用。该DSP EZ-KIT设备的外设包括ADC、热传感器、触发路由单元、时钟发生器、I2C、定时器和计数器、SDCard、以太网、USB等,如图2所示。
图2 DSP测试评估板
本文主要介绍其音频、视频驱动测试,所以还需配合音频输入/输出线缆、HDMI电缆和3RCA电缆、视频编码/解码器EI3扩展板等物理设备,将DSP EZ-KIT与安装有Jenkins-Slave的机器连接。
Slave机器在特定测试环境下,执行Master分配的job,并拉取运行测试脚本命令,进行自动化测试。本文中Slave机器上执行的exp脚本文件,可以实现测试任务的自动化,它的工作原理是等待特定字符串,并发送或响应相应的字符串,并用于自动提交输入到交互程序。
2 DSP驱动测试实例
该DSP EZ-KIT设备Linux驱动软件包括Video Driver、Audio Driver、Ethernet Driver、LCD device driver等,本文以音频驱动测试、视频驱动测试为例完成自动化测试过程。
2.1 测试对象
音频驱动测试功能主要包括Record、Play、Loopback。以音频录制功能为例,在设定PCM设备后,通过配置不同的音频采样率、录音格式、文件类型等脚本参数,对待测DSP EZ-KIT进行自动化测试,以检测DSP测试板,是否能通过音频驱动软件录制生成目标品质的音频文件,实现多样需求下的录音功能。视频驱动测试功能主要包括Capture、Display。以视频编码功能为例,将DSP测试板与视频编码器EI3拓展板连接。通过输入不同格式的视频流,对待测DSP EZ-KIT进行自动化测试,从而检测DSP测试板是否能通过视频驱动编码生成不同格式视频文件,实现多种格式标准下的视频编码功能。
2.2 测试脚本
在DSP音频录制功能测试时,首先对amixer功能参数、PCM设备进行配置选择,随后根据测试业务需求,将alsa格式、音频采样率、文件类型等参数配置组成不同录音方案,生成相应格式的音频文件。视频编码功能主要针对特定格式视频流,能够捕捉并编码生成相同格式视频文件,以此验证音频、视频驱动功能的完整性。音频、视频驱动测试主要参数如表1所示。
表1 音频、视频驱动测试脚本参数
脚本参数参数描述 Audioalsa_format= S16_LE录音格式:16 bits alsa_format= S24_LE录音格式:24 bits alsa_format= S32_LE录音格式:32 bits Sample_rate=8000音频采样率:8 kHz Sample_rate=44100音频采样率:44.1 kHz Sample_rate=96000音频采样率:96 kHz Sample_rate=192000音频采样率:192 kHz Videovideo_format=HD视频格式:720p60 video_format=NTSC视频格式:480i60 video_format=PAL视频格式:576i50
2.3 测试流程
在自动化测试平台上,进行DSP驱动功能测试前,首先必须确保测试板可以正常reset,Linux Kernel也能完成boot,输入命令:$ sudoreset_board 2,观察minicom里测试板是否重启,执行指令后测试板有反应表示线路接通,随后可以进行Jenkins任务创建。
Windows PC安装Java、CCES、Python,对PYTHONPATH 环境变量、CCES_HOME环境变量进行设置。进入Jenkins-Master建立新节点,配置Slave节点信息,选择SSH启动方式。Slave设置结束后,生成slave-agent.jnlp文件。将含有启动相应node的cmd命令行的lanuch.bat文件,与slave.jar放到-All program-Startup文件夹,完成开机自启node。
在Jenkins-Master上创建多个Slave节点,为便于对不同型号DSP测试板的管理,通常用待测DSP评估板型号命名节点。在创建job时,将不同驱动功能测试case进行区分设置,并选择遇到failed时可继续进行。添加shell脚本,命令Slave机器进行环境变量配置。设置Git的Project url,使得Slave可以自动从指定地址拉取测试脚本等文件。同时可以指定执行构建的时间,实现无人控制时段的自动测试,提升测试效率。
完成job的构建后,点击“Build Now”进行自动测试。Jenkins-Master将job分发至位于LinuxPC上的Slave节点,Slave机器依照命令自动进行环境变量配置,并从Git url处拉取获得所需驱动的exp测试脚本文件、驱动软件、相应编译工具等。以音频驱动为例,build_audio_kernel.exp将执行alsa-utils编译、启用ADAU声卡驱动等工作,并生成Uimage文件。而audio_test.exp将把Uimage文件下载至DSP,进行驱动功能测试、生成并反馈test_log等工作。通过Jenkins-Master界面,可以观察到job的执行情况,如图3所示。图3中Name序列左侧晴雨表图标反应测试通过情况,晴天表示良好,雨天表示失败较多。
图3 Jenkins-Master界面观察Job执行情况
2.4 测试结果
在进行DSP音频驱动录制功能测试时,其测试结果可以通过音频的帧误率及左右声道是否相同等标准进行评判,测试通过表示音频录制成功,且能正常生成满足相应格式需求的音频文件。在进行视频驱动编码功能测试时,其测试结果可以查看捕捉输入格式的视频流,是否编码生成视频文件,测试通过表示该格式视频编码正常,否则不支持该格式视频流。
Slave机器上执行的驱动测试脚本最后会生成test_log,记录测试过程及结果,并可根据设置传回Jenkins-Master。在Jenkins的Tset Result界面可以查看job下所有case的测试时间、状态详情,如图4所示。
图4 通过Tset Result查看所有测试项目状态
图4中整个音频驱动测试包括3个test部分,分别耗时15 min、15 min、1 min24 sec,共计31 min24 sec,其余驱动测试平均耗时也仅数分钟,整个测试过程均通过自动化测试平台自动完成。反观手动测试情况,不仅需要安排人员全程进行测试操作,而且一个驱动测试就需耗时数十分钟甚至数小时,由此可以看出,自动化测试平台大大提高了测试效率,缩减了人力时间成本。除此之外,Tset Result界面也可对某一具体job测试结果记录进行查看,根据设置,如果遇到“Failed”,将会展示具体脚本执行报错位置,有利于快速定位解决问题,此处音频驱动测试结果界面显示“Passed”,表示测试通过,如图5所示。
图5 通过Tset Result查看单个测试项目记录
3 结束语
如今敏捷开发(Agile Development)在软件工程领域越来越被重视,它要求在不断变化的需求中做到快速适应,并保证软件的质量。自动化测试技术与持续集成的出现,让软件测试环节实现自动化,不仅减少了人工重复过程,节省了时间、费用和工作量,还保障了每个时间点上团队成员提交的代码是能成功集成的,帮助项目团队进行有效决策。
本文搭建了一种基于Jenkins的持续集成自动化测试平台,利用Jenkins易于安装配置、可进行分布式build、丰富的插件支持等特性,用于DSP驱动软件项目的自动化测试。同时对自动化测试平台框架及各组成模块的关系、功能进行了具体介绍,包括所用DSP测试评估板的功能特性。以DSP EZ-KIT的音频驱动、视频驱动测试为例,从测试流程、测试结果等方面进行了简要描述。该平台成功实现了DSP驱动软件测试流程的持续集成与自动化,具有显著的实际应用价值。
[1]马晓东,李冰琪,魏鹏,等.DSP技术发展与应用研究综述[J].电子世界,2018(24):46-47.
[2]商永巧.DevOps之持续集成实践之路[J].通讯世界,2018,25(12):266-267.
[3]曾利宏.分析软件自动化测试技术及应用[J].信息系统工程,2017(10):42.
[4]赵良福,王世签,郑科鹏.软件自动化测试研究[J].有线电视技术,2018,25(6):95-97.
[5]段清蛇,李筠.基于Jenkins的持续集成测试环境插件开发[J].信息技术,2013(10):114-116,120.
[6]李静.浅析Jenkins在java项目开发中的应用[J].福建电脑,2017,33(6):154,183.
[7]卞孟春.基于Jenkins的持续集成方案设计与实现[D].北京:中国科学院大学,2014.
[8]张力文.基于Jenkins的项目持续集成方案研究与实现[D].成都:西南交通大学,2017.
[9]刘博,汪宇昕.一种基于Jenkins的嵌入式软件持续集成方法[J].铁道机车车辆,2018(6):14-16,23.
[10]庞双玉.Git分布式版本控制实现机制探讨[J].信息系统工程,2018(10):53-54.
2095-6835(2019)05-0138-04
TN911.72
A
10.15913/j.cnki.kjycx.2019.05.138
李煜(1995—),男,硕士,主要研究方向为电子通信技术、数字信号处理。
〔编辑:严丽琴〕