張海軍
摘要:嵌入式軟件是最難測試的一種軟件,不同測試階段需要建立不同的測試環(huán)境、采用不同的測試技術(shù)。本文對構(gòu)建嵌入式軟件測試環(huán)境的關(guān)鍵測試技術(shù)進(jìn)行了研究。
關(guān)鍵詞:嵌入式;軟件測試;關(guān)鍵技術(shù)
引言
在嵌入式軟件測試的不同階段,只有選擇和建立恰當(dāng)?shù)臏y試環(huán)境,才能保證嵌入式軟件測試的質(zhì)量和效率,而嵌入式軟件測試環(huán)境的建立是一項復(fù)雜、困難的工作,需要考慮多方面的因素、解決很多技術(shù)難題。
1、嵌入式軟件白盒測試關(guān)鍵技術(shù)
1.1 靜態(tài)分析技術(shù)
嵌入式軟件主要采用C、匯編語言來實現(xiàn)。采用C語言開發(fā)的嵌入式軟件,一般符合統(tǒng)一標(biāo)準(zhǔn),目前有許多測試工具支持其靜態(tài)分析,主要有McCabe、Cantata、Clockwork、TestBed等。但是采用匯編語言開發(fā)的嵌入式軟件,由于CPU的不同,必須針對特定的匯編語言專門開發(fā)相應(yīng)的工具。
1.2 覆蓋率測試技術(shù)
在進(jìn)行覆蓋率測試時,程序插裝和覆蓋率數(shù)據(jù)的獲取是關(guān)鍵環(huán)節(jié),一般有純軟件方式、純硬件方式和軟硬件結(jié)合方式。純軟件的測試工具主要有TestBed、Logiscope等。純硬件的方式是利用硬件工具,在線實時對總線上的數(shù)據(jù)進(jìn)行采樣。軟硬結(jié)合的方式是綜合純硬件和純軟件兩種實現(xiàn)方式之后的一種方式。
1.3 內(nèi)存測試技術(shù)
內(nèi)存測試的手段主要包括靜態(tài)檢查、動態(tài)檢查、人工測試等。靜態(tài)檢查是指使用內(nèi)存靜態(tài)檢查工具(如PolySpace)在不執(zhí)行代碼的情況下來檢查內(nèi)存方問題;動態(tài)檢查使用內(nèi)存動態(tài)檢查工具(如Insure++)在軟件運行時進(jìn)行檢查;人工測試是自行設(shè)計專門的用例來檢查可能存在的內(nèi)存缺陷。
2、嵌入式軟件黑盒測試關(guān)鍵技術(shù)
2.1 仿真建模技術(shù)
嵌入式軟件通常運行于特定的物理環(huán)境中,外部交聯(lián)設(shè)備復(fù)雜,在進(jìn)行測試時需要構(gòu)建仿真測試環(huán)境。根據(jù)運行環(huán)境和實際環(huán)境的差異,嵌入式軟件測試環(huán)境可分為全數(shù)字仿真測試環(huán)境、半實物仿真測試環(huán)境和全實物仿真測試環(huán)境。典型的嵌入式軟件仿真測試環(huán)境構(gòu)建有:ADS、GESTE等。
2.2 目標(biāo)數(shù)據(jù)生成技術(shù)
嵌入式軟件性能的好壞,往往可以從一些特殊情況的處理能夠直接反映出來。這些特殊情況不僅直接影響其性能指標(biāo)的好壞,更有甚者可以導(dǎo)致嚴(yán)重的后果。但是,利用真實目標(biāo)進(jìn)行測試,有些特殊情況根本不可能或很難實現(xiàn),因此,有必要采用模擬的手段來實現(xiàn),即研究如何利用matlab等軟件產(chǎn)生模擬數(shù)據(jù)。
2.3 測試用例設(shè)計方法
很多嵌入式軟件涉及眾多條件參數(shù)組合的輸入,在設(shè)計測試用例時,全邏輯覆蓋必然使測試用例的數(shù)量急劇膨脹。而如果采用人工隨機選擇參數(shù)組合進(jìn)行測試,則測試的充分性和正確性又難以保證,所以需要采用正交實驗法、組合設(shè)計、判定表法等特殊的測試用例設(shè)計方法,來縮減測試用例規(guī)模,同時也能保證滿足規(guī)定的測試覆蓋率要求。
2.4 測試數(shù)據(jù)獲取技術(shù)
嵌入式軟件測試的困難之一是在目標(biāo)機或仿真機上如何注入測試輸入數(shù)據(jù)以及獲取測試過程中產(chǎn)生的數(shù)據(jù)。嵌入式軟件測試數(shù)據(jù)輸入和獲取的手段包括:外接鍵盤顯示器、在線輔助設(shè)備、I/O接口、邊界掃描、總線監(jiān)聽、在線仿真器ICE等。嵌入式系統(tǒng)的靈活性導(dǎo)致其采用的I/O端口、總線標(biāo)準(zhǔn)多種多樣,在實際測試任務(wù)中,要針對具體裝備的特點和測試內(nèi)容,綜合考慮采用哪種數(shù)據(jù)輸入獲取方式。
2.5 數(shù)據(jù)分析處理技術(shù)
數(shù)據(jù)處理類嵌入式軟件,一般涉及到復(fù)雜的數(shù)學(xué)運算,這樣就帶來計算結(jié)果的正確性如何判斷的問題。對于一組輸入數(shù)據(jù)和結(jié)果數(shù)據(jù),需要將輸入數(shù)據(jù)輸入仿真程序計算得到一個計算結(jié)果數(shù)據(jù),將其與獲取的結(jié)果數(shù)據(jù)進(jìn)行比較,來判斷程序運算功能的正確性。這里需要注意兩個問題:第一,仿真程序的正確性;第二,仿真計算結(jié)果和采集實際結(jié)果的誤差范圍。
結(jié)束語
雖然日前已經(jīng)有一些針對嵌入式軟件的測試工具和軟件,但構(gòu)建嵌入式軟件測試環(huán)境困難多、技術(shù)復(fù)雜,在有些方面仍存在不足,需要通過對嵌入式軟件仿真測試環(huán)境和嵌入式軟件測試技術(shù)進(jìn)行不斷研究,進(jìn)一步完善和研制更先進(jìn)的測試工具。
參考文獻(xiàn):
[1] 蔣崇武,楊順昆,劉斌. 面向嵌入式軟件測試的仿真建模[J]. 計算機工程,2008,34(4):87-89.
[2] 平婕,秦 軍,康建華,安元偉. 嵌入式軟件測試關(guān)鍵技術(shù)研究[J]. 計算機應(yīng)用,2010,8:45-47.
[3] 周濤. 航天型號軟件測試[M]. 北京:宇航出版社,1999.