Skip to content

代码覆盖率

代码覆盖率集成

介绍

代码覆盖率集成(Code Coverage Integration)是指在软件开发和测试过程中,将代码覆盖率分析工具与开发环境、持续集成(CI)和持续交付(CD)流程相结合的实践。其目的在于评估和提高代码的测试覆盖率,从而确保开发团队编写的测试用例能够有效地验证软件的功能和逻辑。

针对JAVA代码-Jacoco代码覆盖率检查持续集成

  • 开源代码覆盖率工具,支持JAVAKotlin
  • 计算测试代码对项目的覆盖情况
  • 定位测试未覆盖到的代码部分,帮助提升测试有效性
  • 检查程序中的废代码,反推代码设计过程中的不合理逻辑,提升代码质量
  • 测试代码覆盖率高低是衡量代码质量的因素之一
  • 原理:JAVA探针,字节码插桩技术

代码覆盖率统计维度

  • 指令(instruction)
  • 分支(Branch)
  • 圈复杂度(Cyclomatic Complexity)
  • 行(Line)
  • 方法(Method)
  • 类(Class)

环境准备

  • Jenkins服务+节点部署JAVA+MAVEN项目
  • Jenkins上安装JaCoCo Plugin插件
  • JaCoCo代码覆盖率检查项目:https://github.com/princeqjzh/iTest
  • 项目配置:JAVA+JUnit+Maven+JaCoCo Plugin ,在pom中添加JaCoCo

具体操作

  • 配置job上的post build action中选择->Record JaCoCo coverage report
  • 如无特殊要求,JaCoCo插件配置选择默认即可
  • 然后便是启动数次JOB,查看覆盖率报告

img.png img.png img.png img.png img.png

python代码覆盖率工具-coverage使用指南

python 第三方依赖

简介

覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。

安装

pip install coverage

使用方法

  • 命令行调用:Coverage
  • API调用

命令行调用

coverage run test_demo.py

生产简易版覆盖结果

coverage report

生成覆盖率统计详细结果报告

coverage html -d my_coverage_result

(其中my_coverage_result 是自定义生成的报告的目录名称)

静态报告

打开报告目录中的index.html,点击被测的目标demo.py

报告中参数说明

statements:代码总行数,不包含空行和注释行
missing:未执行的代码行数
coverage:代码覆盖率

API调用

#实例化coverage对象
cov = coverage.coverage()
#开始分析
cov.start()
#结束分析
cov.stop()
#结果保存
cov.save()
#命令行模式展示结果
cov.report()
#生成html覆盖率报告
cov.html_report(directory='result_html')

pytest+cov

pytestcov有兼容适配

pip install pytest-cov

用法一

  • 命令行:pytest --cov

用法二

  • pytest --cov=src
  • src即目标内全部文件的代码

用法三

  • pytest --cov=src --cov-report=html
  • 生成报告

总结

对于测试用例而言,代码覆盖率也是一个重要指标。常见的代码覆盖率工具有jacococoverage