隨著制造行業的再一次崛起,嵌入式軟件目前在軟件行業中越來越多,2004年軟件行業火爆的三個項目是:嵌入式開發,軟件培訓以及軟件外包。由于嵌入式軟件與其他產品息息相關,這給嵌入式軟件的測試工作帶來了極大的困難,軟件的測試工作不能夠等程序燒到或者固化到芯片中才開始進行測試,這就太晚了,本文結合自己的一些經驗提出自己的看法,希望大家一起討論。
搞好開發前的原型設計
原型開發目前在開放流程中受到了更多的重視,同樣嵌入式軟件也是非常需要的。比如說一個錄音機版面的設計,可以定義好版面上面的按鍵以及每個按鍵的功能。然后畫出狀態轉化圖,寫清楚每個按鍵何時可以觸發,觸發后由哪個狀態轉入別的其他狀態。原型設計好了,組織專家,工程師進行評審,盡可能多的找出原型中不合理需要改進的地方;改進以后,有必要可以進行再一次的評審工作。每一次評審工作需要記錄評審建議是否需要解決?如何解決以及實際解決情況。
進行設計和開發工作
設計和開發工作需要設立里程碑。每個里程碑結束前都需要進行評審工作。由于嵌入式軟件的運行環境不同,受到很大的限制,所以在進行開發之前需要進行編程規范工作,編碼的時候需要嚴格按照編碼要求進行工作,每一個條款都需要認真執行和審查?,F在業界提供許多關于嵌入式軟件開發的標準,大家可以通過網站搜索,能夠購買業界一些比較的標準。目前市場上也提供許多關于代碼檢驗的工具。為什么一直提出代碼編碼規范?這是因為嵌入式軟件的質量與代碼規范是十分重要的。舉個例子,的阿里亞火箭失事,專家進行詳細的調查工作,發現問題出在代碼上。代碼是符合標準C語言的,但是在運行過程中由于程序員將一個長整形變量賦給了一個短整形變量,造成內存溢出,這是導致火箭失事的關鍵所在。
(
int8 a;
int32 b;
…
a=b;
)
代碼測試
當程序開發完畢,需要進行測試工作,但是在程序燒入或固化芯片之前如何進行測試呢?這里介紹一種方法:比如程序時使用C語言進行開發的,請將所有的操作都封入在函數中,函數的定義都在相應的頭文件中定義(.h),然后設計測試用例,書寫測試代碼,測試代碼包含相應頭文件,可以對函數進行檢測。測試案例往往分為兩類:一種是功能測試,主要測試函數的功能;另外一種是錯誤參數測試,主要檢查程序對進行錯誤參數進行檢驗。
功能測試
這種測試的運行往往需要通過仿真器輔助完成,比如類似錄音機軟件程序,分別測試播放,加大(減?。┮袅浚V?,暫停(取消暫停),快速前進,快速后退,錄音對應的功能是否能夠正常運行。
錯誤測試
主要測試函數在調用參數無效的時候,系統是否會按照規定返回正確的錯誤代碼。比如
function test(int Tid)
測試的時候給出一個錯誤的序列號(Tid),看程序是否返回正確的錯誤代碼。
對于函數function test1(int t)需要進行特出的處理
t 定義為1-100
我們可以按照邊界值法和等價分類法進行測試
上邊界:-1,0,1
下邊界:99,100,101
中邊界:50
所以測試用例集合為(-1,0,1,50,99,100,101),其中-1,101為錯誤測試用例,其他為正確測試用例。
功能組合測試
在進行完功能測試后,我們可以進行功能組和測試,還是拿錄音機程序做個例子。我們可以定義將音量增加到10,快速前進,檢查音量,看是否還是為10;播放,暫停,試圖調整音量,檢查調整音量的功能是否可以被成功執行。
燒入固化測試
當以上測試都通過后可以將程序燒入芯片或者固化,進行在實際環境中進行測試工作。
需要指出的是,雖然目前市場上嵌入式測試工具比較多,有名氣的就是CodeTest,但是價格都非常昂貴,一般都需要上千美金,中小型企業可以根據自己的情況多想辦法。希望中國的嵌入式產品質量越來越高。
嵌入式軟件的基本測試方法
更新時間: 2005-08-26 00:00:00來源: 粵嵌教育瀏覽量:4830