基于jacoco的集成測試及回歸測試覆蓋率

前言

代碼覆蓋率是用來干什么的?得到之后呢?

這是昨天隔壁小伙問我的問題,仔細(xì)想了一想。代碼覆蓋率只是對于測試質(zhì)量評估的某一個(gè)維度而已。并不是什么指標(biāo)等硬性的要求。大多數(shù)項(xiàng)目其實(shí)都用上了單元測試的代碼覆蓋率,java項(xiàng)目的jacoco, js下的karma等工具也也來越容易使用。在我這有限的工作經(jīng)驗(yàn)中也經(jīng)歷過多次對于代碼覆蓋率的討論,尤其是UT的test coverage。在java項(xiàng)目中,尤其是事務(wù)腳本類的web結(jié)構(gòu)代碼,代碼覆蓋率就更加無法代表代碼質(zhì)量。

換個(gè)角度去看,測試覆蓋率可以幫助找到?jīng)]有被測試到case,這樣反而意義更大。這也是本文提到集成測試和回歸測試的覆蓋率的起因。

代碼覆蓋率工具

Jacoco是現(xiàn)在java項(xiàng)目常用的覆蓋率工具,jacoco的代碼覆蓋粒度包括了 方法,分支,指令。

jacoco插莊

這是幾種java代碼覆蓋率工具(jacoco, emma, Cobertura)使用的插莊方式,
本文要說的是基于byte code的植入方式。jacoco使用的是基于javaagent 的on-the-fly模式。
這種方式相比于offline無需修改代碼,并且可以在程序運(yùn)行時(shí)dump覆蓋率報(bào)告,但是需要開啟額外的代理。

JacocoAgent

jacoco的on-the-fly 模式是基于javaagent。需要在啟動程序的jvm參數(shù)中指定-javaagent 的jar文件,也就是存在機(jī)器某個(gè)位置的jacocoAgent.jar 文件。

jacocoAgent的報(bào)告dump方式有三種:

  • local file
    在jvm參數(shù)值配置output路徑
    -javaagent:[yourpath/]jacocoagent.jar=output=/user/path/jacoco.exec

  • TCP server
    配置address和port,然后使用jacocoant,dump jacoco報(bào)告。

  • TCP client
    配置address和port,然后使用jacocoant,數(shù)據(jù)直接sync到remote端口。

dump報(bào)告

在server使用jacocoAgent啟動后,jacoco會一直檢測啟動后這段時(shí)間內(nèi)的server運(yùn)行鎖執(zhí)行過的程序生成覆蓋率報(bào)告。
jacocoAgent默認(rèn)會在jvm stop是自動dump報(bào)告數(shù)據(jù)。但是也可以通過Ant Tasksjacoco mvn plugin 來dump。
具體使用可參照文檔。

Refrence:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 白盒測試又稱結(jié)構(gòu)測試、透明盒測試、邏輯驅(qū)動測試或基于代碼的測試。白盒測試是一種測試用例設(shè)計(jì)方法,盒子指的是...
    yongliu1229閱讀 2,809評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,951評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342
  • 很多人都會像我一樣,遇到能說會道的銷售,覺得他說得有道理就相信了。我們這種說好聽點(diǎn)是單純,說直接點(diǎn)就是易被騙、立場...
    甲大姐閱讀 1,226評論 0 0
  • 攻擊的原因 神經(jīng)學(xué)和化學(xué)方面的原因。 1.睪丸素會影響人們的攻擊性,相反攻擊性行為也會增加睪丸素的釋放。 1.1由...
    Jason_Z閱讀 343評論 0 0