1. 程式人生 > >測試覆蓋率工具:EclEmma TestNG 入門教程

測試覆蓋率工具:EclEmma TestNG 入門教程

目錄

測試覆蓋率實現技術
EclEmma介紹
EclEmma測試覆蓋率指標
EclEmma安裝
示例專案介紹
  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安裝


 返回

  1. 啟動eclipse -> 點選Help選單 -> Install New Software,在彈出的對話方塊中,點選Add
  2. 輸入Name,例如EclEmma。輸入Location:http://update.eclemma.org/
  3. 安裝後重新啟動eclipse,如果成功安裝,工具欄上會出現一個新的按鈕,如圖1所示

 

圖1 EclEmma按鈕

5 示例專案介紹


 返回

下面通過專案介紹如何在使用了TestNG測試框架的專案中的使用EclEmma測試覆蓋率

TestNG請參考: TestNG 入門教程

5.1 建立專案

專案中使用TestNG測試框架,包含被測類'Calculator'和測試類'CalculatorTest'。

原始碼:TestngAndEclEmmaDemo.zip

圖2 測試結構

5.2 用Coverage as TestNG Suite跑用例

圖3 Coverage as TestNG Suite

 

5.3 跑後結果

圖5 標註原始碼和Coverage檢視 

 

5.4 匯出HTML報告 

如何匯出:
  1. 要匯出的session (session:一次測試覆蓋率互動活動)
  2. 選擇報告的型別(HTML/XML/Text/EMMA session)
  3. 存放位置 
 圖6 匯出報告 

圖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外掛