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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于仿真的嵌入式軟件白盒覆蓋測試系統(tǒng)設計

          基于仿真的嵌入式軟件白盒覆蓋測試系統(tǒng)設計

          作者: 時間:2010-08-09 來源:網(wǎng)絡 收藏

          引言

          隨著的廣泛應用,人們對軟件的質(zhì)量提出了更高的要求,而作為保證軟件質(zhì)量最有效手段的測試技術,也越來越受到關注。目前嵌入式軟件的開發(fā)語言以C等高級語言為卞,因此,對這些高級語言的測試顯得尤為重要,”。

          目前實用的測試平臺卞要由國外廠商開發(fā),比較具有代表性的測試平臺有T eleloglc公司的Logi-scope .M etrow erk、公司的CodeTest, Windriver公司的CoverageScope和IPL公司的C ant at a等。國外廠商的嵌入式系統(tǒng)測試平臺功能較強,技術較先進,但一套測試系統(tǒng)價格往往高達數(shù)萬到十多萬美元,極大增加了嵌入式系統(tǒng)的開發(fā)成木,無法得到普遍的應用,影響了國內(nèi)嵌入式系統(tǒng)的開發(fā)質(zhì)量,2’。

          國內(nèi)的嵌入式系統(tǒng)測試平臺有基于目標開發(fā)的測試系統(tǒng)。電子科技大學研究了基于目標的嵌入式軟件測試系統(tǒng),實現(xiàn)了對匯編語言進行自動插裝,并實現(xiàn)基木的功能。但由于嵌入式軟件需要基于硬件電路進行調(diào)試,當軟件程序?qū)懭胗布娐泛螅绻娐饭ぷ鞑徽I踔翢o法工作,則難以斷定問題所在,這就限制了嵌入式軟件測試必須按照先硬件后軟件的模式進行,3’。

          木系統(tǒng)實現(xiàn)了基于仿真的嵌入式C語言軟件分析。通過有效的詞法語法分析、自動插裝、測試用例的生成和加入、動態(tài)仿真運行及覆蓋報告分析等模塊對源代碼進行覆蓋分析,縮短了嵌入式系統(tǒng)開發(fā)周期,有效地解決了傳統(tǒng)手工測試程序運行效率低、繁瑣等問題,保證了嵌入式軟件系統(tǒng)高效穩(wěn)定的運行。

          1嵌入式軟件測試系統(tǒng)框圖

          嵌入式軟件測試系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。它卞要由5部分組成:程序的預處理過程(包括詞法語法分析)程序的自動插裝過程、測試用例的加入、動態(tài)仿真運行及覆蓋報告分析,4,。

          被測試程序首先經(jīng)過預處理。由于源程序中存在宏定義次件包含和條件編譯等預處理命令,因此在進行詞法分析前必須進行預處理,將宏展開,以利于查找變量詞法分析是將預處理階段產(chǎn)生的中間代碼分解成單獨的詞的表示,語法分析是將輸入字符串識別為單詞符號流,卞要用來確定插裝的位置,在一些關鍵的字段和函數(shù)處插

          1.jpg

          2功能模塊設計

          2. 1詞法語法分析模塊

          (1)預處理

          在源程序中,空白符測匕格符、回車符和換行符等編輯性字符除了出現(xiàn)在文字常數(shù)中之外,在別處任何地方出現(xiàn)都沒意義,而注釋部分出現(xiàn)在程序中的任何地方。對于這些不是程序必要組成的部分,預處理時可以將其剔掉,5’。

          ( 2)詞法分析

          將預處理階段產(chǎn)生的中間代碼分解成單獨詞的表示,并將詞的基木信息表,如詞的行號、詞的列號及詞的類型等信息,為語法分析做準備。詞的類型有:普通變量標識符擻字表、關鍵字表運算符表,6’。

          ( 3)語法分析

          語法分析的卞要任務是在詞法分析識別出的單詞符號串的基礎上,分析并判斷程序的語法結(jié)構(gòu)是否符合語法規(guī)則。由于木系統(tǒng)分析的程序是經(jīng)過嵌入式軟件編譯器編譯的,因此認為不存在語法上的錯誤,只是通過語法分析得到程序結(jié)構(gòu)及函數(shù)信息,為插裝做準備。

          2. 2插裝模塊

          程序插裝概念由J. G. H uang教授首次提出,簡單地說就是借助向被測程序中插入操作來實現(xiàn)測試目的。在調(diào)試程序時,常常要在程序中插入一些打印語句,希望執(zhí)行程序時打印出所關心的信息。通過這些信息進一步了解執(zhí)行過程中程序的一些動態(tài)特性。比如,程序的實際執(zhí)行路徑,或是特定變量在特定時刻的取值。從這一思想發(fā)展出的程序插裝技術能夠按用戶的要求,獲取程序的各種


          5.jpg

          2. 4覆蓋率分析

          通過動態(tài)仿真運行模塊,覆蓋信息被寫入文件中,讀取存放記錄文件,分別對語句塊數(shù)和執(zhí)行分支數(shù)進行計算。根據(jù)覆蓋率公式,結(jié)合計算的結(jié)果,得到測試語句覆蓋汾支覆蓋與程序的有效代碼率并GUI顯示。將測試的結(jié)果與測試用例庫生成的測試用例期望值作比較,得出測試結(jié)論,9’。

          2. 4. 1語句覆蓋率算法分析

          語句覆蓋是軟件測試中最基木的覆蓋標準,因此在測試時應將每個語句至少執(zhí)行1次。在 T estImp系統(tǒng)中得到語句覆蓋率的算法流程如圖3所示,通過詞法分析后,讀單獨的詞語,如遇到能產(chǎn)生分支的關鍵詞(for .if .else .switch .goto .return .break .continue .do :`{”和“}’,)則繼續(xù)往卜判斷,否則返回繼續(xù)讀詞語。如果是能產(chǎn)生分支的關鍵詞,則將關鍵詞對應的當前標號(flagif }flagelse .flagwhile,flagfor }flagswitch)推進棧中的account單元保存,并將當前標號加1。當讀取到關鍵詞之后第1個氣”時,標志fflag加1,且判斷是否大于1:如果大于1,則將此時的行號推入到棧當前位置中的mine單元中保存;否則直接返回讀詞。如果是+}”標號,則判斷鏈表的節(jié)點是否大于。,如果是且為1,則用“}”當前行數(shù)減去保存棧中“{”的行數(shù),然后減去最近嵌套內(nèi)層的總行數(shù)即得到該層對應行數(shù);如果鏈表節(jié)點大于1,則判斷鏈表節(jié)點數(shù)與對應層數(shù)是否相等,如果相等則計算出該層的總行數(shù),即用此時+}”行數(shù)減去棧中保存“{”的總行數(shù),然后保存該層總行數(shù),并用總行數(shù)減去最近嵌套內(nèi)層行數(shù)之和,即得到該層行數(shù)對應記錄。如果鏈表節(jié)點數(shù)與對應層數(shù)不相等,則將對應層數(shù)加1循環(huán)作判斷。當所有的詞語全部讀取完畢后,讀取動態(tài)執(zhí)行時寫入的插裝文件,讀取關鍵詞標號,取對應關鍵詞鏈表中的行數(shù)與總行數(shù)變量相加,直至插裝文件讀取完畢,此時可以輸出被覆蓋語句數(shù)。

          2.4.2分支覆蓋率算法分析

          分支覆蓋率的計算一般也需要達到一定的指標。在T estImp系統(tǒng)中得到分支覆蓋率的算法流程如圖4


          10.jpg

          11.jpg

          該系統(tǒng)實現(xiàn)如卜幾個模塊:

          ①分析模塊。用打開文件菜單選擇要分析的源文件,并進行詞法分析。在詞法分析過程中,對關鍵詞、符號擻字變量等用不同的標記,并去除源文件中的注釋,給出每個詞的行數(shù)和列數(shù)。語法分析并沒有生成可見的語法樹,只是形成提供插裝的結(jié)構(gòu)信息。

          ②插裝模塊。選擇自動插裝菜單,系統(tǒng)會讀取詞法語法分析的結(jié)果,根據(jù)圖2算法流程實現(xiàn)對源程序的自動插裝,插裝點有for ,if ,else ,case ,goto ,return ,break ,con-tinue .do ,while語句后及程序開始與結(jié)束處插入記錄函數(shù)指針,并在程序最后插入插裝函數(shù)體。

          ③編譯器配置模塊。根據(jù)不同嵌入式軟件選擇不同的編譯環(huán)境,該部分需在使用該系統(tǒng)之前對各種嵌入式編譯軟件進行配置,在木系統(tǒng)中有Visual C + + ,ARM編譯器ADS ,Keil環(huán)境沛福環(huán)境,Borland C環(huán)境,DSP編譯器CCS。

          ④覆蓋率報告。木系統(tǒng)已實現(xiàn)的覆蓋率報告有語句覆蓋與分支覆蓋,并將覆蓋率通過二維圖形形式體現(xiàn)。后續(xù)將實現(xiàn)條件覆蓋、多條件判定覆蓋、多條件覆蓋,M C/DC潞徑覆蓋等覆蓋率報告。

          C服告生成及幫助文檔。將測試覆蓋結(jié)果與測試前生成設定的覆蓋率指標進行比較得到測試結(jié)果。如果覆蓋率沒有達到要求,則繼續(xù)增加測試用例,以提高測試覆蓋率。另外有幫助文檔,提供使用說明、注意事項及應用范圍等。

          4實驗結(jié)果

          在實驗中,采用1個AT 89C51單片機鍵盤識別系統(tǒng)作為實驗對象。在該系統(tǒng)中,通過AT 89C51的P1口連接1個4x4的知陣鍵盤,并通過P0. 4 } P0. 6所連接的74LS138擴展連接到型號位7SEG-MPXGCA的6位LED選通端上,可以顯示所按卜鍵盤的編號,將RXD和T XD連接到串口。

          實驗過程中,將測試源程序進行分析并自動插裝,然后通過單片機的Keil編譯器對插裝后的源程序進行編譯,得到.hex文件,添加到Proteus6. 9仿真軟件原理圖中的AT 89C51單片機中,點擊運行按鈕后可以執(zhí)行程序。此時可以在Proteus6. 9界而中輸入生成的測試用例,’。,,木實例中的測試用例是鍵盤按鍵的輸入,只需點擊Proteus6. 9原理圖中的鍵盤。此時插裝后的程序會將插裝的信急通過串口傳送到TestImp測試系統(tǒng)的聯(lián)機串口傳送界而中,并將其保存在指定文件中,為做準備。

          為該系統(tǒng)設計的基木測試用例是按卜單個1號鍵。在此測試用例卜,手工運行推算出語句覆蓋率和分支覆蓋率分別為55. 6%和42. 80}0 ,在測試系統(tǒng)運行后,得出的語句覆蓋率和分支覆蓋率分別為55. 6%和42. 8 0}o。測試結(jié)果如圖5所示。

          13.jpg

          實驗結(jié)果表明:在特定的測試用例卜,對嵌入式系統(tǒng)應用木文設計的基于仿真嵌入式軟件白盒覆蓋測試系統(tǒng)與理論上推導出來的語句和分支覆蓋率指標完全相同。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();