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