既然測試覆蓋率不能證明代碼是正確的,那么它存在又有什么意義了?有過開發,測試經驗的同學都能體會到,覆蓋率能夠幫助我們發現代碼的一些問題,如下:

  1、被測系統中有沒有存在代碼,沒有被當前的測試用例集所覆蓋的

  2、找出冗余的代碼,提高開發質量

  3、可以及時反饋當前系統的測試質量,間接衡量測試的質量。

  HOW

  介紹一個工具:

  1、Cobertura的使用步驟:

    a)插樁: 通過修改指定class文件的字節碼來插入統計標簽,插樁信息會保存在cobertura.ser中

    b)部署 :  將插樁完的jar包重新打包,替換掉原來的包

    c)執行測試件 : 需確保所調用服務與所部署環境的正確對應

    d)生成報告 : 通過腳本結束服務, 讀取cobertura.ser生成報告

  2、需要掌握的插樁命令

    ?includeClasses     需要包括的類名

    ?excludeClasses    需要排除的類名

    ?ignoreTrivial         將set方法,get方法,構造方法排除在統計范圍之外

  3、覆蓋率報告

  生成報告的命令: sh cobertura_war.sh report

  4、使用工具前,應該知道的事

    A)你要統計的應用類型: jar包,war包或者是ear包?

    B)如果是web應用,那么所用的java容器是jetty還是jboss? 啟動目錄在哪里?

    C)閱讀應用的啟動腳本,確定它是如何工作的,使用的是哪個包

    D)請確定你需要統計覆蓋率的范圍

    E)是否需要忽略掉對一些模型的無關代碼的統計,例如模型的set,get,構造方法

  當然還有很多其他的工具,不過目前在用的是Cobertura,相關的工具可以去google去搜搜!