測試覆蓋率工具:EclEmma TestNG 入門教程
阿新 • • 發佈:2018-12-17
目錄
1 測試覆蓋率實現技術
2 EclEmma介紹
3 EclEmma測試覆蓋率指標
4 EclEmma安裝
5 示例專案介紹
5.1 建立專案
5.2 用Coverage as TestNG Suite跑用例
5.3 跑後結果
5.4 匯出HTML報告
5.5 匯入匯出合併覆蓋率Session
5.6 測試引用的jar包的覆蓋率
1 測試覆蓋率實現技術
- Instrumentation:程式碼注入,在產品程式碼的關鍵位置插入統計程式碼,從而獲得測試覆蓋率資料
- Class Instrumentation: 把統計程式碼插入編譯好的.class檔案
- Source Instrumentation:把統計程式碼插入原始碼並編譯成新的.class檔案
- Custom JVM:在JVM中把統計程式碼插入.class。測試覆蓋率分析可以在JVM執行測試程式碼的過程中完成
2 EclEmma介紹
- 一個優秀的開源軟體測試工具
- eclipse的一個外掛
- 能夠對由 Java 語言編寫的程式進行覆蓋測試
- 能夠在工作平臺中啟動
- 直接對程式碼覆蓋進行分析
- 覆蓋結果將立即被彙總並在Java原始碼編輯器中高亮顯示
- 也可程式執行的結果生成詳盡的覆蓋測試報告
- 可以結合JUnit、TestNG使用
- 工作原理:Class Instrumentation
3 EclEmma測試覆蓋率指標
- 行覆蓋率: 部分行覆蓋:a>b?a:b
- 基本語句塊覆蓋率: 基本語句塊:沒有if-else分支的程式碼區域
- 類覆蓋率: 由JVM載入並初始化
- 方法覆蓋率: 第一個基本語句塊被執行
4 EclEmma安裝
- 啟動eclipse -> 點選Help選單 -> Install New Software,在彈出的對話方塊中,點選Add
- 輸入Name,例如EclEmma。輸入Location:http://update.eclemma.org/
- 安裝後重新啟動eclipse,如果成功安裝,工具欄上會出現一個新的按鈕,如圖1所示
圖1 EclEmma按鈕
5 示例專案介紹
下面通過專案介紹如何在使用了TestNG測試框架的專案中的使用EclEmma測試覆蓋率
TestNG請參考: TestNG 入門教程
5.1 建立專案
專案中使用TestNG測試框架,包含被測類'Calculator'和測試類'CalculatorTest'。
圖2 測試結構
5.2 用Coverage as TestNG Suite跑用例
圖3 Coverage as TestNG Suite
5.3 跑後結果
圖5 標註原始碼和Coverage檢視
5.4 匯出HTML報告
如何匯出:- 要匯出的session (session:一次測試覆蓋率互動活動)
- 選擇報告的型別(HTML/XML/Text/EMMA session)
- 存放位置
圖7 HTML報告
HTML報告可以逐層展開,點選方法還可以看到程式碼的覆蓋情況。
列名含義:
- missed Instructions程式碼覆蓋率,
- Missed Branches邏輯分支覆蓋率,
- Missed Cxty判斷執行數,
- missed Lines程式碼行數,
- Methods方法個數。
5.5 匯入匯出合併覆蓋率Session
既可以匯出session,也可以匯入session,還可以合併session,這樣,可以將多次測試覆蓋率的結果進行合併
圖8 合併Session
5.6 測試引用的jar包的覆蓋率
圖9 測試引用的jar包的覆蓋率
其他Eclipse覆蓋率外掛
EclEmma、Clover與Cobertura外掛