999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CodeTEST的嵌入式軟件測試技術

2010-06-05 10:47:36吳曉葵
電子設計工程 2010年9期
關鍵詞:嵌入式環境系統

吳曉葵

(西安航空技術高等專科學校 現代教育技術中心,陜西 西安 710077)

嵌入式系統被廣泛應用于工業控制、醫療儀器、通信設備、信息家電等領域,隨著應用需求的復雜化,嵌入式軟件的規模和復雜性也日益增加,軟件質量對整個系統質量的影響也越來越大[1]。而嵌入式系統對可靠性的要求比較高,嵌入式系統安全性的失效可能會導致災難性的后果,即使是非安全性系統,也會導致嚴重的經濟損失。這就要求對嵌入式系統及軟件必須進行嚴格的測試、確認和驗證[2]。嵌入式系統具有實時性強,存儲、計算等資源有限,與硬件緊密相關等特點,這決定了傳統軟件測試理論不能直接用于嵌入式軟件測試。因此需要研究更好的嵌入式軟件測試方法和策略。

1 嵌入式軟件測試策略

嵌入式軟件與通用軟件相比具有專用性,只能在特定的硬件平臺上執行,其開發環境和運行環境不一致。嵌入式軟件的開發環境被認為是主機平臺,運行環境則為目標平臺。嵌入式軟件測試即跨平臺交叉測試,一部分工作在主機上進行,而其他工作在目標平臺上進行,這就帶來了嵌入式軟件的測試策略問題[3]。通常嵌入式軟件測試要經歷單元測試、集成測試、系統測試等階段[1]。

多數單元級測試都在主機環境上進行,因為通常主機平臺的測試速度比目標平臺快得多,同時可提供更豐富的測試工具。在主機平臺完成測試后,可以在目標平臺上重復簡單的確認測試,確認測試將確定一些未知的、難以預料的主機與目標機之間的差異。通過在主機平臺上模擬目標運行環境,集成測試也可在主機環境上完成。但隨著計算機系統和物理系統的耦合越來越緊密[4],如何準確模擬目標平臺的軟硬件環境變得更為困難。因此集成測試的進行將綜合軟件開發的條件和用戶對軟件質量的期望水平等因素,此階段的確認測試將確定一些環境上的問題,例如內存定位和分配上的一些錯誤。系統測試,比如恢復測試、安全測試、強度測試、性能測試等均需在目標環境下執行。

總之,通常在主機環境執行多數的測試,只是在最終確定測試結果和最后的系統測試才移植到目標環境,這樣可避免對目標系統的訪問競爭而造成資源瓶頸,也可減少昂貴資源(如在線仿真器)的使用費用。軟件良好的可移植性將有助于交叉測試的進行,可提高軟件測試的效率,提高軟件質量。

2 基于CodeTEST的嵌入式軟件測試技術

2.1 常用測試工具與CodeTEST的比較

目前的測試工具大致分為純軟件測試工具、純硬件測試工具和硬件輔助軟件的測試工具。

純軟件測試工具采用軟件打點技術,即在被測代碼中加入一些插樁函數,借以生成測試數據并存儲在目標系統共享內存中。目標系統對這些數據進行預處理,然后交給主機平臺進行深入分析,獲取程序當前的運行狀態。由于插入插樁函數和預處理任務的存在,使系統的代碼增大,更嚴重的是這些代碼會對系統的運行效率有很大的影響[5]。因此目標系統是在一種不真實的環境下運行的,所捕獲的數據也就不夠精確。純軟件測試工具在進行嵌入式軟件測試時不能對目標系統中的函數和任務運行時間進行精確的分析,難以對內存的動態分配進行有效的觀察,當進行覆蓋率分析時,只能做單元覆蓋率分析且單元的程序量不能太大。

而純硬件測試工具通常用于系統的硬件設計與測試,當它用于軟件的分析測試時,很難滿足用戶的基本要求[5]。比如邏輯分析儀通過信號采樣分析判斷程序當前的運行狀態,這可能會遺失重要的信號。仿真器無法在CACHE打開的方式下工作,不能對內存分配進行分析和檢查,由于做覆蓋率分析時硬件工具是從系統總線捕獲數據,因此可能不是真實的系統環境。

