互联网科技测试技术

增量代码覆盖率工具

2019-05-21  本文已影响2人  scottlin

背景

当存量代码较多时,项目单元测试整体覆盖率就会偏低,但这可能是正常现象,因此不能依据已有的全量单元测试覆盖率来判断项目质量。
基于这个背景,我们需要统计增量代码覆盖率作为项目质量的参考指标之一,并集成到DevOps 平台。

方案

1、先通过 git diff 统计代码差异,根据差异代码选择运行单元测试案例,最后得到差异覆盖率报告
2、先运行全量单元测试案例来生成整体覆盖率报告,然后通过 git diff 统计差异代码,最后根据整体覆盖率报告和差异代码来形成差异覆盖率报告

通过比较方案 2 侵入性小,扩展好,能方便支持多种 java 覆盖率工具,还能支持 python 、js 等覆盖率工具,下面简单例子介绍下实现方案 2 的开源工具 diff-cover

diff-cover 介绍

diff-cover 用 python 开发的开源工具,github 地址是 https://github.com/Bachmann1234/diff-cover。它不仅能实现增量代码单元测试覆盖率统计,还能实现增量代码质量检查。
支持单元测试覆盖率工具或报告格式有:Cobertura、JaCoCo、JSCover、coverage.py、nosetests、JSCover 等。
支持代码检查工具或报告格式有:pycodestyle, pyflakes, flake8, pylint, checkstyle, checkstylexml、 findbugs。
鉴于公司用 Cobertura 生成单元测试覆盖率,因此 diff-cover 可以容易集成到 DevOps 平台。缺点是由于代码质量检查用的是 pmd 工具,可能 diff-cover 还不支持,

diff-cover 安装和使用

1、首先安装 python 环境,网上一堆,请 google
2、输入如下命令安装 diff-cover

pip install diff_cover

3、新建 git 项目 demo

git clone git@xxx:demo/demo.git
cd demo

4、新建 maven 工程

diff-cover target/site/cobertura/coverage.xml --compare-branch=origin/master

diff-cover 参数说明

第一个参数是覆盖率报告文件
第二个参数是比较 git 分支 或 commit id,上诉比较是 origin/master 和 HEAD之间代码差异,origin/master 是远程 master 分支,HEAD 当前分支即指向本地 Master 最新提交

4、新增代码,统计差异覆盖率

diff-cover target/site/cobertura/coverage.xml --compare-branch=origin/master ----html-report report.html
scott.lin

展望

上一篇 下一篇

猜你喜欢

热点阅读