背景
增量代码扫描数据作为上线准入的重要依据,目前所有测试环境执行的测试均有覆盖率统计,但是部分需求或服务更加适合使用单测进行验证,也有部分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方式的差异代码覆盖率方案 ,代码执行轨迹是当测试人员点击覆盖率按钮时,实时从测试服务器上获取的。
从图中可以看到,如果我们把测试服务器的部分任务由用例平台来完成,就可以在基本上不变动代码的情况下完成单测增量代码覆盖率的统计。
主要逻辑:
今天碰到一个问题,CI上的一个job,有多个子目录,分别生成各自的Jacoco的Code coverage report,我们想合并这些报表。研究了一下jacoco:merge的maven插件和ant任务,由于我们是Scala的SBT项目,最后采用如下方法实现。
添加一个pom_cc.xml文件,内容如下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)