單元測試過程_第1頁
單元測試過程_第2頁
單元測試過程_第3頁
單元測試過程_第4頁
單元測試過程_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單元測試過程第1頁,共34頁,2023年,2月20日,星期三2本章大綱討論與單元測試相關(guān)的內(nèi)容,包括什么是單元測試單元測試活動設(shè)計單元測試用例單元測試工具介紹JUnitIBMRationalPurifyandPurecoverage第2頁,共34頁,2023年,2月20日,星期三3定義軟件單元是在組件設(shè)計時定義的可以獨立測試的個體單元可能是:一個過程(函數(shù))一個菜單一個類一個網(wǎng)頁或者一組過程、一組菜單,一組類,一組網(wǎng)頁單元的最重要屬性是不管它是一個或者一組過程、菜單、類還是網(wǎng)頁,它可以與其他的部分獨立開來單元測試是針對單個或一組單元執(zhí)行的測試什么是單元測試第3頁,共34頁,2023年,2月20日,星期三4單元測試過程單元測試過程第4頁,共34頁,2023年,2月20日,星期三5根據(jù)IEEEStd.1008–1987forSoftwareUnitTesting,主要的單元測試活動包括制定總體計劃,包括方法,資源和進度確定待測特性精化總體測試計劃設(shè)計測試用例實現(xiàn)精化的計劃和設(shè)計執(zhí)行測試過程檢查測試是否可以終止評估測試效率和被測單元質(zhì)量單元測試活動第5頁,共34頁,2023年,2月20日,星期三6計劃單元測試采用基于第六章提供的測試計劃模版定義自己的單元測試計劃設(shè)計單元測試用例單元測試是根據(jù)軟件單元的邏輯和結(jié)構(gòu)進行的,通常由單元的開發(fā)人員執(zhí)行為了設(shè)計單元測試用例,應(yīng)該:基于軟件設(shè)計,確定測試單元單元測試用于測試單元的如下部分接口局部數(shù)據(jù)結(jié)構(gòu)邏輯結(jié)構(gòu):基本路徑,分支和循環(huán)單元測試活動第6頁,共34頁,2023年,2月20日,星期三7單元測試用于測試單元的如下部分錯誤處理運行時特征,如內(nèi)存分配、動態(tài)綁定、運行時類型信息等。這些通常被單元測試人員忽略運用測試用例設(shè)計方法設(shè)計單元測試用例。在單元測試中,使用最多的測試技術(shù)是白盒測試。當(dāng)然可以使用其它技術(shù),重要的一點是所選取的測試技術(shù)適合于相應(yīng)的測試需求可以通過結(jié)構(gòu)化自然語言描述測試用例,也可以用編程語言實現(xiàn)測試用例。設(shè)計單元測試用例第7頁,共34頁,2023年,2月20日,星期三8單元測試環(huán)境執(zhí)行單元測試的軟硬件環(huán)境待測單元單元測試用例因為單元是整個系統(tǒng)的一部分,它不能單獨運行。為了執(zhí)行單元測試用例需要開發(fā)如下的測試代碼驅(qū)動:模擬調(diào)用函數(shù)的一段代碼,它可以替代調(diào)用被測單元的模塊樁:模擬被測單元所調(diào)用函數(shù)的一段代碼,它可以替代被被測單元調(diào)用的模塊搭建單元測試環(huán)境第8頁,共34頁,2023年,2月20日,星期三9方法單元測試可以完全手工執(zhí)行,也可以借助工具執(zhí)行或者使用兩者的結(jié)合單元測試中的缺陷跟蹤缺陷一定要記錄一般采用簡化流程執(zhí)行單元測試第9頁,共34頁,2023年,2月20日,星期三10常用單元測試工具靜態(tài)測試工具靜態(tài)分析工具動態(tài)測試工具JUnitFramework/projects/Junit/IBMRationalPurecoverageIBMRationalPurifyIBMRationalQuantify可以從IBM網(wǎng)站獲得試用版本

