# 背景
集團的代碼覆蓋率平台因為網絡問題無法使用,只能自己研究下。
覆蓋率是衡量自動化用例效果產品的一個指標,但只是一個輔助指標,覆蓋率高並不意味着質量好,但覆蓋率低卻能說明一些問題,
# 對比
覆蓋率工具的對比,直接引用資料:
有贊團隊的博客: https://tech.youzan.com/code-coverage/
# 理解
1. 結合業務形態,被測服務不能停止服務;
2. 通過javaagent方式去啟動jacoco;
3. javaagent的方式可以用file,tcpserver、tcpclient三種模式,常用的是tcpserver格式
4. 掛載javagent后,可以利用ip:port來跟javaagent進行網絡交互,生成exec文件,生成報告;
# 細節
1. jacoco官網:https://www.eclemma.org/jacoco/ 上去下載agent.jar包;
2. javaagent格式:
-javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]
更多參數:https://www.jacoco.org/jacoco/trunk/doc/agent.html
實際例子:-javaagent:/home/tools/jacocoagent.jar=includes=*,output=tcpserver,address=xxx.xxx.xx.xx,port=6300,append=true
3. 生成exec文件不局限於ant工具,其實底層還是通過tcp連接去訪問;
4. 生成exce后需要解析成報告,比較麻煩,要有編譯后的class文件也有要源碼。最理解的狀態應該是從服務器拿回本地來操作;
5. 實際落地: 被測服務掛載javaagent --》執行自動化用例 --》 生成exec文件 --》 解析生成報告(被測服務器上生成exec文件)
# 疑問
1. jacoco只支持時間段的代碼覆蓋率的統計,並不能細化到哪個方法/接口;
2. javaagent的tcpserver和tcpclient的區別是什么?翻閱文檔基本上都是tcpserver的,沒有用tcpclient的