测试覆盖率工具:EclEmma

发表于:2016-9-20 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:明-Ming    来源:51Testing软件测试网采编

  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、跑后结果
  
图4 标注源代码和Coverage视图
  5.4、导出HTML报告
  如何导出:
  要导出的session (session:一次测试覆盖率交互活动)
  选择报告的类型(HTML/XML/Text/EMMA session)
  存放位置
  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插件
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号