圖1 CodeTEST測試原理圖Fig.1 Testing principle diagram of CodeTEST work

CodeTEST是硬件輔助軟件的測試工具。它采用并改進了軟件打點技術,純軟件工具插入的是一個函數,而CodeTEST插入的是一條賦值語句,所以它執行的時間很短,對目標系統的影響非常小。另外,CodeTEST采用了純硬件工具中從總線捕獲數據的技術并且對其進行完善。CodeTEST不再使用采樣方式,而是通過監視系統總線,當程序運行到插入的特殊點的時候才會主動到數據總線上把數據捕獲回來。因此,在同樣的處理能力下,CodeTEST能同時對多個函數和任務進行性能分析,精確得出其執行的最大、最小和平均時間。能夠精確地顯示各函數或任務之間的調用情況,能夠動態跟蹤內存分配情況,報告內存出錯點和相應的原始數據,因此可以做到精確的數據觀察。另外,CodeTEST在做覆蓋率分析時,能夠在實時系統環境下測試SC、DC和MC/DC級別的代碼覆蓋率,掌握當前的代碼測試覆蓋的真實情況。

2.2 CodeTEST測試原理

CodeTEST是專為嵌入式系統軟件測試而設計的工具套件,它與開發環境無縫集成,能夠有效地進行軟件性能分析、內存分析、覆蓋率分析和代碼跟蹤等。根據嵌入式系統不同的開發階段和測試需求,CodeTEST分為3種測試模式:1)CodeTEST Native:主機測試;2)CodeTEST Software-In-Circuit:將軟件植入目標系統通過以太網連接進行軟件測試;3)CodeTEST Hardware-In-Circuit:系統測試。

CodeTEST由數據采集單元 (DCU)和數據處理單元(DPU)2大部分組成,其中數據采集單元用于采集目標板上的數據,數據處理單元用于處理數據,并將結果發回到宿主機,由宿主機進行分析,得出測試結果。CodeTEST進行軟件測試的過程大體上分為3個步驟,其具體過程如圖1所示。

1)CodeTEST編譯器調用原編譯器對源代碼進行預編譯,插樁器對編譯后的源代碼進行插樁,即在需要插樁的關鍵位置寫入一條賦值語句,并建立符號數據庫保存插入標記以備后續使用。

2)CodeTEST編譯器調用原編譯器編譯插樁后的源代碼,生成可執行目標代碼,并下載到目標板上運行。

3)當程序運行到插樁點的位置時,目標板控制總線和地址總線上會出現相應的控制信號和地址信號。CodeTEST一旦監測到這些信號,就會從數據線上捕獲插樁點處的信息,送入內存進行預處理,然后將處理后的數據回送,并和原符號數據庫中保存的數據相比較,由此得知程序的當前運行狀態,進而完成對嵌入式軟件的性能分析,覆蓋率分析等各類測試。由于CodeTEST采用硬件直接從目標機的總線上跟蹤嵌入式代碼的實時運行情況,可以實現邊測試邊觀察覆蓋率,這樣實現了對嵌入式實時軟件的測試。

2.3 測試實例方法

CodeTEST-ACT (CodeTEST Advanced Coverage Tools)擴展了CodeTEST的簡單語句覆蓋(SC)為決策覆蓋(DC)以及條件決策覆蓋(MC/DC),利用CodeTEST對嵌入式實時軟件的測試功能可以一邊測試,一邊觀察覆蓋率的情況。

由于不同環境下的測試流程各有差異,基于如下環境:宿主機操作系統,Windows XP;目標板處理器,PowerPC860;目標板操作系統,VxWorks;開發環境,Tornado2.0 for ppc。覆蓋測試開發的一組嵌入式程序(30個程序代碼)。其過程如下:

1)設置環境變量。設置環境變量AMC_HOME和AMC_TARGET。其中AMC_HOME為CodeTEST安裝目錄,AMC_TARGET為編譯項。本例中AMC_TARGET設為gnuppc-vxworks-hwic。這四項分別對應編譯器,目標板處理器,目標板操作系統以及Hardware-In-Circuit測試類型。

