代码覆盖率
代码覆盖率集成
介绍
代码覆盖率集成(Code Coverage Integration)是指在软件开发和测试过程中,将代码覆盖率分析工具与开发环境、持续集成(CI)和持续交付(CD)流程相结合的实践。其目的在于评估和提高代码的测试覆盖率,从而确保开发团队编写的测试用例能够有效地验证软件的功能和逻辑。
针对JAVA代码-Jacoco
代码覆盖率检查持续集成
- 开源代码覆盖率工具,支持
JAVA
,Kotlin
- 计算测试代码对项目的覆盖情况
- 定位测试未覆盖到的代码部分,帮助提升测试有效性
- 检查程序中的废代码,反推代码设计过程中的不合理逻辑,提升代码质量
- 测试代码覆盖率高低是衡量代码质量的因素之一
- 原理:
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
,查看覆盖率报告
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
pytest
和cov
有兼容适配
pip install pytest-cov
用法一
- 命令行:
pytest --cov
用法二
pytest --cov=src
src
即目标内全部文件的代码
用法三
pytest --cov=src --cov-report=html
- 生成报告
总结
对于测试用例而言,代码覆盖率也是一个重要指标。常见的代码覆盖率工具有jacoco
和coverage
。