package
cobertura
生成代碼覆蓋率文件以后,通過Jenkins SonarQube Scanner或者執行 mvn sonar:sonar 將該文件上傳至Sonar 服務器,就可以解析該文件,生成圖形化的界面
集成測試覆蓋率
測試人員執行集成測試測試用例時(包括手工執行和自動化執行),我們需要代碼覆蓋率來發現測試用例設計的遺漏,及時補充用例來覆蓋未被覆蓋到的代碼。
被測系統,在服務啟動時,都會通過javaagent的方式做On-The-Fly插樁
被測服務器啟動之后,測試人員手工執行測試用例,Jacoco Agent會實時將代碼覆蓋率信息傳輸給Jacoco Prase Server,該服務器保存了被測代碼源文件以及編譯后的目標文件,服務器會結合源文件、目標文件以及代碼覆蓋率信息生成圖表化的覆蓋率文件。
自動化執行測試用例完成之后,獲取代碼覆蓋率信息,通過Jenkins Jacoco插件解析,獲取圖表化的覆蓋率文件。
獲取代碼覆蓋率報告之后,結合git獲取的本次代碼變動信息,得到測試用例覆蓋的變動文件的測試覆蓋率統計信息。來分析是否有由于測試用例設計遺漏導致的代碼沒有覆蓋或者是開發的無效代碼導致該代碼無法被覆蓋,如果測試用例設計有所遺漏,可以對照的增加相應的用例;如果是無效代碼可以刪除。
自動化集成流程
1. 業務開發完成之后,開發人員做單元測試,單元測試完成之后,保證單元測試全部通過同時單元測試代碼覆蓋率達到一定程度(這個需要開發和測試約定,理論上越高越好),開發提測。
2. 測試人員根據測試用例進行測試(包括手工測試和自動化測試),結合git獲取本次變動代碼的覆蓋率信息。行覆蓋率需達到100%,分支達到50%以上,這個需要具體場景具體分析。
3. 測試通過之后,代碼合并至主干,進行自動化回歸。
4. 回歸測試通過之后,代碼可以上線。
基于這套流程,我們可以將單元測試代碼覆蓋率和集成測試代碼覆蓋率整合到持續集成流程中,如果代碼覆蓋率達不到我們設置的某個值時,可以終止流程繼續下去獲取需要人工確認之后,繼續流程。
總結
本文主要介紹了Java代碼覆蓋率統計原理以及結合有贊測試的工程實踐介紹了代碼覆蓋率該如何應用的實際測試中。不管是白盒測試還是黑盒測試,代碼覆蓋率統計都是必不可少的一環,它可以直接反映本次測試的遺漏點(不是100%反映)。結合到自動發布場景也是一個較好地衡量指標。
最后再重申一下本文開篇的觀點:
代碼覆蓋率統計是用來發現沒有被測試覆蓋的代碼
代碼覆蓋率統計不能完全用來衡量代碼質量
原文轉自: http://tech.youzan.com/code-coverage/