cobertura覆蓋率測(cè)試工具
詳情介紹
Cobertura是一種開源的代碼覆蓋率工具,用于衡量軟件測(cè)試中代碼的覆蓋程度。它能夠分析和報(bào)告測(cè)試套件對(duì)源代碼的覆蓋情況,幫助開發(fā)人員確定哪些部分的代碼已經(jīng)被測(cè)試覆蓋,哪些部分還未經(jīng)過充分的測(cè)試。
Cobertura工具使用Java字節(jié)碼分析技術(shù),能夠跟蹤代碼執(zhí)行過程中每個(gè)分支、條件和方法調(diào)用的覆蓋情況。它通過在代碼中插入特定的計(jì)數(shù)器和跟蹤器來收集覆蓋率信息,然后生成詳細(xì)的報(bào)告,顯示每個(gè)類、方法和代碼行的覆蓋率統(tǒng)計(jì)數(shù)據(jù)。
在測(cè)試過程中,Cobertura可以與各種測(cè)試框架(如JUnit、TestNG等)和構(gòu)建工具(如Ant、Maven等)集成使用。它可以在編譯期或運(yùn)行期執(zhí)行測(cè)試,并收集覆蓋率數(shù)據(jù)。生成的報(bào)告通常以HTML格式呈現(xiàn),提供了直觀、易于理解的覆蓋率統(tǒng)計(jì)和可視化展示。
通過使用cobertura覆蓋率測(cè)試工具,開發(fā)人員可以評(píng)估測(cè)試套件的質(zhì)量和完整性,找出代碼中未被覆蓋的部分,進(jìn)而改進(jìn)測(cè)試策略、增強(qiáng)測(cè)試用例的覆蓋范圍,提高軟件質(zhì)量和穩(wěn)定性。此外,Cobertura還支持與持續(xù)集成工具集成,提供覆蓋率報(bào)告的歷史記錄和趨勢(shì)分析,幫助團(tuán)隊(duì)進(jìn)行質(zhì)量控制和性能優(yōu)化。
這些是代碼覆蓋率可以試圖回答的問題??傊?,出于以下原因我們需要測(cè)量代碼覆蓋率:
● 了解我們的測(cè)試用例對(duì)源代碼的測(cè)試效果
● 了解我們是否進(jìn)行了足夠的測(cè)試
● 在軟件的整個(gè)生命周期內(nèi)保持測(cè)試質(zhì)量
注:代碼覆蓋率不是靈丹妙藥,覆蓋率測(cè)量不能替代良好的代碼審查和優(yōu)秀的編程實(shí)踐。
通常,我們應(yīng)該采用合理的覆蓋目標(biāo),力求在代碼覆蓋率在所有模塊中實(shí)現(xiàn)均勻覆蓋,而不是只看最終數(shù)字的是否高到令人滿意。
舉例:假設(shè)代碼覆蓋率只在某一些模塊代碼覆蓋率很高,但在一些關(guān)鍵模塊并沒有足夠的測(cè)試用例覆蓋,那樣雖然代碼覆蓋率很高,但并不能說明產(chǎn)品質(zhì)量就很高。
利用 Cobertura 報(bào)告,可以找出代碼中未測(cè)試的部分并針對(duì)它們編寫測(cè)試。例如,圖 3 顯示 Jaxen 需要進(jìn)行一些測(cè)試,運(yùn)用 name() 函數(shù)對(duì)文字節(jié)點(diǎn)、注釋節(jié)點(diǎn)、處理指令節(jié)點(diǎn)、屬性節(jié)點(diǎn)和名稱空間節(jié)點(diǎn)進(jìn)行測(cè)試。
(幾乎)不留下任何未測(cè)試的代碼
是否有一些可以測(cè)試但不應(yīng)測(cè)試的內(nèi)容?這取決于您問的是誰。在 JUnit FAQ 中,J. B. Rainsberger 寫到“一般的看法是:如果 自身 不會(huì)出問題,那么它會(huì)因?yàn)樘?jiǎn)單而不會(huì)出問題。第一個(gè)例子是 getX() 方法。假定 getX() 方法只提供某一實(shí)例變量的值。在這種情況下,除非編譯器或者解釋器出了問題,否則 getX() 是不會(huì)出問題的。因此,不用測(cè)試 getX(),測(cè)試它不會(huì)帶來任何好處。對(duì)于 setX() 方法來說也是如此,不過,如果 setX() 方法確實(shí)要進(jìn)行任何參數(shù)驗(yàn)證,或者說確實(shí)有副作用,那么還是有必要對(duì)其進(jìn)行測(cè)試。”
閱讀 Cobertura 輸出
我們首先查看生成的 Cobertura 輸出。圖 1 顯示了對(duì) Jaxen 測(cè)試包運(yùn)行 Cobertura 生成的報(bào)告。從該報(bào)告中,可以看到從很好(在 org.jaxen.expr.iter 包中幾乎是 100%)到極差(在 org.jaxen.dom.html 中完全沒有覆蓋)的覆蓋率結(jié)果。
Cobertura 通過被測(cè)試的行數(shù)和被測(cè)試的分支數(shù)來計(jì)算覆蓋率。第一次測(cè)試時(shí),兩種測(cè)試方法之間的差別并不是很重要。Cobertura 還為類計(jì)算平均 McCabe 復(fù)雜度。
可以深入挖掘 HTML 報(bào)告,了解特定包或者類的覆蓋率。圖 2 顯示了 org.jaxen.function 包的覆蓋率統(tǒng)計(jì)。在這個(gè)包中,覆蓋率的范圍從 SumFunction 類的 100% 到 IdFunction 類的僅為 5%。
進(jìn)一步深入到單獨(dú)的類中,具體查看哪一行代碼沒有測(cè)試到。圖 3 顯示了 NameFunction 類中的部分覆蓋率。最左邊一欄顯示行號(hào)。后一欄顯示了執(zhí)行測(cè)試時(shí)這一行被執(zhí)行的次數(shù)??梢钥闯?,第 112 行被執(zhí)行了 100 次,第 114 行被執(zhí)行了 28 次。用紅色突出顯示的那些行則根本沒有測(cè)試到。這個(gè)報(bào)告表明,雖然從總體上說該方法被測(cè)試到了,但實(shí)際上還有許多分支沒有測(cè)試到。
什么是代碼覆蓋率?
代碼覆蓋率是對(duì)整個(gè)測(cè)試過程中被執(zhí)行的代碼的衡量,它能測(cè)量源代碼中的哪些語句在測(cè)試中被執(zhí)行,哪些語句尚未被執(zhí)行。為什么要測(cè)量代碼覆蓋率?
眾所周知,測(cè)試可以提高軟件版本的質(zhì)量和可預(yù)測(cè)性。但是,你知道你的單元測(cè)試甚至是你的功能測(cè)試實(shí)際測(cè)試代碼的效果如何嗎?是否還需要更多的測(cè)試?這些是代碼覆蓋率可以試圖回答的問題??傊?,出于以下原因我們需要測(cè)量代碼覆蓋率:
● 了解我們的測(cè)試用例對(duì)源代碼的測(cè)試效果
● 了解我們是否進(jìn)行了足夠的測(cè)試
● 在軟件的整個(gè)生命周期內(nèi)保持測(cè)試質(zhì)量
注:代碼覆蓋率不是靈丹妙藥,覆蓋率測(cè)量不能替代良好的代碼審查和優(yōu)秀的編程實(shí)踐。
通常,我們應(yīng)該采用合理的覆蓋目標(biāo),力求在代碼覆蓋率在所有模塊中實(shí)現(xiàn)均勻覆蓋,而不是只看最終數(shù)字的是否高到令人滿意。
舉例:假設(shè)代碼覆蓋率只在某一些模塊代碼覆蓋率很高,但在一些關(guān)鍵模塊并沒有足夠的測(cè)試用例覆蓋,那樣雖然代碼覆蓋率很高,但并不能說明產(chǎn)品質(zhì)量就很高。
cobertura覆蓋率測(cè)試工具功能
確認(rèn)遺漏的測(cè)試利用 Cobertura 報(bào)告,可以找出代碼中未測(cè)試的部分并針對(duì)它們編寫測(cè)試。例如,圖 3 顯示 Jaxen 需要進(jìn)行一些測(cè)試,運(yùn)用 name() 函數(shù)對(duì)文字節(jié)點(diǎn)、注釋節(jié)點(diǎn)、處理指令節(jié)點(diǎn)、屬性節(jié)點(diǎn)和名稱空間節(jié)點(diǎn)進(jìn)行測(cè)試。
(幾乎)不留下任何未測(cè)試的代碼
是否有一些可以測(cè)試但不應(yīng)測(cè)試的內(nèi)容?這取決于您問的是誰。在 JUnit FAQ 中,J. B. Rainsberger 寫到“一般的看法是:如果 自身 不會(huì)出問題,那么它會(huì)因?yàn)樘?jiǎn)單而不會(huì)出問題。第一個(gè)例子是 getX() 方法。假定 getX() 方法只提供某一實(shí)例變量的值。在這種情況下,除非編譯器或者解釋器出了問題,否則 getX() 是不會(huì)出問題的。因此,不用測(cè)試 getX(),測(cè)試它不會(huì)帶來任何好處。對(duì)于 setX() 方法來說也是如此,不過,如果 setX() 方法確實(shí)要進(jìn)行任何參數(shù)驗(yàn)證,或者說確實(shí)有副作用,那么還是有必要對(duì)其進(jìn)行測(cè)試。”
閱讀 Cobertura 輸出
我們首先查看生成的 Cobertura 輸出。圖 1 顯示了對(duì) Jaxen 測(cè)試包運(yùn)行 Cobertura 生成的報(bào)告。從該報(bào)告中,可以看到從很好(在 org.jaxen.expr.iter 包中幾乎是 100%)到極差(在 org.jaxen.dom.html 中完全沒有覆蓋)的覆蓋率結(jié)果。
Cobertura 通過被測(cè)試的行數(shù)和被測(cè)試的分支數(shù)來計(jì)算覆蓋率。第一次測(cè)試時(shí),兩種測(cè)試方法之間的差別并不是很重要。Cobertura 還為類計(jì)算平均 McCabe 復(fù)雜度。
可以深入挖掘 HTML 報(bào)告,了解特定包或者類的覆蓋率。圖 2 顯示了 org.jaxen.function 包的覆蓋率統(tǒng)計(jì)。在這個(gè)包中,覆蓋率的范圍從 SumFunction 類的 100% 到 IdFunction 類的僅為 5%。
進(jìn)一步深入到單獨(dú)的類中,具體查看哪一行代碼沒有測(cè)試到。圖 3 顯示了 NameFunction 類中的部分覆蓋率。最左邊一欄顯示行號(hào)。后一欄顯示了執(zhí)行測(cè)試時(shí)這一行被執(zhí)行的次數(shù)??梢钥闯?,第 112 行被執(zhí)行了 100 次,第 114 行被執(zhí)行了 28 次。用紅色突出顯示的那些行則根本沒有測(cè)試到。這個(gè)報(bào)告表明,雖然從總體上說該方法被測(cè)試到了,但實(shí)際上還有許多分支沒有測(cè)試到。
下載地址
- 電腦版
cobertura覆蓋率測(cè)試工具 v2.1.1官方版
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
同類軟件
網(wǎng)友評(píng)論
共0條評(píng)論(您的評(píng)論需要經(jīng)過審核才能顯示)
分類列表
類似軟件
-
JAVA 8 v8.0.3910.13官方版 編程軟件 / 1.09M
-
jude綠色中文版(JAVA建模工具) 編程軟件 / 8.96M
-
intellij idea 2017官方版 v2017.3.5 編程軟件 / 512.11M
精彩發(fā)現(xiàn)
換一換專題推薦
本類排行
月排行總排行