既然測(cè)試覆蓋率不能證明代碼是正確的,那么它存在又有什么意義了?有過開發(fā),測(cè)試經(jīng)驗(yàn)的同學(xué)都能體會(huì)到,覆蓋率能夠幫助我們發(fā)現(xiàn)代碼的一些問題,如下:

  1、被測(cè)系統(tǒng)中有沒有存在代碼,沒有被當(dāng)前的測(cè)試用例集所覆蓋的

  2、找出冗余的代碼,提高開發(fā)質(zhì)量

  3、可以及時(shí)反饋當(dāng)前系統(tǒng)的測(cè)試質(zhì)量,間接衡量測(cè)試的質(zhì)量。

  HOW

  介紹一個(gè)工具:

  1、Cobertura的使用步驟:

    a)插樁: 通過修改指定class文件的字節(jié)碼來插入統(tǒng)計(jì)標(biāo)簽,插樁信息會(huì)保存在cobertura.ser中

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

    c)執(zhí)行測(cè)試件 : 需確保所調(diào)用服務(wù)與所部署環(huán)境的正確對(duì)應(yīng)

    d)生成報(bào)告 : 通過腳本結(jié)束服務(wù), 讀取cobertura.ser生成報(bào)告

  2、需要掌握的插樁命令

    ?includeClasses     需要包括的類名

    ?excludeClasses    需要排除的類名

    ?ignoreTrivial         將set方法,get方法,構(gòu)造方法排除在統(tǒng)計(jì)范圍之外

  3、覆蓋率報(bào)告

  生成報(bào)告的命令: sh cobertura_war.sh report

  4、使用工具前,應(yīng)該知道的事

    A)你要統(tǒng)計(jì)的應(yīng)用類型: jar包,war包或者是ear包?

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

    C)閱讀應(yīng)用的啟動(dòng)腳本,確定它是如何工作的,使用的是哪個(gè)包

    D)請(qǐng)確定你需要統(tǒng)計(jì)覆蓋率的范圍

    E)是否需要忽略掉對(duì)一些模型的無關(guān)代碼的統(tǒng)計(jì),例如模型的set,get,構(gòu)造方法

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