作者:胡勤霞1劉慶峰2 來源:網(wǎng)絡 時間:2010-5-11
摘 要:介紹了CODETEST 測試工具的特點及工作原理。詳細闡述了利用這種工具進行軟件測試的方法和內(nèi)容。實踐表明,該測試工具測試方法簡單,測試效果好。
關(guān)鍵詞: CODETEST;嵌入式軟件;測試
隨著科技技術(shù)水平的發(fā)展,計算機技術(shù)以智能化、嵌入式為特點更方便、靈活的服務于人類,并存在于眾多關(guān)鍵性運用中。嵌入式系統(tǒng)也越來越復雜,對系統(tǒng)性能要求不斷提高,需要功能強大、運行穩(wěn)定、性能卓越的應用軟件與之相適應。目前,嵌入式軟件主要應用于武器系統(tǒng)、戰(zhàn)術(shù)系統(tǒng)、飛機、艦船、導彈、宇宙飛船、某些指揮與控制系統(tǒng)等之內(nèi)的數(shù)據(jù)處理機。嵌入式軟件就是指駐留運行在嵌入式計算機中的執(zhí)行程序。對嵌入式軟件的測試也面臨巨大的挑戰(zhàn),其測試難點主要表現(xiàn)在以下幾方面:1)響應時間快速而難以測試性能;2)結(jié)構(gòu)緊湊而難以插裝;3)操作系統(tǒng)多樣而難以統(tǒng)一系統(tǒng)接口;4)CPU和硬件體系多樣而難以使用固定測試設備;5)關(guān)鍵任務執(zhí)行錯誤造成巨大損失,測試工作壓力大;6)軟件開發(fā)的模式不同于通用開發(fā)方法,測試工具必須同開發(fā)環(huán)境相配套。如何對嵌入式系統(tǒng)的軟件進行測試,尤其是在關(guān)鍵性產(chǎn)品的嵌入式軟件測試各階段,采用何種方式和手段,開控制、輔助軟件的質(zhì)量控制,越來越成為一個急待解決的問題。本文提出了一種測試工具CODETEST,能夠在保證系統(tǒng)真實性的前提下,在軟件的單元測試階段、集成測試階段、系統(tǒng)測試階段等各階段對嵌入式系統(tǒng)的軟件進行實時在線的測試與分析,保證了嵌入式系統(tǒng)的性能和可靠性。
CODETEST測試是實時在線的完全真實的測試。其測試的特點是用硬件測試軟件;軟件在實際情況下運行;通過打點方式工作;對真實硬件實時系統(tǒng)的在線交互式測量、精確、結(jié)果詳盡;用軟件開發(fā)者的角度觀察嵌入式軟件的執(zhí)行;生成的數(shù)據(jù)和文檔符合工業(yè)規(guī)范的要求。對硬件測試的條件是被測試系統(tǒng)提供測試點,接合測試頭,適配器進行正常的測試。對硅片測試的條件是為其測試準備測試引腳和測試點,再對硅片進行測試。被測軟件的下載、運行控制等,用CODETEST來實現(xiàn)。
CodeTest的嵌入式軟件測試方案
用CODETEST進行測試的一個實例如下:在執(zhí)行一項軟件測試任務中,發(fā)現(xiàn)關(guān)鍵任務執(zhí)行時間過長,使用邏輯分析儀未能判斷原因。把CODETEST軟件Trace的觸發(fā)器設在進入函數(shù)X 的入口點,清楚的看出關(guān)鍵任務被其他函數(shù)或任務中斷,發(fā)現(xiàn)被錯誤設置優(yōu)先級的中斷服務例程,開始發(fā)現(xiàn)主要的中斷服務程序性能不滿足要求,最終發(fā)現(xiàn)它被錯誤設置中斷優(yōu)先級的LED中斷顯示程序所中斷。其他現(xiàn)象為:如果關(guān)閉所有中斷,BUG就沒有了,這種情況下軟件DEBUG 無能為力。
CODETEST測試工具的主要功能是:動態(tài)顯示覆蓋率趨勢;提高測試效率;通過覆蓋率趨勢,去除不必要的測試;通過覆蓋率數(shù)據(jù)減少測試次數(shù),測試更有效率;實時動態(tài)顯示覆蓋率,簡化測試用例生成過程;提高產(chǎn)品質(zhì)量;發(fā)現(xiàn)沒有測量過的部分;產(chǎn)生更有效的測試用例;量化測試的進度。
嵌入式軟件性能測試的主要技術(shù)參數(shù)指標有以下四項:1)性能分析;2)內(nèi)存分析;3)代碼跟蹤;4)語句覆蓋,決策覆蓋,多條件決策覆蓋。針對以上性能測試指標,CODETEST提供了嵌入式軟件驗證工具如下:
CODETEST / Performance 分析性能
CODETEST / Coverage 分析覆蓋率
CODETEST / Memory 分析內(nèi)存分配
CODETEST / Trace 分析軟件執(zhí)行流程
2.1 CODETEST/性能分析:
CODETEST的性能分析能實現(xiàn)的功能為能實時顯示每個函數(shù)、任務的運行時間;能顯示在某時間段中,每個函數(shù)和任務的被調(diào)用次數(shù);發(fā)現(xiàn)占用時間多和調(diào)用頻繁的代碼,把它們 in-line,性能得到提高;可對占用CPU時間長的函數(shù)或任務有針對性的優(yōu)化,從而使整個系統(tǒng)得到優(yōu)化。通過這樣的性能測試具有的優(yōu)點是:性能符合要求;不用進行昂貴的硬件升級和重新設計;提高性能X%;發(fā)現(xiàn)瓶徑和有缺陷的代碼;發(fā)現(xiàn)哪一個軟件子系統(tǒng)不符合性能要求;系統(tǒng)管理開銷小。 性能分析包括任務和函數(shù)性能分析、調(diào)用關(guān)系跟蹤。
2.2 CODETEST /覆蓋率
CODETEST的覆蓋率能實現(xiàn)的功能為一個頁面就可以顯示整個程序的覆蓋率摘要信息;簡單明了的當前測試進度信息顯示;支持多次測試的數(shù)據(jù)合并。覆蓋率測試的優(yōu)點是通過覆蓋率趨勢,能夠去除不必要的測試;通過覆蓋率數(shù)據(jù)減少測試次數(shù),測試更有效率;實時動態(tài)顯示覆蓋率,簡化測試用例生成過程。能夠發(fā)現(xiàn)沒有測量過的部分;產(chǎn)生更有效的測試用例;量化測試的進度。覆蓋率包括函數(shù)和源程序覆蓋率、覆蓋率趨勢。
2.3 CODETEST /內(nèi)存
CODETEST內(nèi)存測試可測試內(nèi)存的內(nèi)容為了解程序內(nèi)存分配的真實情況;測量內(nèi)存使用情況,發(fā)現(xiàn)對內(nèi)存的不正常使用;在系統(tǒng)崩潰前發(fā)現(xiàn)內(nèi)存泄露錯誤;發(fā)現(xiàn)內(nèi)存分配錯誤;精確顯示發(fā)生錯誤時的上下文情況;指出發(fā)生錯誤的原由;無須做痛苦的代碼跟蹤,就可以發(fā)現(xiàn)錯誤;并在問題出現(xiàn)前發(fā)現(xiàn)征兆。
內(nèi)存分配和分配錯誤顯示測試主要內(nèi)容為測量那些函數(shù)使用了較多或較少的內(nèi)存;去除所有的內(nèi)存錯誤;捕捉空指針和其他的錯誤情況;發(fā)現(xiàn)內(nèi)存泄露。
2.4 CODETEST /分析軟件執(zhí)行流程
CODETEST/分析軟件執(zhí)行流程即對程序?qū)嶋H運行過程進行記錄,以了解程序運行的實際情況。對于實時多任務系統(tǒng),還要求對任務的執(zhí)行與切換及對應時間進行記錄,解決任務或中斷優(yōu)先級的問題。它把深度跟蹤和便捷的運用特點結(jié)合起來。該工具可以從三個不同的抽象層次顯示程序執(zhí)行過程:1)高級,顯示RTOS事件和函數(shù)執(zhí)行的入口和出口;2)控制流程級,顯示可執(zhí)行函數(shù)中每一條分支語句;3)原碼級,顯示每條執(zhí)行過的C或C++語句。具體內(nèi)容如下:
1)高級顯示方式
實現(xiàn)的功能如下:在任務或函數(shù)級別顯示全部的程序運行流程;觀察軟件單元之間的交互過程(互相調(diào)用等);直觀縮進方式顯示程序的上下文執(zhí)行過程。
2) 控制流方式
實現(xiàn)的功能如下:顯示所有函數(shù)的所有分支點的決策執(zhí)行情況;簡化顯示函數(shù)內(nèi)部的執(zhí)行流程;顯示函數(shù)每一次調(diào)用的不同的內(nèi)部執(zhí)行路徑。
3)源代碼顯示方式
實現(xiàn)的功能如下:在函數(shù)和任務上下文之間顯示每一行執(zhí)行過的原代碼;以軟件工程師的角度顯示代碼執(zhí)行過程。
4)CODETEST /Trace - 觸發(fā)
使用觸發(fā)功能,只需根據(jù)確定一個任務中RTOS任務和函數(shù)等級來選擇所需要跟蹤的軟件內(nèi)容,包括內(nèi)存分配錯誤觸發(fā)。
3 CODETEST與其他測試工具的比較
CODETEST是硬件輔助軟件測試工具,其特點在于實時、在線、精確,CODETEST與純軟件測試工具和純硬件工具的對比見下表。
純軟件測試工具 | CODETEST 硬件輔助軟件測試工具 | 純硬件工具 (仿真器,邏輯分析儀)
|
缺乏很好的性能分析 缺乏覆蓋率分析 缺乏內(nèi)存分配分析 對目標系統(tǒng)影響大(超過50%) 占用目標系統(tǒng)資源如,CPU 時間內(nèi)存,通訊通道等 軟件打點方式 比較便宜 可在CACHE打開下工作 精確度偏低 | 強大的性能分析 強大的覆蓋率分析 強大的內(nèi)存分配分析 對目標系統(tǒng)影響?。?-15%) 不占用目標系統(tǒng)資源 軟件打點技術(shù) 價格較便宜 可在CACHE打開方式下工作 非常精確
| 有限或沒有性能分析 有限的或沒有覆蓋率分析 沒有內(nèi)存分配分析 不影響目標系統(tǒng)(0%) 不占用系統(tǒng)資源 不用打點 價格昂貴 無法在CACHE打開方式下工作 精確性隨情況變化 通過仿真存儲器工作 支持讀寫內(nèi)存數(shù)據(jù) 軟件下載到目標系統(tǒng) |
4 結(jié)束語
本文介紹的CODETEST測試工具的測試方法已經(jīng)在3Com等大型嵌入式軟件系統(tǒng)中得到應用。隨著后PC時代的到來,嵌入式軟件變得越來越復雜,越來越深入到生產(chǎn)線的各個部分,對軟件的性能和穩(wěn)定性提出了更高的要求。CODETEST測試工具為針對嵌入式軟件分析測試提供了解決方案,為嵌入式軟件的開發(fā)和測試者提供了新的技術(shù)手段,使人們能以全新的視角審視嵌入式軟件的開發(fā)和測試過程。
參考文獻:
[1]鄭人杰 計算機軟件測試技術(shù) 清華大學出版社 1992
[2]深圳市華唐科技有限公司 CodeTEST TM介紹
[3]靳超 硬件輔助的軟件在線測試和分析技術(shù) 奧吉通科技有限公司 2004.11.7