代碼覆蓋率統(tǒng)計(jì)神器-jacoco工具實(shí)戰(zhàn)

每天進(jìn)步一點(diǎn)點(diǎn)首妖,關(guān)注我們哦窍荧,每天分享測試技術(shù)文章

本文章出自【碼同學(xué)軟件測試】


代碼覆蓋(英語:Code coverage)是軟件測試中的一種度量,描述程序中源代碼被測試的比例和程度屈糊,所得比例稱為代碼覆蓋率。

碼同學(xué)公眾號(hào):自動(dòng)化軟件測試

碼同學(xué)抖音號(hào):小碼哥聊軟件測試

測試覆蓋率

測試覆蓋率是對(duì)測試完全程度的評(píng)測晰筛。測試覆蓋率是由測試需求和測試用例的覆蓋或已執(zhí)行代碼的覆蓋的表示結(jié)果。一方面可以衡量測試工作本身的有效性拴袭,提升測試效率读第,一方面可以提升代碼質(zhì)量,減少bug拥刻,提升產(chǎn)品的可靠性怜瞒,穩(wěn)定性。


代碼覆蓋率的意義

·?分析未覆蓋部分的代碼般哼,從而反推3在前期測試設(shè)計(jì)是否充分吴汪,沒有覆蓋到的代碼是否是測試設(shè)計(jì)的盲點(diǎn),為什么沒有考慮到蒸眠?需求/設(shè)計(jì)不夠清晰漾橙,測試設(shè)計(jì)的理解有誤,工程方法應(yīng)用后的造成的策略性放棄等等楞卡,之后進(jìn)行補(bǔ)充測試用例設(shè)計(jì)霜运。

·?檢測出程序中的廢代碼,可以逆向反推在代碼設(shè)計(jì)中思維混亂點(diǎn)蒋腮,提醒設(shè)計(jì)/開發(fā)人員理清代碼邏輯關(guān)系,提升代碼質(zhì)量案淋。

·?代碼覆蓋率高不能說明代碼質(zhì)量高,但是反過來看,代碼覆蓋率低蹈丸,代碼質(zhì)量不會(huì)高到哪里去思瘟,可以作為測試自我審視的重要工具之一够话。

JaCoCo是一個(gè)免費(fèi)的Java代碼覆蓋率庫工具女嘲,由EclEmma團(tuán)隊(duì)根據(jù)多年來使用和集成現(xiàn)有庫的經(jīng)驗(yàn)創(chuàng)建的停蕉,其官網(wǎng)地址為https://www.eclemma.org/jacoco/拒啰。不論開發(fā)和測試都會(huì)有針對(duì)自己寫的單元測試用例屈尼,統(tǒng)計(jì)覆蓋了多少業(yè)務(wù)代碼這樣的訴求甲捏,另外一個(gè)訴求就是統(tǒng)計(jì)結(jié)果能夠自動(dòng)生成HTML報(bào)告,下面我就通過maven化漆、junit付材、jacoco來實(shí)現(xiàn)以上這兩點(diǎn)訴求。

首先需要在maven的pom配置文件中增加如下3個(gè)插件:

maven-surefire-plugin、jacoco-maven-plugin、maven-compiler-plugin。

這3個(gè)插件分別對(duì)應(yīng)的功能是:

maven-surefire-plugin這個(gè)插件是執(zhí)行junit、testng框架單元測試用例時(shí)使用的;

jacoco-maven-plugin這個(gè)插件是統(tǒng)計(jì)單元測試用例覆蓋業(yè)務(wù)代碼率時(shí)使用的;

maven-compiler-plugin這個(gè)插件是按照其配置的jdk版本來編譯java源碼時(shí)使用的。

以下3張截圖是具體的配置內(nèi)容,大家也可以根據(jù)最近的版本更新替換版本號(hào)。


接下來需要對(duì)業(yè)務(wù)代碼編寫單元測試用例缨恒,分別對(duì)應(yīng)如下兩張截圖萧锉,


免費(fèi)領(lǐng)取?碼同學(xué)軟件測試?課程筆記+超多學(xué)習(xí)資料+完整視頻+最新面試題鲫凶,可以轉(zhuǎn)發(fā)文章?+?私信「碼同學(xué)666」獲取資料


需要注意的是禀崖,測試用例的包名要和業(yè)務(wù)代碼的包名要保持一致,否則JaCoCo無法統(tǒng)計(jì)覆蓋率螟炫。

然后執(zhí)行如下3條maven命令進(jìn)行清除波附、插件安裝、測試


