• 测试覆盖率工具:EclEmma


    测试覆盖率工具:EclEmma

    2016-08-26

    目录

    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安装


     返回

    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插件

  • 相关阅读:
    文档API
    vi编辑器常用方法
    storm实战入门一
    redis教程
    为redis分配一个新的端口
    Lucene分页查询
    Lucene搜索方式大合集
    HBase Scan类用法
    java.util.Queue用法
    Makefile中预定义变量
  • 原文地址:https://www.cnblogs.com/Ming8006/p/5811425.html
Copyright © 2020-2023  润新知