婁紅
摘要:現(xiàn)階段,嵌入式計(jì)算機(jī)技術(shù)不斷得到快速發(fā)展,這在很大程度上促使其在社會生活各個(gè)領(lǐng)域內(nèi)的應(yīng)用也越來越廣泛,且該系統(tǒng)中軟件系統(tǒng)比重及軟件架構(gòu)呈現(xiàn)越來越復(fù)雜的趨勢,引起業(yè)界不斷提升對軟件運(yùn)行可靠性的高度關(guān)注。文章全面闡述了嵌入式計(jì)算機(jī)軟件測試的基本概念,詳細(xì)探討嵌入式計(jì)算機(jī)軟件測試的關(guān)鍵技術(shù),以期能提升嵌入式軟件測試的質(zhì)量及應(yīng)用性能,從而為軟件測試工作的開展提供一定借鑒和參考價(jià)值。
關(guān)鍵詞:嵌入式計(jì)算機(jī);軟件測試;宿主機(jī);仿真機(jī);目標(biāo)機(jī)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)13-0092-02
Abstract: In this stage, the embedded computer technology has been rapid development, prompting its application in various fields of social life are increasingly being used to a large extent, and the system software and software architecture presents the proportion the trend to more complex, causing great concern to the industry and improve the operational reliability of the software. Full article describes the basic concepts of embedded computer software testing, detailed discussion of key technologies for embedded computer software testing, with a view to enhance the quality and application performance for embedded software testing, to provide some reference for the development of software testing and the reference value .
Key words: embedded computer; software testing; host; simulator; target
現(xiàn)階段,隨著嵌入式計(jì)算機(jī)技術(shù)的不斷革新,其在社會生活各個(gè)領(lǐng)域之內(nèi)的應(yīng)用越來越廣泛,業(yè)界逐漸提升對軟件的質(zhì)量和應(yīng)用性能的重視,以求其能滿足當(dāng)前日益增長的軟件測試的需要[1]。軟件質(zhì)量的監(jiān)測是嵌入式軟件測試最主要的工作內(nèi)容,對嵌入式軟件的開發(fā)及應(yīng)用有著非常重要的作用。
1 嵌入式軟件測試
軟件測試是為捕捉代碼中得錯(cuò)誤而對代碼進(jìn)行分析或執(zhí)行的過程,這一測試在很大程度上能保證軟件的質(zhì)量及可靠性,為產(chǎn)品設(shè)計(jì)定型提供一定的依據(jù)[2]。同其他軟件相比,嵌入式軟件有著很強(qiáng)的專用性,強(qiáng)調(diào)必須在需求指定的專用硬件平臺上進(jìn)行運(yùn)作。并且,嵌入式軟件在自身的開發(fā)及運(yùn)行環(huán)境上呈現(xiàn)出獨(dú)特的交叉分離特點(diǎn):通常在宿主機(jī)上運(yùn)動(dòng)編輯和編譯這些開發(fā)工具,而常見的調(diào)試命令及數(shù)據(jù)傳輸則是建立在主機(jī)與下載好軟件的目標(biāo)機(jī)相互聯(lián)立的通訊上。具體交叉開放方式如圖1所示。除此之外,考慮到主機(jī)和目標(biāo)機(jī)在操作系統(tǒng)、處理器體系結(jié)構(gòu)上存在的差異,就在很大程度上賦予嵌入式軟件開發(fā)過程以更為嚴(yán)密的復(fù)雜性。這里我們所涉及的宿主機(jī)主要是指微機(jī)、工作站此類的通用性計(jì)算機(jī),而目標(biāo)機(jī)的關(guān)鍵性作用便是對于嵌入式系統(tǒng)通訊的宿主機(jī)進(jìn)行嚴(yán)格意義上的區(qū)分。
2 嵌入式軟件測試關(guān)鍵技術(shù)
2.1 宿主機(jī)關(guān)鍵技術(shù)
對宿主機(jī)的測試通常是通過代碼邏輯測試實(shí)現(xiàn)的,宿主機(jī)測試的關(guān)鍵技術(shù)可分為靜態(tài)測試技術(shù)和動(dòng)態(tài)測試技術(shù)。
1)靜態(tài)測試技術(shù)
現(xiàn)階段,最常用的軟件查錯(cuò)方式仍是人工審議與走查,但基于軟件規(guī)模的日益增大,往往需要大量的工程師人才資源,且源碼在目錄或機(jī)器上較為分散,難以進(jìn)行軟件的審議與走查[3]。針對這一問題,需利用必要手段獲取整個(gè)軟件系統(tǒng)框圖,實(shí)現(xiàn)相關(guān)量的自動(dòng)化鏈接,在很大程度上為軟件的審議與走查提供較大便利。而利用靜態(tài)測試分析技術(shù)能繪制程序邏輯圖及控制流程、獲取完整的軟件系統(tǒng)邏輯框圖、進(jìn)行程序路徑分析、可互相轉(zhuǎn)換生成的邏輯圖、流程圖、框圖等。以便設(shè)計(jì)出更為高效的測試用例來提升軟件質(zhì)量及測試覆蓋率。
2)動(dòng)態(tài)測試技術(shù)
動(dòng)態(tài)測試技術(shù)的對象和重點(diǎn)是軟件代碼的動(dòng)態(tài)執(zhí)行能力,全面分析代碼的覆蓋率、內(nèi)存分配使用信息。其中被測軟件的代碼在測試執(zhí)行時(shí)出現(xiàn)的執(zhí)行情況便是代碼的覆蓋率,對代碼覆蓋率的監(jiān)控能提升軟件測試的有效性,對測試完成力度進(jìn)行全面掌控,并能快速識別被遺漏的測試數(shù)據(jù),為測試人員科學(xué)掌握并控制測試進(jìn)程提供數(shù)據(jù)參考。代碼覆蓋率的計(jì)算指標(biāo)包括語句覆蓋、分支/判定覆蓋及MC/DC[4]。而內(nèi)存分配信息則強(qiáng)調(diào)高度關(guān)注其中的每一個(gè)函數(shù)、內(nèi)存分配點(diǎn)內(nèi)存分配及釋放情況,并及時(shí)監(jiān)視動(dòng)態(tài)內(nèi)存分配中出現(xiàn)的錯(cuò)誤信息。利用動(dòng)態(tài)內(nèi)存分配信息,能快速準(zhǔn)確掌握內(nèi)存遺漏問題,為內(nèi)存分配優(yōu)化提供策略依據(jù)。
2.2 仿真機(jī)關(guān)鍵技術(shù)
作為宿主機(jī)與目標(biāo)機(jī)測試的中間性緩解,仿真機(jī)能在很大程度上超真實(shí)地模擬目標(biāo)機(jī)的功能及性能,從而獲取較目標(biāo)機(jī)更為真實(shí)的物理性能測試結(jié)果。測試數(shù)據(jù)獲取技術(shù)及仿真技術(shù)是仿真機(jī)測試的關(guān)鍵技術(shù)。
1)測試數(shù)據(jù)獲取技術(shù)
如何利用仿真機(jī)獲取測試過程中產(chǎn)生的數(shù)據(jù)是當(dāng)前嵌入式軟件測試的瓶頸之一,大多嵌入式軟件測試功能都需利用源代碼進(jìn)行測試,這就需要采取積極有效的方式確保軟件質(zhì)量及性能,以獲取準(zhǔn)確的測試數(shù)據(jù)?,F(xiàn)階段,常用的測試數(shù)據(jù)獲取方式包括實(shí)際物理通道取數(shù)、開發(fā)工具的虛擬IO指數(shù)以及內(nèi)存取數(shù)。其中,實(shí)際物理通道取數(shù)是目標(biāo)機(jī)與主機(jī)之間物理的具體通信方式,如串口、USB、并口等,利用實(shí)際物理通道取數(shù)能在很大程度上直接經(jīng)由數(shù)據(jù)通信軟件實(shí)現(xiàn)與主機(jī)之間的通訊,并在此基礎(chǔ)上進(jìn)行必要的測試數(shù)據(jù)上載,開發(fā)工具虛擬IO指數(shù)是一種更為高級的開發(fā)工具,為測試帶來極大便利,如Tornado及TI CCS。假使目標(biāo)系統(tǒng)沒有上述兩種獲取方法,那么還能夠通過內(nèi)存讀取數(shù)據(jù)的方式直接獲取內(nèi)存取數(shù)。換句話說,是在充分確保足夠緩存的基礎(chǔ)上,加之修改測試工具的庫,在緩存中寫入輸出數(shù)據(jù),測試進(jìn)行或結(jié)束后,對緩存中記錄的數(shù)據(jù)進(jìn)行讀取,并在此基礎(chǔ)上以文件的形式保存到主機(jī)上。值得關(guān)注的是,這樣的方式通常必須在測試前充分確保緩存的大小。但是從適用性上來說,這種方式有著較大的優(yōu)越性,幾乎可以說這種功能充分體現(xiàn)在所有的開發(fā)調(diào)試工具上。
2)仿真技術(shù)
嵌入式軟件仿真是一種建立在局域網(wǎng)基礎(chǔ)上的數(shù)據(jù)集中性管理、處理系統(tǒng)。其結(jié)構(gòu)包括實(shí)時(shí)仿真機(jī)、I/O系統(tǒng)、軟件測評控制模板、測試結(jié)果分析工具、總線仿真及總線監(jiān)控模板、實(shí)時(shí)調(diào)度模板[5]。仿真測評控制技術(shù)及仿真技術(shù)是仿真測試常見的關(guān)鍵性技術(shù)。利用必要的仿真測試,能高度真實(shí)地模擬現(xiàn)場總線系統(tǒng)上的相關(guān)數(shù)據(jù),除此之外,還能按照不同的測試對象,逐個(gè)分析研究各種電信號激勵(lì)源仿真,但總線除外,從而實(shí)時(shí)檢測并分析現(xiàn)場總線的運(yùn)行狀態(tài),實(shí)現(xiàn)人機(jī)交互界面,控制實(shí)時(shí)在線測評平臺各設(shè)備,完成軟件測評等。
2.3 目標(biāo)機(jī)關(guān)鍵技術(shù)
高度評估系統(tǒng)綜合性能是當(dāng)前目標(biāo)機(jī)的測試重點(diǎn),其具體功能是用來評估真實(shí)的物理目標(biāo)機(jī),最大限度對軟件交互、可靠性及穩(wěn)定性進(jìn)行專門性獲取。從關(guān)鍵技術(shù)上來說,故障注入、內(nèi)存分析、性能分析為目標(biāo)機(jī)測試常見的三種關(guān)鍵技術(shù)。其中故障注入技術(shù)能便于進(jìn)行系統(tǒng)邊界測試、容錯(cuò)性測試、魯棒性測試、強(qiáng)度性測試等。內(nèi)存分析技術(shù)主要用來對動(dòng)態(tài)內(nèi)存分配中存在的缺陷進(jìn)行處理,當(dāng)前主要有硬件和軟件這兩種內(nèi)存分析手段。從硬件方面來說,在價(jià)格上基于硬件的內(nèi)存分析工具較為昂貴,并且使用范圍有限,僅僅能運(yùn)作在工具指定的環(huán)境之中。而從軟件方面來說,基于軟件的內(nèi)存分析方式會影響到代碼性能,給實(shí)施操作帶來干擾。性能分析技術(shù)能為開發(fā)人選擇代碼優(yōu)化范圍提供必要的參考數(shù)據(jù),能準(zhǔn)確分析并提供執(zhí)行時(shí)間的消耗方式、消耗時(shí)間以及每個(gè)例程所需要使用的具體時(shí)間等,便于開發(fā)人正式?jīng)Q定通過何種方式對軟件進(jìn)行優(yōu)化,能獲得更高時(shí)間性能。此外,性能分析工具還能聯(lián)合調(diào)試工具引導(dǎo)開發(fā)人員及時(shí)準(zhǔn)確查看那些亟待優(yōu)化的特定函數(shù),能指導(dǎo)開發(fā)人員對系統(tǒng)調(diào)用中錯(cuò)誤及程序結(jié)構(gòu)上的缺陷進(jìn)行必要的探討和分析。
除此之外,還能在性能測試中,最大限度利用代碼覆蓋分析工具追蹤那些被執(zhí)行過的代碼。測試人員總結(jié)測試結(jié)果數(shù)據(jù),能準(zhǔn)確發(fā)現(xiàn)被執(zhí)行過的代碼及被遺漏的代碼。對嵌入式軟件來說,代碼覆蓋分析工具有著對代碼執(zhí)行侵入的可能,會在一定程度上對代碼運(yùn)行過程產(chǎn)生影響。
3 結(jié)束語
當(dāng)前嵌入式系統(tǒng)應(yīng)用領(lǐng)域越來越廣泛,其軟件規(guī)模和復(fù)雜性日益提升,這就促使各個(gè)領(lǐng)域進(jìn)一步提升對嵌入式系統(tǒng)的質(zhì)量、可靠性、有效性的要求,從客觀上來說,正是這些軟件的質(zhì)量決定了整個(gè)產(chǎn)品的質(zhì)量。本文通過對嵌入式計(jì)算機(jī)軟件測試關(guān)鍵技術(shù)的深入分析和研究,以期能為嵌入式軟件測試研究和實(shí)踐提供一定參考和借鑒作用。
參考文獻(xiàn):
[1] 高賽軍.嵌入式武控計(jì)算機(jī)軟件測試關(guān)鍵技術(shù)研究[D].上海:華東理工大學(xué),2013.
[2] 施小敏.嵌入式IO控制器軟件測試關(guān)鍵技術(shù)研究[D].上海:上海交通大學(xué),2012.
[3]平婕,秦軍,康建華,安元偉.嵌入式軟件測試關(guān)鍵技術(shù)研究[J].有線電視技術(shù),2010(8):45-47,50.
[4] 周凌云.嵌入式武控計(jì)算機(jī)軟件測試關(guān)鍵技術(shù)的研究分析[J].科技展望,2015(4):136.
[5] 凌楊,邵培南,佟雷,李建軍.基于數(shù)字化仿真環(huán)境的嵌入式軟件測試方法[J].計(jì)算機(jī)工程,2011(S1):49-51.