既然测试覆盖率不能证明代码是正确的,那么它存在又有什么意义了?有过开发,测试经验的同学都能体会到,覆盖率能够帮助我们发现代码的一些问题,如下:

  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去搜搜!