软件测试|代码覆盖率

简介: 软件测试|代码覆盖率

JaCoCo,即 Java Code Coverage Library,它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建的一个开源的代码覆盖率工具,支持 Java 和 Kotlin;支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖的代码部分;同时它也能检查程序中的废代码和不合理的逻辑提高质量;JaCoCo 能本地进行代码的检查,也可以把它与持续集成工具 Jenkins 进行集成,这样就能在代码提交后自动对提交的代码进行覆盖率的验证,保证提交代码的质量。

环境准备

  • Jenkins 服务
  • 执行代码覆盖率的节点机器,此机器上需要部署好 Java 和 Maven 工具
  • Jenkins 上需要安装 JaCoCo Plugin 插件
  • 被测的项目代码 https://gitee.com/ceshiren/iTest.git
  • Junit 单元测试框架

项目的配置

  1. 在 Maven 项目的配置 pom.xml 文件中配置 jacoco-maven-plugin 工具

在这里插入图片描述

  1. 在 jenkins 中建立一个自由风格的项目

在这里插入图片描述

  1. 配置好运行的节点机器,此机器是环境准备中的节点机器。

在这里插入图片描述

  1. 配置代码源,将被测项目代码的 git 地址配置到此处

在这里插入图片描述

  1. 在构建(Build)中点击增加构建步骤(Add build step),构建步骤中选择执行 shell(Execute shell)

在这里插入图片描述

  1. 在构建后步骤(Post-build Actions)中添加输出信息的配置,选择 Record JaCoCo Coverage report 可以保持默认

在这里插入图片描述

执行job

  1. 手工执行 job 完成后,在 job 的首页上会展示一个代码覆盖率扫描的趋势图。其中 line covered 表示代码的覆盖,line missed 表示代码的丢失。
  2. 点击趋势图能进入详情的页面 (M 表示丢失,C 表示已覆盖)。其中每个字段的含义为:

在这里插入图片描述

  1. instruction:字节码指令覆盖率
  2. branch:分支代码覆盖率
  3. complexity:圈复杂度覆盖率
  4. line:行覆盖率
  5. method:方法覆盖率
  6. class:类覆盖率

在这里插入图片描述

  1. 在包的信息展示中还能继续往详细信息点击,查看更加详细的覆盖情况,未覆盖的代码会被标识成红色。

在这里插入图片描述

在这里插入图片描述

  1. 从上个步骤上看,有一个长度大于 10 的分支没有覆盖到,此时给项目的测试代码新增一个 case 后提交代码到 git 上。

在这里插入图片描述

  1. 此时重新构建任务后,将会发现前面未被覆盖的代码行已经实现了覆盖。

在这里插入图片描述

  1. 在项目的 main 函数中增加一些无用代码,重新构建后看结果,此时有新增了两行代码未被覆盖。从常识上分析两个整数相乘是不会抛错,所以此时的 try 动作是无用代码,不会进入到 catch 的分支。

在这里插入图片描述

在这里插入图片描述

相关文章
|
Java 测试技术 数据库连接
软件测试实验二 白盒测试
软件测试实验二 白盒测试
181 0
|
20天前
|
测试技术
软件测试中的探索性测试方法
在软件开发周期中,测试环节扮演着至关重要的角色。本文将深入探讨一种灵活而高效的测试方法——探索性测试。我们将通过具体实例分析其实施过程,并讨论如何通过这种方法提高软件质量和测试效率。最后,我们提出一个开放性问题,邀请读者思考探索性测试在他们工作中的实际应用和潜在价值。 【7月更文挑战第31天】
|
2月前
|
测试技术 Android开发 流计算
软件测试之 单元测试
软件测试之 单元测试
22 2
|
3月前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试工具及其应用
传统的软件测试流程需要大量的人工投入,其效率低下且容易出现遗漏。而自动化测试工具的出现极大地提高了软件测试的效率和精度。本文将介绍几种常见的自动化测试工具及其应用,分析其优势和不足,并探讨在实际项目中的应用场景。
|
3月前
|
安全 测试技术 持续交付
深入探索白盒测试:提升软件质量的关键步骤
【4月更文挑战第9天】在软件开发的生命周期中,确保代码的质量和性能至关重要。白盒测试,作为软件测试的一个核心分支,提供了一种通过检查内部结构、设计和逻辑来验证程序正确性的方法。本文将深入探讨白盒测试的原理、方法和最佳实践,旨在帮助开发者和测试工程师提高测试效率,从而确保软件产品的可靠性与稳定性。通过对不同白盒测试技术的比较分析,我们将揭示如何更有效地利用这些技术来发现和修复潜在的缺陷。
|
3月前
|
敏捷开发 Devops 测试技术
深入理解与应用单元测试:提升软件质量的关键步骤
【2月更文挑战第19天】 本文将深入探讨单元测试在软件开发周期中的作用,分析其对提升软件质量的重要性,并介绍如何有效地实施单元测试。通过阐述单元测试的基本原理、关键实践和常见问题解决策略,旨在为软件开发者提供一套系统的单元测试方法论,以支持更健壮、可靠和可维护的软件产品的构建。
|
3月前
|
测试技术 持续交付
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
|
3月前
|
测试技术
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
|
3月前
|
测试技术 UED
什么是软件测试领域的 A/B 测试
什么是软件测试领域的 A/B 测试
|
10月前
|
测试技术
代码覆盖率
  经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。”   Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。