2)修改Makefile文件,對源代碼進行編譯。根據實際環境修改Makefile文件中相應選項,確保對源文件能夠進行有效編譯。在本例中修改cpu=ppc860,tool=gnu,cc=ctcc-ctvctkeep-cttag-allocator。其中ctcc表示編譯驅動,整個打點過程由它控制,相當于一個批處理文件。ctv顯示打點器的版本號。cttag-allocator表示內存打點的選項。ctkeep表示源代碼打點生成的臨時文件保留。執行make-f makefile all命令,生成.idb文件,即添加了插樁信息的符號數據庫文件。執行make-f makefile命令,生成可在目標板上執行的.out文件。

3)下載可執行文件到目標板。啟動 Tornado,配置好VxWorks操作系統所在路徑以及目標板的IP地址,將Vxworks操作系統、目標板驅動、DPU驅動以及之前所生成的.out文件載入目標板。

4)運行 CodeTEST Manager,采集數據,根據目標板 CPU等信息配置相應選項,然后在Tornado的shell中運行待測程序,開始采集數據。CodeTEST Manager將顯示最終測試結果。

2.4 實驗結果分析

在沒有使用CodeTEST進行的軟件覆蓋率測試中,因為缺乏測試充分性的衡量指標,測試可能隨時終止,測試中該軟件覆蓋率普遍較低,一般語句低于80%,分支語句低于55%,其他的覆蓋率則更低。

利用上述方法,借助于CodeTEST獲取的相應代碼的覆蓋率的結果見圖2,從圖2中可以看到,在coverage Data窗口中清晰地顯示了系統每個函數的函數名、所屬文件名以及代碼覆蓋的情況,大部分程序代碼覆蓋率良好,覆蓋率可以實現語句完全覆蓋,以及分支覆蓋85%以上。而對于不能覆蓋到的語句或分支,在測試工具的配合下,測試人員很容易找到未覆蓋的原因。例如,由圖2可以看出,MainApp.c的覆蓋率為69.23%,這時可以通過Source窗口打開查看其源代碼,在Source窗口中源代碼中以不同的顏色區分已執行和未執行的語句,從而發現程序的設計問題。

圖2 CodeTEST測試結果圖Fig.2 Testing result diagram of CodeTEST

在使用CodeTEST進行嵌入式軟件測試時,由于環境不同,測試的過程也不盡相同。在使用CodeTEST進行測試過程中需要注意幾點:

1)主機IP,DPU的IP和目標板IP需在同一網段,否則可能無法正常通信。

2)下載可執行文件到目標板時,先載入目標板驅動和DPU驅動,后載入.out文件。

3)對測試的某些類型的程序,為正確反映程序的運行結果,應該先執行CodeTEST,否則無法獲取先運行的用戶程序的部分信息。

4)在進行覆蓋測試時,應本著“先易后難”的原則。例如,應先進行語句測試的覆蓋用例設計并測試,其后,按照同等方式進行條件、分支或其他等級的覆蓋測試,這樣可以避免重復性的測試工作,提高測試效率。

5)測試數據應盡量采用寫內存的方式獲取,避免采用寫文件的方式。由于寫文件的方式需要對文件進行頻繁操作,這種頻繁操作會破壞嵌入式軟件的實時性,甚至會造成被測軟件無法繼續運行的現象發生。

除了覆蓋測試,利用CodeTEST測試工具的內存分析和代碼跟蹤能力還可以發現軟件實現中的不足之處,并對其進行優化。例如根據測試結果發現該系統的MainApp.c函數被多次調用,并且該函數代碼較少,就可以將其設為內聯函數,以優化性能。

3 結 論

基于CodeTEST的嵌入式軟件測試技術對軟件打點技術和從總線上捕獲數據技術進行了改進和提升,正是這種原理上的優勢,使得CodeTEST具有強大的性能分析、內存分析、覆蓋率分析和代碼跟蹤能力。借助CodeTEST測試工具和適當的方法可以得到大量的實時可靠的測試結果,由此可以發現軟件實現中的不足之處,并對其進行優化、改進。

