<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/257904.htm

          搞好開發(fā)前的原型設(shè)計

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

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

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

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


          int8 a;
          int32 b;

          a=b;


          代碼測試

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

          功能測試

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

          錯誤測試

          主要測試函數(shù)在調(diào)用參數(shù)無效的時候,系統(tǒng)是否會按照規(guī)定返回正確的錯誤代碼。比如

          function test(int Tid)


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


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


          t 定義為1-100


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


          上邊界:-1,0,1


          下邊界:99,100,101


          中邊界:50


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

          功能組合測試

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

          燒入固化測試

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

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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();