您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 >
用Cobertura做測(cè)試覆蓋率
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/28 13:59:40 ] 推薦標(biāo)簽:

Cobertura 是一種開(kāi)源工具,它通過(guò)檢測(cè)基本的代碼,并觀察在測(cè)試包運(yùn)行時(shí)執(zhí)行了哪些代碼和沒(méi)有執(zhí)行哪些代碼,來(lái)測(cè)量測(cè)試覆蓋率。除了找出未測(cè)試到的代碼并發(fā)現(xiàn) bug 外,Cobertura 還可以通過(guò)標(biāo)記無(wú)用的、執(zhí)行不到的代碼來(lái)優(yōu)化代碼,還可以提供 API 實(shí)際操作的內(nèi)部信息。Elliotte Rusty Harold 將與您分享如何利用代碼覆蓋率的佳實(shí)踐來(lái)使用 Cobertura。

盡管測(cè)試先行編程(test-first programming)和單元測(cè)試已不能算是新概念,但測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)仍然是過(guò)去 10 年中重要的編程創(chuàng)新。好的一些編程人員在過(guò)去半個(gè)世紀(jì)中一直在使用這些技術(shù),不過(guò),只是在近幾年,這些技術(shù)才被廣泛地視為在時(shí)間及成本預(yù)算內(nèi)開(kāi)發(fā)健壯的無(wú)缺陷軟件的關(guān)鍵所在。但是,測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)不能超過(guò)測(cè)試所能達(dá)到的程度。測(cè)試改進(jìn)了代碼質(zhì)量,但這也只是針對(duì)實(shí)際測(cè)試到的那部分代碼而言的。您需要有一個(gè)工具告訴您程序的哪些部分沒(méi)有測(cè)試到,這樣可以針對(duì)這些部分編寫(xiě)測(cè)試代碼并找出更多 bug。

Mark Doliner 的 Cobertura (cobertura 在西班牙語(yǔ)是覆蓋的意思)是完成這項(xiàng)任務(wù)的一個(gè)免費(fèi) GPL 工具。Cobertura 通過(guò)用額外的語(yǔ)句記錄在執(zhí)行測(cè)試包時(shí),哪些行被測(cè)試到、哪些行沒(méi)有被測(cè)試到,通過(guò)這種方式來(lái)度量字節(jié)碼,以便對(duì)測(cè)試進(jìn)行監(jiān)視。然后它生成一個(gè) HTML 或者 XML 格式的報(bào)告,指出代碼中的哪些包、哪些類、哪些方法和哪些行沒(méi)有測(cè)試到。可以針對(duì)這些特定的區(qū)域編寫(xiě)更多的測(cè)試代碼,以發(fā)現(xiàn)所有隱藏的 bug。

閱讀 Cobertura 輸出

我們首先查看生成的 Cobertura 輸出。圖 1 顯示了對(duì) Jaxen 測(cè)試包運(yùn)行 Cobertura 生成的報(bào)告(請(qǐng)參閱 參考資料)。從該報(bào)告中,可以看到從很好(在 org.jaxen.expr.iter 包中幾乎是 )到極差(在 org.jaxen.dom.html 中完全沒(méi)有覆蓋)的覆蓋率結(jié)果。


圖 1. Jaxen 的包級(jí)別覆蓋率統(tǒng)計(jì)數(shù)據(jù)

Cobertura 通過(guò)被測(cè)試的行數(shù)和被測(cè)試的分支數(shù)來(lái)計(jì)算覆蓋率。第一次測(cè)試時(shí),兩種測(cè)試方法之間的差別并不是很重要。Cobertura 還為類計(jì)算平均 McCabe 復(fù)雜度(請(qǐng)參閱 參考資料)。

可以深入挖掘 HTML 報(bào)告,了解特定包或者類的覆蓋率。圖 2 顯示了 org.jaxen.function 包的覆蓋率統(tǒng)計(jì)。在這個(gè)包中,覆蓋率的范圍從 SumFunction 類的 到 IdFunction 類的僅為 5%。

圖 2. org.jaxen.function 包中的代碼覆蓋率

進(jìn)一步深入到單獨(dú)的類中,具體查看哪一行代碼沒(méi)有測(cè)試到。圖 3 顯示了 NameFunction 類中的部分覆蓋率。左邊一欄顯示行號(hào)。后一欄顯示了執(zhí)行測(cè)試時(shí)這一行被執(zhí)行的次數(shù)?梢钥闯,第 112 行被執(zhí)行了 100 次,第 114 行被執(zhí)行了 28 次。用紅色突出顯示的那些行則根本沒(méi)有測(cè)試到。這個(gè)報(bào)告表明,雖然從總體上說(shuō)該方法被測(cè)試到了,但實(shí)際上還有許多分支沒(méi)有測(cè)試到。

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd