一、概述:
作為一個合格的測試人員,保證產品的軟件質量是其工作首要目標,為了這個目標,測試人員常常會通過很多手段或工具來加以保證,覆蓋率就是其中一環比較重要的環節。
通常我們會將測試覆蓋率分為兩個部分,需求覆蓋率、代碼覆蓋率。
需求覆蓋:指的是測試人員對需求的了解程度,根據需求的可測試性來拆分成各個子需求點,來編寫相應的測試用例,最終建立一個需求和用例的映射關系,以用例的測試結果來驗證需求的實現,可以理解為黑盒覆蓋。
代碼覆蓋:為了更加全面的覆蓋,我們可能還需要理解被測程序的邏輯,需要考慮到每個函數的輸入與輸出,邏輯分支代碼的執行情況,這個時候我們的測試執行情況就以代碼覆蓋率來衡量,可以理解為白盒覆蓋。
以上兩者完全可以相輔相成,用代碼覆蓋結果反向的檢查需求覆蓋(用例)的測試是否充分完整
二、工具介紹:
市場上java主要代碼覆蓋率工具:EMMA、JaCoCo。
JaCoCo優勢:
(1) JaCoCo支持分支覆蓋、引入了Agent模式。
(2) EMMA官網已經不維護了,JaCoCo是其團隊開發的,可以理解為一個升級版。
(3) JaCoCo社區比較活躍,官網也在不斷的維護更新。
Jacoco官網地址:http://www.eclemma.org/jacoco/
Jacoco是一個開源的覆蓋率工具。Jacoco可以嵌入到Ant 、Maven中,並提供了EclEmma Eclipse插件,也可以使用JavaAgent技術監控Java程序。很多第三方的工具提供了對Jacoco的集成,如sonar、Jenkins等。
Jacoco包含了多種尺度的覆蓋率計數器,包含指令級覆蓋(Instructions,C0coverage),分支(Branches,C1coverage)、圈復雜度(CyclomaticComplexity)、行覆蓋(Lines)、方法覆蓋(non-abstract methods)、類覆蓋(classes)
三、測試代碼覆蓋示例如下:
1.自己打包一個demo項目jar包;
2.下載jacoco相關jar包,解壓后把jacoco相關jar放到demo項目目錄下:
3.啟動demo服務,在項目目錄下執行如下命令:
java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=9100,address=127.0.0.1 -jar target\demo001-0.0.1-SNAPSHOT.jar啟動
啟動demo項目成功:
4.使用postman執行case
5、通過jacococli.jar導出覆蓋率記錄的exec文件
java -jar jacococli.jar dump --address 127.0.0.1 --port 9100 --destfile ./jacoco.exec --reset
6、通過jacococli.jar生成覆蓋率報告
Java -jar jacococli.jar report ./jacoco.exec --classfiles target/classes --sourcefiles src/main/java --encoding utf-8 --html jacoReport
7、到jacoReport目錄,點擊index.html右鍵瀏覽器打開,查看報告是否正確生成
8.親測總結,參考原文地址:https://www.cnblogs.com/wang1001/p/12627198.html