基于jacoco的自动化代码覆盖率测试方法

发表于:2020-5-26 08:36

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

 作者:侯亚楠    来源:51Testing软件测试网原创

  如何来衡量测试的质量呢?很多时候我们容易走入一个误区,那就是只统计测试案例数量,案例数量越多代表测试质量越好,但测试案例数量与测试质量并不是对等关系的,所以并不存在代表关系。分析代码覆盖率可以从另一个视角来对测试质量进行评估。Jacoco(Java Code Coverage)就是一种代码覆盖率的工具,它可以分析出代码的哪些部分被测到了,那些部分未被测试案例覆盖到,本文将通过一个实战小案例来为大家讲解一下Jacoco的使用与效果。
  一、相关术语介绍:
  JDK(Java Development Kit)是Java的开发工具包,是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库;
  Eclipse:一种常用的java开发工具。
  EclEmma:一个基于 JaCoCo 的 Eclipse 插件,使用它开发人员可以直观地看到单元测试的覆盖情况。
  代码覆盖:测试过程中根据需求文档和设计文档编写测试用例、执行测试;为了更加全面的覆盖,我们可能还需要理解被测程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行情况,这个时候我们的测试执行情况就以代码覆盖率来衡量,可以理解为白盒覆盖。
  二、环境准备
  2.1 EclEmma插件安装
  Eclipse下依次点击 Help->Eclipse Marketplace->搜索EclEmma:
  安装成功后,在Window->Show View->Other中找到Coveage可以打开界面:
  2.2 编写源码和测试案例
  2.2.1 新建一个java工程
  2.2.2 在工程中新建类
  (1)新建一个源码的类:


  注意:package包的名字要与工程名字一致;新建class类的名字要与java文件名字一致;
  (2)新建一个测试案例的类:
  2.2.4 给工程添加单元测试需要的jar包
  这里我采用的是Junit的jar包,下载地址为:
  https://blog.csdn.net/qq_38712932/article/details/85099192
  下载后将jar包添加到工程下:

  添加后如图所示:
  2.3 执行测试案例
  在工程下右键选择Coverage As -> JUnit Test:
  2.4 查看测试结果
  在执行结果中的Coverage项中可以看到测试结果:
  代码覆盖情况如下:可以看到源码中执行到的代码和未执行的代码。其中,红底色代码为测试未覆盖的代码?;黄色为测试部分覆盖(通常是if和switch);绿色为测试已覆盖。
  利用jacoco还可以生成图表报告文件,供管理者或工程师们方便的查看测试覆盖情况。File->Export->Java->Coverage Report->选择需要生成报告的测试源以及目标地址,即可生成图标报告。


  生成报告如下:
  其中:Instructions表示指令级,Missed Instructions表示未执行的指令;
  Branches表示分支,Jacoco 对所有的 if 和 switch 指令计算了分支覆盖率;
  Lines:该项指数在有调试信息的情况下计算,
  Methods:表示抽象方法,若一个方法至少被执行了一条指令,就认为它被执行过。
  Classes:表示类,每个类中只要有一个方法被执行,这个类就被认定为被执行。
  三、总结
  我们来总结一下:使用Jacoco测试代码覆盖率工具可以:
  (1)分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?需求/设计不够清晰?测试设计的理解有误?工程方法应用后的造成的策略性放弃等等,之后可以进行补充测试用例设计。
  (2)检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。
  (3)代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,那么代码质量基本上没有什么保障可言,所以Jacoco可以作为测试工程师自我审视工作的重要工具之一。


      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号