<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式軟件的基本測試方法

嵌入式軟件的基本測試方法

作者: 時(shí)間:2010-12-06 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)制造行業(yè)的再一次崛起,目前在軟件行業(yè)中越來(lái)越多,2004年軟件行業(yè)最火爆的三個(gè)項目是:嵌入式開(kāi)發(fā),軟件培訓以及軟件外包。

由于與其他產(chǎn)品息息相關(guān),這給的測試工作帶來(lái)了極大的困難,軟件的測試工作不能夠等程序燒到或者固化到芯片中才開(kāi)始進(jìn)行測試,這就太晚了,本文結合自己的一些經(jīng)驗提出自己的看法,希望大家一起討論。

本文引用地址:http://dyxdggzs.com/article/257904.htm

搞好開(kāi)發(fā)前的原型設計

原型開(kāi)發(fā)目前在開(kāi)放流程中受到了更多的重視,同樣嵌入式軟件也是非常需要的。比如說(shuō)一個(gè)錄音機版面的設計,可以定義好版面上面的按鍵以及每個(gè)按鍵的功能。然后畫(huà)出狀態(tài)轉化圖,寫(xiě)清楚每個(gè)按鍵何時(shí)可以觸發(fā),觸發(fā)后由哪個(gè)狀態(tài)轉入別的其他狀態(tài)。原型設計好了,組織專(zhuān)家,工程師進(jìn)行,盡可能多的找出原型中不合理需要改進(jìn)的地方;改進(jìn)以后,有必要可以進(jìn)行再一次的工作。每一次工作需要記錄評審建議是否需要解決?如何解決以及實(shí)際解決情況。

進(jìn)行設計和開(kāi)發(fā)工作

設計和開(kāi)發(fā)工作需要設立里程碑。每個(gè)里程碑結束前都需要進(jìn)行評審工作。由于嵌入式軟件的運行環(huán)境不同,受到很大的限制,所以在進(jìn)行開(kāi)發(fā)之前需要進(jìn)行工作,編碼的時(shí)候需要嚴格按照編碼要求進(jìn)行工作,每一個(gè)條款都需要認真執行和審查?,F在業(yè)界提供許多關(guān)于嵌入式軟件開(kāi)發(fā)的標準,大家可以通過(guò)網(wǎng)站搜索,最好能夠購買(mǎi)業(yè)界一些比較著(zhù)名的標準。

目前市場(chǎng)上也提供許多關(guān)于代碼檢驗的工具。為什么一直提出代碼編碼規范?這是因為嵌入式軟件的質(zhì)量與代碼規范是十分重要的。舉個(gè)例子,著(zhù)名的阿里亞火箭失事,專(zhuān)家進(jìn)行詳細的調查工作,最后發(fā)現問(wèn)題出在代碼上。代碼是符合標準C語(yǔ)言的,但是在運行過(guò)程中由于程序員將一個(gè)長(cháng)整形變量賦給了一個(gè)短整形變量,造成內存溢出,這是導致火箭失事的關(guān)鍵所在。


int8 a;
int32 b;

a=b;


代碼測試

當程序開(kāi)發(fā)完畢,需要進(jìn)行測試工作,但是在程序燒入或固化芯片之前如何進(jìn)行測試呢?這里介紹一種方法:比如程序時(shí)使用C語(yǔ)言進(jìn)行開(kāi)發(fā)的,請將所有的操作都封入在函數中,函數的定義都在相應的頭文件中定義(.h),然后設計測試用例,書(shū)寫(xiě)測試代碼,測試代碼包含相應頭文件,可以對函數進(jìn)行檢測。測試案例往往分為兩類(lèi):一種是功能測試,主要測試函數的功能;另外一種是錯誤參數測試,主要檢查程序對進(jìn)行錯誤參數進(jìn)行檢驗。

功能測試

這種測試的運行往往需要通過(guò)仿真器輔助完成,比如類(lèi)似錄音機軟件程序,分別測試播放,加大(減?。┮袅?,停止,暫停(取消暫停),快速前進(jìn),快速后退,錄音對應的功能是否能夠正常運行。

錯誤測試

主要測試函數在調用參數無(wú)效的時(shí)候,系統是否會(huì )按照規定返回正確的錯誤代碼。比如

function test(int Tid)


測試的時(shí)候給出一個(gè)錯誤的序列號(Tid),看程序是否返回正確的錯誤代碼。


對于函數function test1(int t)需要進(jìn)行特出的處理


t 定義為1-100


我們可以按照邊界值法和等價(jià)分類(lèi)法進(jìn)行測試


上邊界:-1,0,1


下邊界:99,100,101


中邊界:50


所以測試用例集合為(-1,0,1,50,99,100,101),其中-1,101為錯誤測試用例,其他為正確測試用例

功能組合測試

在進(jìn)行完功能測試后,我們可以進(jìn)行功能組和測試,還是拿錄音機程序做個(gè)例子。我們可以定義將音量增加到10,快速前進(jìn),檢查音量,看是否還是為10;播放,暫停,試圖調整音量,檢查調整音量的功能是否可以被成功執行。

燒入固化測試

當以上測試都通過(guò)后可以將程序燒入芯片或者固化,進(jìn)行最后在實(shí)際環(huán)境中進(jìn)行測試工作。

最后需要指出的是,雖然目前市場(chǎng)上嵌入式測試工具比較多,最有名氣的就是CodeTest,但是價(jià)格都非常昂貴,一般都需要上千美金,中小型企業(yè)可以根據自己的情況多想辦法,如果大家有啥好的別的方法,可以告訴我(xianggu@yahoo.com),大家一起討論。希望中國的嵌入式產(chǎn)品質(zhì)量越來(lái)越高。



關(guān)鍵詞: 嵌入式軟件 評審 編程規范

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>