李煜,仇潤鶴
?
基于Jenkins的DSP處理器驅(qū)動自動化測試平臺的設(shè)計與實現(xiàn)
李煜,仇潤鶴
(東華大學(xué)信息科學(xué)與技術(shù)學(xué)院,上海 201620;數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620)
目前,DSP在音頻、視頻等領(lǐng)域得到了非常多的應(yīng)用,為應(yīng)對DSP處理器產(chǎn)品領(lǐng)域愈發(fā)激烈的市場競爭,必須保證產(chǎn)品功能研發(fā)速度不斷提升,利用Jenkins搭建一個持續(xù)集成自動化測試平臺,解決了繁復(fù)多樣的測試需求。介紹了自動化測試平臺的總體框架,并結(jié)合DSP處理器音頻、視頻驅(qū)動測試實例,驗證該平臺的實際測試功能。結(jié)果表明,該平臺使得自動化測試、持續(xù)集成得以成功應(yīng)用,有效提升了測試效率。
DSP;Jenkins;持續(xù)集成;自動化測試
現(xiàn)今,數(shù)字信號處理器(digital signal processor,DSP)憑借其對信號的快速采集、變換、識別處理等功能,在家庭影音、工業(yè)自動化、航空航天等領(lǐng)域得到廣泛應(yīng)用。以車載主機為例,它可以提供諸多特定音效、接收HD無線電等,極大地增強了車載主機的可用性。而這些功能的實現(xiàn),依賴于DSP產(chǎn)品配套驅(qū)動支持,DSP驅(qū)動的開發(fā)及測試需求隨之增長?,F(xiàn)代軟件行業(yè)發(fā)展迅速,新的工具與技術(shù)層出不窮。這些新技術(shù)都旨在提高企業(yè)生產(chǎn)力、產(chǎn)品質(zhì)量、客戶滿意度,適應(yīng)日益縮短的軟件交付時間。高效的軟件測試方案為實現(xiàn)上述目標(biāo)發(fā)揮著重要作用,尤其在應(yīng)對更具復(fù)雜性的企業(yè)級軟件的開發(fā)測試及部署工作方面。
Capgemini,Sogeti和Micro Focus曾在《2017—2018年世界質(zhì)量報告》中指出,增加測試自動化、敏捷和DevOps方法的廣泛采用,成為軟件質(zhì)量和測試方面的兩個重要趨勢。Selenium,Katalon Studio,IBM Rational Functional Tester等頂級測試自動化工具和框架,幫助企業(yè)更好地進行自我定位,完成軟件開發(fā)完成以后的測試與維護。
持續(xù)集成作為一種軟件開發(fā)實踐,要求團隊開發(fā)成員每天多次集成工作,每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤。通過搭建持續(xù)集成服務(wù)器,能夠采用自動化的方法,實現(xiàn)更平滑、更快交付和帶來更少的問題,而Jenkins就是一種典型開源持續(xù)集成測試軟件。
DSP的持續(xù)集成自動化測試平臺框架如圖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系統(tǒng),DSP驅(qū)動程序的自動化測試任務(wù)在Linux PC上完成。Windows PC與Linux PC之間通過SSH(Secure Shell)實現(xiàn)遠(yuǎn)程連接,進行數(shù)據(jù)傳輸?shù)取?/p>
Jenkins是一個可擴展的持續(xù)集成服務(wù)器。Jenkins Master/Slave架構(gòu)中的Master提供web接口,使用戶可以管理項目job和Slave,而job不僅可以在Master機器上運行,也可以分配到Slave機器上運行。一個Master可以關(guān)聯(lián)多個Slave,實現(xiàn)為不同的job,或者相同job的不同配置同時提供服務(wù)。相關(guān)人員根據(jù)不同的業(yè)務(wù)需求,可以利用Jenkins預(yù)設(shè)測試任務(wù),實現(xiàn)自動完成重復(fù)的測試過程,并更快地識別和修復(fù)問題。
SSH是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,分別在Windows PC與Linux PC上開啟ssh(客戶端)和sshd(服務(wù)端),使兩者進行遠(yuǎn)程通信,從而啟動Slave agent。在創(chuàng)建通過ssh連接的Slave node時,提供Slave的host名稱,用戶名和ssh證書。創(chuàng)建public/private keys,分別保存到Slave和Master上。Jenkins自動完成其他相應(yīng)配置后,實現(xiàn)ssh服務(wù)。
Git是一個分布式的版本控制系統(tǒng),可以對不同規(guī)模的項目版本進行高效管理。Git將跟蹤個人對項目代碼進行的所有修改,確定代碼可行后提交所做出的修改,而Git將記錄項目最新的狀態(tài),如果想撤銷修改,可返回之前的任意一個可行狀態(tài)。通過Jenkins內(nèi)置git plugin實現(xiàn)與Git的聯(lián)動,即Jenkins監(jiān)控代碼托管倉庫Git的狀態(tài),如果Git有變動,將自動觸發(fā)Jenkins執(zhí)行操作,比如代碼部署、自動化測試等。Cross Core Embedded Studio是一種集成開發(fā)環(huán)境(IDE)。該IDE基于Eclipse,采用成熟的代碼生成工具,提供無縫直觀的C/C++和匯編語言編輯、代碼生成和調(diào)試支持。CCES還為開發(fā)人員提供了一種驅(qū)動器、服務(wù)和算法軟件模塊的高度集成插件支持。這些支持包括片內(nèi)和片外外設(shè)的驅(qū)動器支持、USB的堆棧、實時操作系統(tǒng)和文件系統(tǒng)等。
測試所用DSP EZ-KIT是基于SHARC系列處理器的測試評估板。該處理器屬于單指令多數(shù)據(jù)數(shù)字信號處理器,針對高性能音頻/浮點應(yīng)用進行了優(yōu)化,具有大容量片內(nèi)靜態(tài)隨機存取存儲器(SRAM),可消除I/O瓶頸的多條內(nèi)部總線,并且提供創(chuàng)新的數(shù)字音頻接口(DAI)。該系列DSP被廣泛應(yīng)用于汽車、專業(yè)音頻和需要高性能浮點處理的工業(yè)應(yīng)用。該DSP EZ-KIT設(shè)備的外設(shè)包括ADC、熱傳感器、觸發(fā)路由單元、時鐘發(fā)生器、I2C、定時器和計數(shù)器、SDCard、以太網(wǎng)、USB等,如圖2所示。
圖2 DSP測試評估板
本文主要介紹其音頻、視頻驅(qū)動測試,所以還需配合音頻輸入/輸出線纜、HDMI電纜和3RCA電纜、視頻編碼/解碼器EI3擴展板等物理設(shè)備,將DSP EZ-KIT與安裝有Jenkins-Slave的機器連接。
Slave機器在特定測試環(huán)境下,執(zhí)行Master分配的job,并拉取運行測試腳本命令,進行自動化測試。本文中Slave機器上執(zhí)行的exp腳本文件,可以實現(xiàn)測試任務(wù)的自動化,它的工作原理是等待特定字符串,并發(fā)送或響應(yīng)相應(yīng)的字符串,并用于自動提交輸入到交互程序。
該DSP EZ-KIT設(shè)備Linux驅(qū)動軟件包括Video Driver、Audio Driver、Ethernet Driver、LCD device driver等,本文以音頻驅(qū)動測試、視頻驅(qū)動測試為例完成自動化測試過程。
音頻驅(qū)動測試功能主要包括Record、Play、Loopback。以音頻錄制功能為例,在設(shè)定PCM設(shè)備后,通過配置不同的音頻采樣率、錄音格式、文件類型等腳本參數(shù),對待測DSP EZ-KIT進行自動化測試,以檢測DSP測試板,是否能通過音頻驅(qū)動軟件錄制生成目標(biāo)品質(zhì)的音頻文件,實現(xiàn)多樣需求下的錄音功能。視頻驅(qū)動測試功能主要包括Capture、Display。以視頻編碼功能為例,將DSP測試板與視頻編碼器EI3拓展板連接。通過輸入不同格式的視頻流,對待測DSP EZ-KIT進行自動化測試,從而檢測DSP測試板是否能通過視頻驅(qū)動編碼生成不同格式視頻文件,實現(xiàn)多種格式標(biāo)準(zhǔn)下的視頻編碼功能。
在DSP音頻錄制功能測試時,首先對amixer功能參數(shù)、PCM設(shè)備進行配置選擇,隨后根據(jù)測試業(yè)務(wù)需求,將alsa格式、音頻采樣率、文件類型等參數(shù)配置組成不同錄音方案,生成相應(yīng)格式的音頻文件。視頻編碼功能主要針對特定格式視頻流,能夠捕捉并編碼生成相同格式視頻文件,以此驗證音頻、視頻驅(qū)動功能的完整性。音頻、視頻驅(qū)動測試主要參數(shù)如表1所示。
表1 音頻、視頻驅(qū)動測試腳本參數(shù)
腳本參數(shù)參數(shù)描述 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
在自動化測試平臺上,進行DSP驅(qū)動功能測試前,首先必須確保測試板可以正常reset,Linux Kernel也能完成boot,輸入命令:$ sudoreset_board 2,觀察minicom里測試板是否重啟,執(zhí)行指令后測試板有反應(yīng)表示線路接通,隨后可以進行Jenkins任務(wù)創(chuàng)建。
Windows PC安裝Java、CCES、Python,對PYTHONPATH 環(huán)境變量、CCES_HOME環(huán)境變量進行設(shè)置。進入Jenkins-Master建立新節(jié)點,配置Slave節(jié)點信息,選擇SSH啟動方式。Slave設(shè)置結(jié)束后,生成slave-agent.jnlp文件。將含有啟動相應(yīng)node的cmd命令行的lanuch.bat文件,與slave.jar放到-All program-Startup文件夾,完成開機自啟node。
在Jenkins-Master上創(chuàng)建多個Slave節(jié)點,為便于對不同型號DSP測試板的管理,通常用待測DSP評估板型號命名節(jié)點。在創(chuàng)建job時,將不同驅(qū)動功能測試case進行區(qū)分設(shè)置,并選擇遇到failed時可繼續(xù)進行。添加shell腳本,命令Slave機器進行環(huán)境變量配置。設(shè)置Git的Project url,使得Slave可以自動從指定地址拉取測試腳本等文件。同時可以指定執(zhí)行構(gòu)建的時間,實現(xiàn)無人控制時段的自動測試,提升測試效率。
完成job的構(gòu)建后,點擊“Build Now”進行自動測試。Jenkins-Master將job分發(fā)至位于LinuxPC上的Slave節(jié)點,Slave機器依照命令自動進行環(huán)境變量配置,并從Git url處拉取獲得所需驅(qū)動的exp測試腳本文件、驅(qū)動軟件、相應(yīng)編譯工具等。以音頻驅(qū)動為例,build_audio_kernel.exp將執(zhí)行alsa-utils編譯、啟用ADAU聲卡驅(qū)動等工作,并生成Uimage文件。而audio_test.exp將把Uimage文件下載至DSP,進行驅(qū)動功能測試、生成并反饋test_log等工作。通過Jenkins-Master界面,可以觀察到j(luò)ob的執(zhí)行情況,如圖3所示。圖3中Name序列左側(cè)晴雨表圖標(biāo)反應(yīng)測試通過情況,晴天表示良好,雨天表示失敗較多。
圖3 Jenkins-Master界面觀察Job執(zhí)行情況
在進行DSP音頻驅(qū)動錄制功能測試時,其測試結(jié)果可以通過音頻的幀誤率及左右聲道是否相同等標(biāo)準(zhǔn)進行評判,測試通過表示音頻錄制成功,且能正常生成滿足相應(yīng)格式需求的音頻文件。在進行視頻驅(qū)動編碼功能測試時,其測試結(jié)果可以查看捕捉輸入格式的視頻流,是否編碼生成視頻文件,測試通過表示該格式視頻編碼正常,否則不支持該格式視頻流。
Slave機器上執(zhí)行的驅(qū)動測試腳本最后會生成test_log,記錄測試過程及結(jié)果,并可根據(jù)設(shè)置傳回Jenkins-Master。在Jenkins的Tset Result界面可以查看job下所有case的測試時間、狀態(tài)詳情,如圖4所示。
圖4 通過Tset Result查看所有測試項目狀態(tài)
圖4中整個音頻驅(qū)動測試包括3個test部分,分別耗時15 min、15 min、1 min24 sec,共計31 min24 sec,其余驅(qū)動測試平均耗時也僅數(shù)分鐘,整個測試過程均通過自動化測試平臺自動完成。反觀手動測試情況,不僅需要安排人員全程進行測試操作,而且一個驅(qū)動測試就需耗時數(shù)十分鐘甚至數(shù)小時,由此可以看出,自動化測試平臺大大提高了測試效率,縮減了人力時間成本。除此之外,Tset Result界面也可對某一具體job測試結(jié)果記錄進行查看,根據(jù)設(shè)置,如果遇到“Failed”,將會展示具體腳本執(zhí)行報錯位置,有利于快速定位解決問題,此處音頻驅(qū)動測試結(jié)果界面顯示“Passed”,表示測試通過,如圖5所示。
圖5 通過Tset Result查看單個測試項目記錄
如今敏捷開發(fā)(Agile Development)在軟件工程領(lǐng)域越來越被重視,它要求在不斷變化的需求中做到快速適應(yīng),并保證軟件的質(zhì)量。自動化測試技術(shù)與持續(xù)集成的出現(xiàn),讓軟件測試環(huán)節(jié)實現(xiàn)自動化,不僅減少了人工重復(fù)過程,節(jié)省了時間、費用和工作量,還保障了每個時間點上團隊成員提交的代碼是能成功集成的,幫助項目團隊進行有效決策。
本文搭建了一種基于Jenkins的持續(xù)集成自動化測試平臺,利用Jenkins易于安裝配置、可進行分布式build、豐富的插件支持等特性,用于DSP驅(qū)動軟件項目的自動化測試。同時對自動化測試平臺框架及各組成模塊的關(guān)系、功能進行了具體介紹,包括所用DSP測試評估板的功能特性。以DSP EZ-KIT的音頻驅(qū)動、視頻驅(qū)動測試為例,從測試流程、測試結(jié)果等方面進行了簡要描述。該平臺成功實現(xiàn)了DSP驅(qū)動軟件測試流程的持續(xù)集成與自動化,具有顯著的實際應(yīng)用價值。
[1]馬曉東,李冰琪,魏鵬,等.DSP技術(shù)發(fā)展與應(yīng)用研究綜述[J].電子世界,2018(24):46-47.
[2]商永巧.DevOps之持續(xù)集成實踐之路[J].通訊世界,2018,25(12):266-267.
[3]曾利宏.分析軟件自動化測試技術(shù)及應(yīng)用[J].信息系統(tǒng)工程,2017(10):42.
[4]趙良福,王世簽,鄭科鵬.軟件自動化測試研究[J].有線電視技術(shù),2018,25(6):95-97.
[5]段清蛇,李筠.基于Jenkins的持續(xù)集成測試環(huán)境插件開發(fā)[J].信息技術(shù),2013(10):114-116,120.
[6]李靜.淺析Jenkins在java項目開發(fā)中的應(yīng)用[J].福建電腦,2017,33(6):154,183.
[7]卞孟春.基于Jenkins的持續(xù)集成方案設(shè)計與實現(xiàn)[D].北京:中國科學(xué)院大學(xué),2014.
[8]張力文.基于Jenkins的項目持續(xù)集成方案研究與實現(xiàn)[D].成都:西南交通大學(xué),2017.
[9]劉博,汪宇昕.一種基于Jenkins的嵌入式軟件持續(xù)集成方法[J].鐵道機車車輛,2018(6):14-16,23.
[10]龐雙玉.Git分布式版本控制實現(xiàn)機制探討[J].信息系統(tǒng)工程,2018(10):53-54.
2095-6835(2019)05-0138-04
TN911.72
A
10.15913/j.cnki.kjycx.2019.05.138
李煜(1995—),男,碩士,主要研究方向為電子通信技術(shù)、數(shù)字信號處理。
〔編輯:嚴(yán)麗琴〕