摘要:該文深入分析了DSP匯編語言軟件的測試難點,給出DSP匯編語言軟件的測試策略,對DSP匯編語言軟件測試具有重要的應(yīng)用意義。
關(guān)鍵詞:DSP;匯編語言;測試
中圖分類號:TP313文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)23-963-02
DSP Assembly Language Software Testing Method
HU Qing-xia, LIU Qing-feng
(91413 Units, Qinhuangdao 066001,China)
Abstract: The in-depth analysis of the DSP assembly language software testing difficult, given the DSP assembly language software testing strategy, the DSP assembly language software is an important test of significance.
Key words: DSP; assembly language; test
1 引言
目前,DSP硬件系統(tǒng)已具有了很高的可靠性,但其軟件系統(tǒng),特別是用匯編語言設(shè)計編寫的較為復(fù)雜的軟件系統(tǒng),可靠性總是難以得到保證,更是缺少完整的質(zhì)量保證和評估體系,這已經(jīng)成為DSP應(yīng)用方面亟待解決的一個問題。對DSP匯編語言軟件的測試與一般的軟件測試不同,其自身的特點決定了測試面臨的困難。本文首先對其測試難點進(jìn)行分析,然后給出了DSP匯編語言軟件的測試方法。
2 DSP匯編語言軟件環(huán)境的復(fù)雜性分析
2.1 與硬件結(jié)合緊密,測試環(huán)境難以搭建和選擇
匯編語言的程序是燒制到DSP芯片中運行的,DSP芯片種類繁多。這些芯片的外部管腳、內(nèi)部存儲器分配都各不相同 。在搭建宿主機(jī)測試環(huán)境時必須選擇各種不同的相對應(yīng)的芯片,然后配合仿真器與宿主機(jī)連接。這些硬件的配置本身就增加了測試難度,然而這些仿真環(huán)境總是和目標(biāo)環(huán)境之間有著不小的差異,比如目標(biāo)環(huán)境的中斷難于模擬等。基于目標(biāo)的測試消耗較多的經(jīng)費和時間,而基于宿主的測試代價較小,但畢竟是在模擬環(huán)境中進(jìn)行的。目前的趨勢是把更多的測試轉(zhuǎn)移到宿主環(huán)境中進(jìn)行,但是,目標(biāo)環(huán)境的復(fù)雜性和獨特性不可能完全模擬。
2.2 I/O通道少,測試數(shù)據(jù)獲取比較困難
在DSP匯編語言軟件的測試中給主機(jī)上載測試數(shù)據(jù)是很困難的。目前主要是基于以下3 種方式:1)實際的物理通道;2)開發(fā)工具IDE的虛擬IO功能;3)直接讀取內(nèi)存區(qū)數(shù)據(jù)。第一種方式就是目標(biāo)機(jī)和主機(jī)之間具備物理的通信方式,比如以太網(wǎng)、串口、并口、USB等。這種方式要求系統(tǒng)必須具備這種通信方式和通信軟件,一般只適用于系統(tǒng)級的測試。第二種方式是借助開發(fā)工具,比如TI CCS,這種方式調(diào)試較為復(fù)雜也容易出錯。第三種方式則是需要占用較多的內(nèi)存資源。
2.3 實時性要求較強(qiáng)
DSP軟件一般都用作控制系統(tǒng)的內(nèi)核,所以有很高的實時性要求,而實時性的測試是一般的測試方法和測試工具都難以實現(xiàn)的。
2.4缺少相應(yīng)測試工具
匯編語言結(jié)構(gòu)和語法都比較繁瑣和冗長,這首先使測試人員理解程序變得困難,又因為DSP芯片的多樣性,使得開發(fā)針對DSP匯編語言軟件的通用測試工具幾乎是不可能的。因此,在測試時,只能夠使用一些外圍測試工具(比如覆蓋率分析工具等),而把測試的重點放在人工的代碼審查上面,這就要求測試人員要很熟悉相應(yīng)芯片的用法并且還要與開發(fā)人員充分的溝通。
3 DSP匯編語言軟件的測試策略
DSP匯編語言軟件是最難測試的軟件之一,必須制定有效的測試策略。在搭建測試環(huán)境時,要尋求宿主機(jī)與目標(biāo)機(jī)之間的平衡,即要對目標(biāo)環(huán)境和宿主環(huán)境的測試內(nèi)容有所選擇,在宿主環(huán)境中,可以進(jìn)行邏輯或界面的測試、以及與硬件無關(guān)的測試。在模擬或宿主環(huán)境中的測試消耗時間通常相對較少,用調(diào)試工具可以更快地完成調(diào)試和測試任務(wù)。而中斷測試、硬件接口測試、系統(tǒng)集成測試等必須要在目標(biāo)環(huán)境中進(jìn)行。而在測試環(huán)境搭建完成之后,考慮到重要性以及測試執(zhí)行先后順序,把整個測試依次分為以下幾個不同階段。
1)代碼審查階段。對于DSP匯編語言軟件,代碼審查是整個測試的重點,要占到整個測試周期的60%。同時,代碼審查又是功能測試編寫測試用例之前的必要步驟。代碼審查最好是在開發(fā)環(huán)境中通過硬件仿真進(jìn)行。
2)功能測試階段。在功能測試階段,采用功能分解法、等價類劃分和猜錯法等方法,根據(jù)軟件需求規(guī)格說明中所規(guī)定的軟件正式合格項設(shè)計并執(zhí)行測試用例,以驗證其功能是否滿足需求規(guī)格說明的要求,并對其功能的適合性和準(zhǔn)確性進(jìn)行驗證。對于DSP匯編語言軟件系統(tǒng),功能測試必須首先進(jìn)行模塊化處理,分離出每個模塊的輸入輸出。
在設(shè)計功能測試用例時,也包括對邊界值的測試,即對輸入域(或輸出域)的臨界狀態(tài)、數(shù)據(jù)結(jié)構(gòu)、狀態(tài)轉(zhuǎn)換、功能界限等的邊界或端點情況下的運行狀態(tài)的測試。此外,設(shè)計功能測試用例時運用覆蓋測試工具輔助測試用例的設(shè)計,以達(dá)到功能測試的充分性。
3)性能測試階段。在DSP軟件系統(tǒng)中,程序的性能是非常重要的,要嚴(yán)格根據(jù)需求中對負(fù)載、定時、性能的要求,判斷軟件是否滿足這些需求規(guī)范。在使用環(huán)境中,軟件的失效過程要平穩(wěn)(電機(jī)運動慣性問題),所以,不僅要檢查軟件工作過程,也要檢查軟件失效過程。
可以使用測試工具CODETEST主要對DSP下行的伺服驅(qū)動器控制軟件中有時間要求和數(shù)據(jù)處理精度要求的軟件合格性項進(jìn)行測試,并把重點放在測試其實際時間特性與實際數(shù)據(jù)處理精度上。時間特性主要包括以下幾個:中斷延遲時間、任務(wù)上下文切換時間、任務(wù)響應(yīng)時間、任務(wù)創(chuàng)建/刪除時間、交替信號量時間、取得/釋放信號量時間、交替消息隊列傳輸時間。
4)接口測試階段。為了保證正確地測試,還須要檢驗軟硬件之間的接口。對接口的測試主要利用各種不同類型接口的監(jiān)視工具。比如對TMS320LF2407板匯編軟件串口測試,可以使用串口監(jiān)控器EtherPeek.NX,人工設(shè)置各軟件從RS232串口接收的輸入/輸出,驗證各軟件對輸入/輸出的反應(yīng),并監(jiān)控其輸入/輸出內(nèi)容的格式與數(shù)據(jù)位是否與接口規(guī)范一致,驗證各接口的正確性和一致性。
5)結(jié)構(gòu)覆蓋測試階段。使用測試工具LDRA TestBed對被測軟件程序進(jìn)行插裝。插裝可以是在測試環(huán)境中嵌入硬件,也可以是在可執(zhí)行代碼中加入軟件,也可以是二者相結(jié)合。基于測試用例,執(zhí)行插裝后的程序,提取語句/跳轉(zhuǎn)覆蓋信息,將程序的執(zhí)行表現(xiàn)與編碼意圖進(jìn)行比較,衡量軟件測試工作的充分性。代碼覆蓋分析工具可能侵入代碼的執(zhí)行,影響實時代碼的運行過程?;谟布拇a覆蓋分析工具的侵入程度要小一些,但是價格一般比較昂貴,而且限制被測代碼的數(shù)量。
6)強(qiáng)度測試階段。在模擬環(huán)境下,打開被測軟件全部數(shù)據(jù)采集與數(shù)據(jù)通信通道,運行全部模擬外設(shè),長時間運行功能測試和接口測試等相關(guān)測試用例,檢測交流伺服驅(qū)動器控制軟件在設(shè)計能力下的運行情況。
7 )安全性測試階段。采用人工測試的方法對被測軟件進(jìn)行安全性測試。檢測用戶是否能對被測軟件進(jìn)行災(zāi)難性操作,被測軟件是否具有關(guān)鍵操作的安全性保護(hù)等功能。對于電機(jī)控制系統(tǒng)的DSP軟件,主要檢查過壓、過流、低壓、低流、斷電、異常復(fù)位等災(zāi)難性操作。
8)可恢復(fù)性測試階段。采用人工測試的方法對被測軟件進(jìn)行可恢復(fù)性測試。用人工干預(yù)的手段模擬硬件故障、鏈路故障、電源故障等,故意造成系統(tǒng)出現(xiàn)異常,并由此檢查被測軟件是否具有錯誤探測功能,在故障發(fā)生時能否保護(hù)正在運行的作業(yè)和系統(tǒng)狀態(tài)。并檢測被測軟件在重啟之后能否正常地繼續(xù)進(jìn)行工作,并不對系統(tǒng)造成損害。
9)回歸測試階段。對于在測試過程中發(fā)現(xiàn)的問題,開發(fā)方應(yīng)及時對其進(jìn)行修正。修正后由測試方通過回歸測試進(jìn)行確認(rèn)?;貧w測試必須將所有功能測試、接口測試等測試用例重新執(zhí)行一遍,以驗證所有問題已經(jīng)全部解決,并且沒有引入新的問題。
4 結(jié)論
此方法研究在一定程度上減輕了DSP匯編語言軟件的測試難點,對以后的測試實踐有重要的參考意義。此策略的充分性和自動化程度是今后工作和研究的方向。
參考文獻(xiàn):
[1] 鄭人杰.計算機(jī)軟件測試技術(shù)[M].北京:清華大學(xué)出版社,1992.
[2] 劉艷萍.DSP技術(shù)原理及應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.
[3] 靳超.硬件輔助的軟件在線測試和分析技術(shù)[M].北京:奧吉通科技有限公司,2004.