然后在target\site\jacoco目錄下可見本輪次單元測試結(jié)果報(bào)告的HTML格式結(jié)果昼钻。

打開JaCoCo的html格式報(bào)告如下所示掸屡,統(tǒng)計(jì)整體的覆蓋率信息,單擊包名鏈接然评,可以看到統(tǒng)計(jì)的詳情信息仅财。


值得注意的是App這個(gè)業(yè)務(wù)代碼類中只有1個(gè)main方法,但是統(tǒng)計(jì)的方法數(shù)是2個(gè)碗淌,


這個(gè)統(tǒng)計(jì)是不是不準(zhǔn)確盏求?統(tǒng)計(jì)是準(zhǔn)確的,App這個(gè)類中還有一個(gè)默認(rèn)構(gòu)造函數(shù)贯莺,雖然沒有展示出來风喇,如何證明那另外1個(gè)方法是構(gòu)造函數(shù)呢?我們可以在App的測試類AppTest中增加構(gòu)造函數(shù)的測試用例缕探,具體如下截圖所示魂莫。


再次執(zhí)行單元測試,生成的JaCoCo單測覆蓋率報(bào)告如下所示爹耗,Missed錯(cuò)失數(shù)由之前的2個(gè)變成0個(gè)耙考。證明JaCoCo統(tǒng)計(jì)的方法中涵蓋自動(dòng)生成的默認(rèn)構(gòu)造函數(shù)谜喊。Cov.這列是統(tǒng)計(jì)指定業(yè)務(wù)的單元測試用例整體覆蓋率的;而Missed

Branches Cov.這列是針對(duì)有分支情況下統(tǒng)計(jì)的單元測試用例覆蓋業(yè)務(wù)代碼分支的覆蓋率倦始,如果某個(gè)業(yè)務(wù)類的Missed Branches

Cov.分支覆蓋率為n/a則說明這個(gè)業(yè)務(wù)類中沒有分支情況斗遏,才會(huì)出現(xiàn)n/a這樣結(jié)果,如下截圖中App鞋邑、CoCo這兩個(gè)業(yè)務(wù)類中就沒有分支代碼诵次,因此Missed

Branches

Cov.覆蓋率統(tǒng)計(jì)結(jié)果為n/a,可以理解為這兩個(gè)業(yè)務(wù)類不需要統(tǒng)計(jì)分支覆蓋率枚碗;其他各個(gè)列逾一,在實(shí)際工作過程中不是重點(diǎn)關(guān)注的覆蓋率統(tǒng)計(jì)項(xiàng)。



END

免費(fèi)領(lǐng)取碼同學(xué)軟件測試課程筆記+超多學(xué)習(xí)資料+學(xué)習(xí)完整視頻肮雨,可以關(guān)注我們公眾號(hào)哦:自動(dòng)化軟件測試

本文著作權(quán)歸作者所有遵堵,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怨规,一起剝皮案震驚了整個(gè)濱河市陌宿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌波丰,老刑警劉巖壳坪,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呀舔,居然都是意外死亡弥虐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門媚赖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霜瘪,“玉大人,你說我怎么就攤上這事惧磺∮倍裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵磨隘,是天一觀的道長缤底。 經(jīng)常有香客問我,道長番捂,這世上最難降的妖魔是什么个唧? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮设预,結(jié)果婚禮上徙歼,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好魄梯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布桨螺。 她就那樣靜靜地躺著,像睡著了一般酿秸。 火紅的嫁衣襯著肌膚如雪灭翔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天辣苏,我揣著相機(jī)與錄音肝箱,去河邊找鬼。 笑死稀蟋,一個(gè)胖子當(dāng)著我的面吹牛狭园,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糊治,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罚舱!你這毒婦竟也來了井辜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤管闷,失蹤者是張志新(化名)和其女友劉穎粥脚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體包个,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刷允,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碧囊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片树灶。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糯而,靈堂內(nèi)的尸體忽然破棺而出天通,到底是詐尸還是另有隱情,我是刑警寧澤熄驼,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布像寒,位于F島的核電站,受9級(jí)特大地震影響瓜贾,放射性物質(zhì)發(fā)生泄漏诺祸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一祭芦、第九天 我趴在偏房一處隱蔽的房頂上張望筷笨。 院中可真熱鬧,春花似錦、人聲如沸奥秆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽构订。三九已至侮叮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悼瘾,已是汗流浹背囊榜。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亥宿,地道東北人卸勺。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像烫扼,于是被迫代替她去往敵國和親曙求。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容