/software/sw-atoz/indexR.html執(zhí)行單元測試第10頁,共34頁,2023年,2月20日,星期三11RationalPurifyRationalPurify可以檢測.NET和Java應(yīng)用程序中方法和對象級別上的內(nèi)存管理問題VisualC/C++應(yīng)用程序的運行時錯誤和內(nèi)存泄漏問題運行Purify與Purecovery一樣,有三種運行Purify的方法通過Purify自帶的用戶界面在IDE如MicrosoftVisualStudio6,VisualStudio.NETandIBMWebSphereStudio中運行通過命令行第11頁,共34頁,2023年,2月20日,星期三12檢測C/C++程序內(nèi)存泄漏方法為了檢測C/C++程序運行時錯誤,只需要通過Purify運行被測程序就會獲得所需的信息下面以Purify自帶的示例“Hello.c”為例,演示如何利用Purify檢測C程序中的內(nèi)存泄漏等運行時問題第12頁,共34頁,2023年,2月20日,星期三13檢測C/C++程序內(nèi)存泄漏第一步:指定被測程序:“purifyinstalldir\PurifyPlus\PurifySamples\hello.c”,點擊Run第13頁,共34頁,2023年,2月20日,星期三14檢測C/C++程序內(nèi)存泄漏第2步:等待Purify完成對被測程序的插樁動作,點擊被測程序“確定”按鈕第14頁,共34頁,2023年,2月20日,星期三15檢測C/C++程序內(nèi)存泄漏第3步:被測程序運行結(jié)束后,Purify會在數(shù)據(jù)瀏覽窗口顯示相應(yīng)的信息這些有色圖標(biāo)顯示被測程序存在運行錯誤內(nèi)存泄漏信息第15頁,共34頁,2023年,2月20日,星期三16檢測C/C++程序內(nèi)存泄漏第4步:檢查可疑代碼,修復(fù)缺陷第16頁,共34頁,2023年,2月20日,星期三17檢測C/C++程序內(nèi)存泄漏作出的修改第17頁,共34頁,2023年,2月20日,星期三18檢測C/C++程序內(nèi)存泄漏第5步:重復(fù)步驟1~4,運行修改后代碼”better.c”。Wow~~~!這次沒有出現(xiàn)運行時問題第18頁,共34頁,2023年,2月20日,星期三19檢測Java程序內(nèi)存泄漏執(zhí)行如下步驟分析內(nèi)存使用情況通過Purify運行Java或.NET程序在被測程序初始化完成后,提取第一次內(nèi)存快照運行懷疑可能存在內(nèi)存泄漏的代碼,完成后再提取第二次內(nèi)存快照比較兩次快照以識別可能引起內(nèi)存泄漏的方法檢查代碼中不再使用對象的可疑方法或者包含引用不再使用對象的對象。下面以Purify自帶的樣例“LeakSample.java”為例演示如何檢測Java內(nèi)存泄漏第19頁,共34頁,2023年,2月20日,星期三20檢測Java程序內(nèi)存泄漏第一步運行Purify第20頁,共34頁,2023年,2月20日,星期三21檢測Java程序內(nèi)存泄漏第2步指定被測程序“purifyinstalldir\PurifyPlus\PurifySamples\Java\LeakSample\LeakSample.class”,點擊Run,將顯示一個小窗口第21頁,共34頁,2023年,2月20日,星期三22檢測Java程序內(nèi)存泄漏第3步:待被測程序初始化完成后,點擊工具條上的“GarbageCollect”按鈕,提取第一次內(nèi)存快照第22頁,共34頁,2023年,2月20日,星期三23檢測Java程序內(nèi)存泄漏第4步:選擇“LeakContinuously”,點擊“Start”按鈕。你會發(fā)現(xiàn)內(nèi)存使用隨程序的運行不斷地增加,紅點是JAVA程序自動產(chǎn)生的垃圾回收點第23頁,共34頁,2023年,2月20日,星期三24檢測Java程序內(nèi)存泄漏第5步:點擊被測程序的“stop”按鈕第24頁,共34頁,2023年,2月20日,星期三25檢測Java程序內(nèi)存泄漏第6步:再次點擊工具條上的“GarbageCollect”按鈕,提取第二次快照,對兩次內(nèi)存快照進行比較后發(fā)現(xiàn),在兩次快照間存在相當(dāng)?shù)膬?nèi)存差異,這表明你的程序中存在內(nèi)存泄漏問題memorygap第25頁,共34頁,2023年,2月20日,星期三26檢測Java程序內(nèi)存泄漏第7步:點擊待被測程序的“Exit”按鈕,Purify的數(shù)據(jù)瀏覽窗口打開同時”LeakSample$Processor”方法高亮顯示第26頁,共34頁,2023年,2月20日,星期三27檢測Java程序內(nèi)存泄漏第8步:右鍵點擊”LeakSample$Processor”,選擇源文件第27頁,共34頁,2023年,2月20日,星期三28檢測Java程序內(nèi)存泄漏第9步:檢查”LeakSample.java”源文件中可疑的方法修正缺陷可能是這里出了問題第28頁,共34頁,2023年,2月20日,星期三29改成for(i=0;

i<cnt;i++)檢測Java程序內(nèi)存泄漏第29頁,共34頁,2023年,2月20日,星期三30第10步:采用與1~9相同的步驟運行修改后的”LeakSample.java”。這次運行結(jié)果顯示兩次快照之間不存在內(nèi)存差異了沒有內(nèi)存差異檢測Java程序內(nèi)存泄漏第30頁,共34頁,2023年,2月20日,星期三31其他單元測試工具靜態(tài)分析工具PC-LintforC/C++LogiscopeXXUnit系列工具(都可從/下載)CUnittestingFrameworkNUnitforC#DUnitforDelphiXMLUnitJsUnitforclient-sideJavaScriptSimpleTestforPHP….第31頁,共34頁,2023年,2月20日,星期三32模版基于第10章介紹的模版編寫單元測試報告主要內(nèi)容單元測試報告總結(jié)了整個單元測試過程并可提供有利于過程改進的信息,如:計劃的測試用例數(shù)修改的測試用例數(shù)刪除的測試用例數(shù)實際執(zhí)行的測試用例數(shù)未測用例數(shù)量和未測原因發(fā)現(xiàn)的嚴重缺陷數(shù)量掛起缺陷數(shù)量評估測試單元改進建議單元測試報告第32頁,共34頁,2023年,2月20日,星期三33下面的建議可能很有幫助單元測試前執(zhí)行代碼檢視由開發(fā)被測單元的程序員執(zhí)行單元測試完成代碼后修改單元測試用例記得測試運行時問題測試程序越簡單越好開發(fā)測試程序編程規(guī)范在單元測試時使用裁減的缺陷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論