原理篇
本次尝试的初衷在于想将代码覆盖率很好的用于手工项目实践(对用例执行的一个查漏补缺以及在手工测试结束后能够通过覆盖率增加代码上线信心);并且如果以后针该项目进行自动化接口测试,可以进行统计自动化覆盖率;鉴于项目内大部分同学还是学习的jacoco,所以本次参考了王女士的jacoco+jenkins方面的实践,做了一些学习。
首次去看jacoco的原理还是比较复杂的,但是基本上原理的核心围绕三大模块:
1. jacoco如何监听用户行为;
Jacoco有两大模块,Jacocoagent和Jacocoant。Jacocoagent作为服务,Jacocoant作为客户端。测试服务器上开启tcp端口,Jacocoagent作为服务跟随项目进程启动并监听测试过程、记录测试覆盖的数据,同时监听客户端Jacocoant通过Socket发送的请求,诸如生成测试覆盖率文件、映射源码得出测试报告等。
2. jacoco如何生成exec文件;
exec文件的生成主要靠jacocoant的配置文件build.xml发起请求,当测试完成后,执行ant dump命令,build.xml指定了要在哪个服务器端口下获取监听数据生成二进制覆盖率文件.exec以及指定文件存储位置;
3. jacoco如何将exec文件转化成html文件;
将exec转化成html报告主要需要三个关键成分,第一个是上一步生成的.exec文件;第二步是源码以及源码编译后的class文件下载和配置;
所有的过程可以通过build.xml文件来展示。
因为本次是结合了jenkins,而且刚开始接触覆盖率,所以很容易将很多的东西混淆;建议初学者一定要把jacoco的原理搞清楚了再去实践会有更好的体验;
提到jenkins,jenkins在本次的作用中有两点功能:
1.ant命令触发,构建jacoco所需要的exec文件以及报告
2.将报告展示在了jenkins自己的平台上面;
实践篇
因为本次是基于杭研本身的jenkins现有平台,所以主要的工程在于jenkins的配置以及build.xml的配置,以及在搞清楚原理下jacocoagent以及jacocoant的放置位置,具体如图展示:
主要执行步骤,
1.jekins上安装git插件,从git上获取源代码(当然需要在系统管理中配置git私钥的位置,这样才能从git上把代码拉下来)
2.jekins上安装maven插件,利用maven命令对项目进行编译,打包
3.jekins上安装ant插件,编写build.xml文件放下job路径下,执行dump命令,生成二进制覆盖率文件.exec放到指定文件,同时将jacocoagent的jar包以及参数配到web的节点机jvm(通过omad进行配置,或者才tomcat的catalina.sh文件中进行配置,参考本机配置的方法)上获取监控数据
4.jekins安装jacoco文件,读取二进制覆盖率文件,并比对class和src文件,生成覆盖率报表
Omad配置如下:
需要在实例里面去修改: