单测增量代码覆盖率统计方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单测增量代码覆盖率统计方案相关的知识,希望对你有一定的参考价值。

参考技术A

背景


增量代码扫描数据作为上线准入的重要依据,目前所有测试环境执行的测试均有覆盖率统计,但是部分需求或服务更加适合使用单测进行验证,也有部分RD有单测的好习惯。单测覆盖率的缺失无法通过覆盖率分析补充case也对上线准入评估造成了一定的困扰。因此,我们将单测的增量代码覆盖率融合至测试环境覆盖率中,解决以上问题。

整体方案


用例平台


1、持续集成平台将工程名称,分支名称,git地址信息传给单测平台,平台根据这些信息下载源码

2、更改源码里的pom.xml 文件。引用插件 maven-surefire-report-plugin

插件的特点:

结果:


打开surefire-report.htm 可以查看执行case数量,执行通过率,执行失败的具体方法以及失败原因。

3、用jacoco生成单元测试覆盖率

在执行mvn命令时,加上“org.jacoco:jacoco-maven-plugin:prepare-agent”参数即可。


其中,jacoco-maven-plugin后面跟的是jacoco的版本;【-Dmaven.test.failure.ignore=true】建议加上,否则如果单元测试失败,就会直接中断,不会产生.exec文件。


执行以上命令后,会在当前目录下的target目录产生一个jacoco.exec文件,该文件就是覆盖率的文件:



4、生成的jacoco.exec文件传给覆盖率统计系统。

覆盖率平台


1、增加覆盖率统计任务

用例平台收到执行单测任务时,会调用覆盖率平台创建覆盖率任务接口,将源码地址,jar包的ftp地址, 以及代码分支等数据传递给覆盖率平台,覆盖率平台建立覆盖率任务并做一些提前准备工作:下载源 码、jar包以及进行codediff,并将diff结果存到数据库。


2、统计覆盖率

回顾一下之前 on-the-fly方式的差异代码覆盖率方案 ,代码执行轨迹是当测试人员点击覆盖率按钮时,实时从测试服务器上获取的。


从图中可以看到,如果我们把测试服务器的部分任务由用例平台来完成,就可以在基本上不变动代码的情况下完成单测增量代码覆盖率的统计。

主要逻辑:



以上是关于单测增量代码覆盖率统计方案的主要内容,如果未能解决你的问题,请参考以下文章

gitlab增量代码覆盖率

告别加班/解放双手提高单测覆盖率之Java 自动生成单测代码神器推荐

原创单测代码生成工具Evosuite试用

Java单测代码生成工具Evosuite

iOS代码覆盖率-增量覆盖率自动化实践

iOS代码覆盖率-增量覆盖率自动化实践