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