[1]喬文軍.嵌入式軟件測試平臺的研究與實現[D].南京:南京航空航天大學,2007.

[2]郭群.嵌入式軟件測試設計技術[J].微處理機,2008,29(4):104-106.GUO Qun.Technique of embedded software test and design[J].Microprocessors, 2008, 29(4):104-106.

[3]李偉,程朝輝.嵌入式軟件測試策略研究[J].北京化工大學學報, 2007, 34(Sup.I):43-46.LI Wei,CHENG Zhao-Hui.The research on testing strategy of embedded software[J].Journal of Beijng University of Chemical Technology,2007,34(Sup.I):43-46.

[4]Kim J E,Mosse D.Generic framework for design[J].Modeling and Simulation of Cyber Physical Systems,ACM SIGBED Review, 5(1):20-21.

[5]曹小鵬.嵌入式軟件的測試方法研究[J].西安郵電學院學報,2007,12(5):92-94.CAO Xiao-peng.The testing method studies of the embedded softwar[J].Journal of Xi'an University of Posts and Telecommunications, 2007, 12(5):92-94.

猜你喜歡
嵌入式環境系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
長期鍛煉創造體內抑癌環境
一種用于自主學習的虛擬仿真環境
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
孕期遠離容易致畸的環境
環境
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 亚洲伊人天堂| 久热re国产手机在线观看| 亚洲精品桃花岛av在线| 日韩在线2020专区| 国产一区二区三区视频| 天天视频在线91频| 青青操国产视频| 国产自无码视频在线观看| 国产精品9| 国产午夜福利片在线观看| 久久人午夜亚洲精品无码区| 欧美怡红院视频一区二区三区| 亚洲国产精品一区二区高清无码久久| 亚洲中文在线视频| AV老司机AV天堂| 欧美精品啪啪一区二区三区| 午夜毛片免费观看视频 | 亚洲第一成年人网站| 日本黄色不卡视频| 国产三级视频网站| 国产肉感大码AV无码| 国产迷奸在线看| 超清无码一区二区三区| 99精品在线视频观看| 在线不卡免费视频| 麻豆国产在线不卡一区二区| 91免费国产在线观看尤物| 天堂成人av| 精品国产免费观看| 精品福利视频导航| 精品一区二区三区中文字幕| 九九九精品视频| 四虎永久在线视频| 亚洲天堂网在线观看视频| 国产精品9| 99国产精品一区二区| 日韩精品成人网页视频在线| 欧美v在线| 成人免费网站在线观看| 一级爱做片免费观看久久| 无码国内精品人妻少妇蜜桃视频| 国产成人免费手机在线观看视频| 国产一区二区人大臿蕉香蕉| 国产伦精品一区二区三区视频优播 | 777午夜精品电影免费看| 一级毛片免费观看久| 日本午夜视频在线观看| 国产高颜值露脸在线观看| 一本一本大道香蕉久在线播放| 国产精品流白浆在线观看| 日韩精品一区二区三区大桥未久 | 亚洲无码高清免费视频亚洲| 久久免费视频播放| 亚洲a级毛片| 欧美中文字幕无线码视频| 97国产在线视频| 亚洲欧美不卡视频| 中文字幕乱码二三区免费| 91九色视频网| 欧美日韩另类在线| h视频在线观看网站| 美女无遮挡免费网站| 国产手机在线ΑⅤ片无码观看| 国产免费自拍视频| 中文字幕天无码久久精品视频免费| 亚洲天堂网在线观看视频| 国产一级毛片yw| 国产一区亚洲一区| 亚洲最新在线| 亚洲精品波多野结衣| Aⅴ无码专区在线观看| 欧美国产日本高清不卡| 丝袜国产一区| 亚洲床戏一区| 亚洲日韩国产精品综合在线观看| 日韩美毛片| 中文字幕 91| 亚洲人成影视在线观看| 日本一区高清| av无码一区二区三区在线| 性69交片免费看| 国产精品专区第1页|