李煜,仇潤鶴
?
基于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就是一種典型開源持續集成測試軟件。
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的堆棧、實時操作系統和文件系統等。
測試所用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腳本文件,可以實現測試任務的自動化,它的工作原理是等待特定字符串,并發送或響應相應的字符串,并用于自動提交輸入到交互程序。
該DSP EZ-KIT設備Linux驅動軟件包括Video Driver、Audio Driver、Ethernet Driver、LCD device driver等,本文以音頻驅動測試、視頻驅動測試為例完成自動化測試過程。
音頻驅動測試功能主要包括Record、Play、Loopback。以音頻錄制功能為例,在設定PCM設備后,通過配置不同的音頻采樣率、錄音格式、文件類型等腳本參數,對待測DSP EZ-KIT進行自動化測試,以檢測DSP測試板,是否能通過音頻驅動軟件錄制生成目標品質的音頻文件,實現多樣需求下的錄音功能。視頻驅動測試功能主要包括Capture、Display。以視頻編碼功能為例,將DSP測試板與視頻編碼器EI3拓展板連接。通過輸入不同格式的視頻流,對待測DSP EZ-KIT進行自動化測試,從而檢測DSP測試板是否能通過視頻驅動編碼生成不同格式視頻文件,實現多種格式標準下的視頻編碼功能。
在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
在自動化測試平臺上,進行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執行情況
在進行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查看單個測試項目記錄
如今敏捷開發(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—),男,碩士,主要研究方向為電子通信技術、數字信號處理。
〔編輯:嚴麗琴〕