软件测试|代码覆盖率

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

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 的分支。

在这里插入图片描述

在这里插入图片描述

相关文章
|
5月前
|
运维 监控 测试技术
漫谈测试策略
本文以团队内约定俗成的测试策略概念为主题,总结了一些个人经验和思考结论,可能对其他业务/团队而言,存在术语定义不一致,希望对大家有参考意义,欢迎探讨,感谢理解。
|
2月前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
5月前
|
测试技术 持续交付 网络安全
测试策略的实现
测试策略的实现
51 0
|
7月前
|
测试技术 Android开发 流计算
软件测试之 单元测试
软件测试之 单元测试
47 2
|
8月前
|
Web App开发 测试技术 数据安全/隐私保护
软件测试: 测试用例
软件测试: 测试用例
|
8月前
|
Java 测试技术 开发者
深入理解与应用单元测试:软件质量的守护者
【4月更文挑战第30天】 在现代软件开发过程中,单元测试作为保障代码健康的重要环节,其地位日益凸显。本文将探讨单元测试的核心概念、实施单元测试的重要性以及如何高效地设计并执行单元测试。通过实例分析,我们将揭示单元测试在确保软件产品质量和加速开发周期中的关键作用。
|
8月前
|
安全 测试技术 持续交付
深入探索白盒测试:提升软件质量的关键步骤
【4月更文挑战第9天】在软件开发的生命周期中,确保代码的质量和性能至关重要。白盒测试,作为软件测试的一个核心分支,提供了一种通过检查内部结构、设计和逻辑来验证程序正确性的方法。本文将深入探讨白盒测试的原理、方法和最佳实践,旨在帮助开发者和测试工程师提高测试效率,从而确保软件产品的可靠性与稳定性。通过对不同白盒测试技术的比较分析,我们将揭示如何更有效地利用这些技术来发现和修复潜在的缺陷。
|
8月前
|
敏捷开发 Devops 测试技术
深入理解与应用单元测试:提升软件质量的关键步骤
【2月更文挑战第19天】 本文将深入探讨单元测试在软件开发周期中的作用,分析其对提升软件质量的重要性,并介绍如何有效地实施单元测试。通过阐述单元测试的基本原理、关键实践和常见问题解决策略,旨在为软件开发者提供一套系统的单元测试方法论,以支持更健壮、可靠和可维护的软件产品的构建。
|
8月前
|
测试技术 持续交付
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
|
8月前
|
测试技术
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)