版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Cobertura代碼覆蓋率測試代碼覆蓋率測試信息技術(shù)部雷高峰2012年11月目的 優(yōu)化代碼結(jié)構(gòu),減少冗余代碼; 提高測試質(zhì)量,提升整體軟件質(zhì)量; 提高測試人員測試分析能力,提高測試設(shè)計質(zhì)量; 術(shù)語介紹培訓(xùn)內(nèi)容 Cobertura簡介 Cobertura測試報告 Cobertura漏測分析 Cobertura使用 代碼覆蓋率術(shù)語介紹測試代碼對被測功能代碼的覆蓋程度,主要度量方式包括:語句覆蓋、判定覆蓋、條件覆蓋、路徑覆蓋。 McCabe復(fù)雜度一種軟件質(zhì)量度量方法,它是基于對程序拓?fù)浣Y(jié)構(gòu)復(fù)雜度的分析。在軟件工程活動中,廣泛使用于幾個方面:作為程序設(shè)計和管理指南;作為測試的輔助工具;作為網(wǎng)絡(luò)復(fù)雜性
2、的一種度量方法。 Cobertura 是一種開源測試工具,它通過檢測基本的代碼,并觀察在測試包運行時執(zhí)行了哪些代碼以及哪些代碼沒有執(zhí)行,來測量測試覆蓋率。除了找出未測試到的代碼并發(fā)現(xiàn) BUG 外,Cobertura 還可以通過標(biāo)記無用的、執(zhí)行不到的代碼來進(jìn)行代碼優(yōu)化,還可以提供 API 實際操作的內(nèi)部信息。Cobertura簡介圖圖 1. Flight 的包級別覆蓋率統(tǒng)計數(shù)據(jù)的包級別覆蓋率統(tǒng)計數(shù)據(jù)Cobertura測試報告圖圖 2. Com.mangocity.flight.web.convert 包中的代碼覆蓋率包中的代碼覆蓋率Cobertura測試報告圖圖 3. AllPriceQuery
3、Action類中的代碼覆蓋率類中的代碼覆蓋率Cobertura測試報告Cobertura漏測分析 利用以上Cobertura 測試報告,可以找出代碼中未測試的部分并針對它們更新相應(yīng)的測試用例。例如,圖 3 顯示 Flight 需要進(jìn)行一些測試,運用 name() 函數(shù)對文字節(jié)點、注釋節(jié)點、處理指令節(jié)點、屬性節(jié)點和名稱空間節(jié)點進(jìn)行測試。 如果有許多未覆蓋的代碼,像 Cobertura 在以上報告的那樣,那么添加所有缺少的測試將會非常耗時,但也是值得的。不一定要一次完成它。你可以從被測試的最少的代碼開始,比如那些所有沒有覆蓋的包。在測試所有的包之后,就可以對每一個顯示為沒有覆蓋的類編寫一些單元測試
4、代碼。對所有類進(jìn)行專門測試后,還要為所有未覆蓋的方法編寫單元測試代碼。在測試所有方法之后,就可以開始分析對未測試的語句進(jìn)行測試的必要性。 Cobertura漏測分析 一般來說,開始測量后,要達(dá)到95%以上的代碼覆蓋率是比較困難的事情。例如,可能存在某些class文件屬于公共類,并不會被永遠(yuǎn)調(diào)用?;蛘卟东@不會發(fā)生的異常的 catch 語句等。 并不總是可以得到完美的、100% 的代碼覆蓋率。有時你會發(fā)現(xiàn),不管對代碼如何改造,仍然有一些行、方法、甚至是整個類是測試不到的。 下面是你可能會遇到的挑戰(zhàn)的一些例子:影響代碼覆蓋率部分因素捕獲不會發(fā)生的異常的 catch 語句。只在特定平臺上執(zhí)行的代碼。如
5、在PC、MAC上執(zhí)行的代碼。非公共類中的一些方法,它們永遠(yuǎn)也不會被實際調(diào)用,只是為了滿足某個接口契約而必須實現(xiàn)。1234一些公共jar檔中的大部分公共類可能不會使用 ,以及冗余代碼。平時的工作積累以及過去平時的工作積累以及過去的失敗經(jīng)驗教訓(xùn)可以有效的失敗經(jīng)驗教訓(xùn)可以有效的幫助提高測試用例的設(shè)的幫助提高測試用例的設(shè)計質(zhì)量。計質(zhì)量。通過測試方法來逐一檢查通過測試方法來逐一檢查我們哪些方面的測試用例我們哪些方面的測試用例沒有考慮到,從而幫助我沒有考慮到,從而幫助我們增加相關(guān)的測試用例。們增加相關(guān)的測試用例。對覆蓋率低的模塊的代碼對覆蓋率低的模塊的代碼走查將有助于你增加相關(guān)走查將有助于你增加相關(guān)的用例
6、而提高代碼覆蓋率的用例而提高代碼覆蓋率有效的測試工具能快速檢有效的測試工具能快速檢測代碼覆蓋率低的地方,測代碼覆蓋率低的地方,快速定位測試的薄弱環(huán)節(jié)快速定位測試的薄弱環(huán)節(jié)個人工作經(jīng)驗個人工作經(jīng)驗測試分析設(shè)計測試分析設(shè)計代碼走查代碼走查測試工具測試工具提高代碼覆蓋率的一些方法Cobertura使用 在了解了測量代碼覆蓋率的好處后,讓我們再來討論一下如何用 Cobertura 測量代碼覆蓋率的具體細(xì)節(jié)。Cobertura 被設(shè)計成為支持Command line和Ant task兩種方式運行。Command line方式2Ant task方式3 1Cobertura使用Ant task方式:準(zhǔn)備工作
7、:A、從官網(wǎng)下載cobertura--bin.zip的zip壓縮包,官網(wǎng)下載地址頁面如下:http:/ task方式:Ant task方式:修改perties配置文件:# The source code for the examples can be found in this directorysrc.dir=././src# The path to cobertura.jarcobertura.dir=./# Classes generated by the javac compiler are deposited in this directoryclas
8、ses.dir=classes# Instrumented classes are deposited into this directoryinstrumented.dir=instrumented# All reports go into this directoryreports.dir=reports# Unit test reports from JUnit are deposited into this directoryreports.xml.dir=$reports.dir/junit-xmlreports.html.dir=$reports.dir/junit-html# C
9、overage reports are deposited into these directoriescoverage.xml.dir=$reports.dir/cobertura-xmlcoverage.summaryxml.dir=$reports.dir/cobertura-summary-xmlcoverage.html.dir=$reports.dir/cobertura-htmlAnt task方式:修改build.xml配置文件:在 build.xml 文件中添加一個任務(wù)定義。以下這個頂級 taskdef 元素將 cobertura.jar 文件限定在當(dāng)前工作目錄中: Ant
10、task方式:修改build.xml配置文件:定義cobertura-instrument 任務(wù),該任務(wù)將在已經(jīng)編譯好的類文件中添加日志代碼。todir 屬性指定將測量類放到什么地方。fileset 子元素指定測量哪些 .class 文件: Ant task方式:修改build.xml配置文件:定義Junit單元測試內(nèi)容: Ant task方式:修改build.xml配置文件:定義生成報告的格式: Ant task方式:運行Ant編譯任務(wù): 在自己的 Ant 編譯文件中加入了類似的任務(wù)后,就可以通過在eclipse中右鍵單擊build.xml,選擇ant build命令進(jìn)行測試并生成代碼覆蓋率
11、測試報告。或者可以通過鍵入以下命令來生成一個代碼覆蓋率測試報告: % ant instrument% ant cover-test% ant coverage-report 當(dāng)然,如果你愿意的話,還可以改變目標(biāo)任務(wù)的名稱,或者將這三項任務(wù)合并為一個目標(biāo)任務(wù)。Ant task方式:打包部署: 被測試工程如果需要打包部署到服務(wù)器進(jìn)行測試,可以通過重新編輯build.xml文件進(jìn)行打包,在build.xml配置中,將binDir目錄指向instrument目錄即可?;蛘咧苯油ㄟ^Myeclipse導(dǎo)出war包后,將instrument中的class文件替換到war中的class文件即可。 備注:部署到
12、服務(wù)器測試時,需要將cobertura目錄下已經(jīng)instrument過的cobertura.ser上傳到對應(yīng)的服務(wù)器上。(具體可參看commind line方式。)Command line方式2Ant task方式3 1Cobertura使用Command line方式:準(zhǔn)備工作:A、從官網(wǎng)下載cobertura--bin.zip的zip壓縮包,官網(wǎng)下載地址頁面如下:http:/ line方式:插針操作: CMD命令行下進(jìn)入cobertura解壓目錄,對編譯過的class文件進(jìn)行插針操作: cobertura-instrument.bat -destination D:cober
13、turainstrumented D: coberturaclassesCommand line方式:插針操作: 執(zhí)行插針操作時,在執(zhí)行命令的當(dāng)前目錄會自動生成cobertura.ser文件,該文件用于記錄代碼的執(zhí)行情況,初始化狀態(tài)的代碼執(zhí)行率情況全部為0%。在代碼執(zhí)行過程中,Cobertura的統(tǒng)計代碼會添加代碼的執(zhí)行信息統(tǒng)計到cobertura.ser文件中。在websphere環(huán)境、tomcat環(huán)境下進(jìn)行測試前,務(wù)必需要將cobertura.ser文件上傳到對應(yīng)的服務(wù)器上,否則執(zhí)行出來的代碼覆蓋率全部為100%。Command line方式:Ser文件文件Instrument InfoL
14、oad Class InfoExecute Info測試過程中,代碼執(zhí)行的統(tǒng)計信息什么時候?qū)懭隿obertura.ser文件?Command line方式: Cobertura only writes the coverage data file when the application server shuts down. We do not want to stop our application server after running our tests. It is possible to instruct Cobertura to write the data file. One
15、of your classes should call the static method:net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(). For example, you could add something like this to a logout method in your web application: Command line方式:打包部署: 執(zhí)行以上操作后,instrumented中的class文件就是進(jìn)行插針過的工程文件,將這些class文件替換原編譯的class文件打
16、包部署到tomcat或websphere容器中,然后將coubertura.ser覆蓋率統(tǒng)計文件部署到tomcat或websphere服務(wù)上,即可開始進(jìn)行測試。Command line方式:測試報告: 測試完成后,進(jìn)入cobertura安裝目錄,根據(jù)對應(yīng)測試服務(wù)器上的代碼執(zhí)行統(tǒng)計文件cobertura.ser來生成代碼覆蓋率測試報告: cobertura-report.bat -format html -datafile D: coberturacobertura.ser -destination D:coberturareportscobertura-html D:TestSpaceTestCoberturasrcCommand line方式:Ser文件合并: Cobertura支持將不同測試環(huán)境的cobertura.ser統(tǒng)計文件進(jìn)行合并。如:同一版本的項目在不同的環(huán)境下(或集群環(huán)境中)進(jìn)行測試后,代碼覆蓋率需要合并報告。合并cobertur
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑工地安全評價技術(shù)服務(wù)合同正式文本2篇
- 2024年版權(quán)買賣合同:版權(quán)擁有方將版權(quán)出售給另一方的具體條件和約定
- 2024年網(wǎng)絡(luò)技術(shù)開發(fā)與合作協(xié)議
- 二零二五年度建筑工程施工合同風(fēng)險管理及應(yīng)對措施3篇
- 2025年度智慧城市建設(shè)基礎(chǔ)設(shè)備日常采購合同(智能交通系統(tǒng))3篇
- 基于云計算的高端軟件項目合作協(xié)議
- 企業(yè)內(nèi)訓(xùn)課程開發(fā)協(xié)議
- 二零二五年度旅游度假村合伙人權(quán)益轉(zhuǎn)讓服務(wù)協(xié)議3篇
- 人工智能圖像識別技術(shù)研發(fā)合同
- 2024年版房地產(chǎn)居間協(xié)議重要提示版
- 《中外美術(shù)鑒賞》課件西方美術(shù)鑒賞導(dǎo)論
- 中小學(xué)教師違反職業(yè)道德行為處理辦法
- 梁平法制圖規(guī)則及鋼筋翻樣講解
- 乙肝 丙肝培訓(xùn)課件
- 2024屆湖北省武漢實驗外國語學(xué)校數(shù)學(xué)七上期末統(tǒng)考模擬試題含解析
- 基于深度學(xué)習(xí)的網(wǎng)絡(luò)釣魚郵件識別技術(shù)研究
- 融資成本視角下的船舶融資租賃模式研究
- 感冒中醫(yī)理論知識課件
- 2023年希望杯數(shù)學(xué)培訓(xùn)100題-六年級(含答案)
- 個人住房貸款提前還款月供及節(jié)省利息EXCEL計算
- 第五單元《圓》教材解析-人教版數(shù)學(xué)六年級上冊
評論
0/150
提交評論