注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

青果的持续集成实践全过程  

来自zhengyinyan21   2016-06-24 18:07:59|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    我第一次接触持续集成,应该是在20157月校招mini项目阶段,那时候作为mini项目测试负责人,一心想着如何把mini项目的测试做到最好,其间也是做了很多工作,包括持续集成从01的尝试。后来mini项目结束后,回到青果测试组,因为当时刚好负责服务器测试,又刚好有了点CI的实战经验,就尝试着开始着手青果的持续集成,从建立测试节点机开始,一步一步完善持续集成的每个步骤。目前,我们组的持续集成一共包括:代码编译部署、服务端静态代码检查、客户端静态代码检查、接口测试、代码覆盖率检查等。

         第一步,在Jenkins上部署测试环境的一键更新部署,主要参考了丁巍威的这篇文章自动部署应用场景及深度实战,主要原理是利用Jenkins + 脚本调用OMAD API 的组合实现了项目的“一键”自动部署。传入项目在omad平台的专属参数信息,如:产品名,环境名,应用名和接入omad平台的AccessKeyAccessSecret等关键参数,就可以调用部署脚本文件simple_deploy.py,执行一键部署。部署结果可以在QMS平台上看到:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

         第二步,通过jenkins集成的Sonar对项目代码进行全面的静态代码检查。对不同语言的需要选择不同的检查规则,比如java,需要做如下配置:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

安卓代码静态检查需要进行如下配置:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

第三步,建立接口测试执行job,主要是通过jenkins调用测试机上的命令行语句,执行maven clean test,触发测试用例的执行,前提是测试用例脚本用maven+testNG管理。并且可以打印testNG结果,如下显示:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

Jenkins可以记录每次接口测试执行情况,并以图形化的方式呈现出来,如果有失败的测试用例,也可以点击进去,看到具体的执行结果。

第四步,接口测试覆盖率检查,工具jacoco。考虑到,尽量不去动开发的代码,开发也不会允许,所以测试一般会采用ant构建的方式而非在maven中集成jacoco插件。Jacoco有两大模块,JacocoagentJacocoant。测试服务器上开启tcp端口,Jacocoagent 注入 JAVA_OPTS, 监听整个测试过程, 记录测试覆盖的数据。而Jacocoant作为客户端可以配置在本地, 通过发送请求,将jacocoagent 监控到的数据,都写入.exec 文件, 而对源码与class文件进行分析比较,生成测试覆盖率文件、映射源码得出测试报告等。

omad平台的tomcat实例中jvm参数选项中加上以下参数:-Djava.library.path=/home/popo/lib -javaagent:/home/popo/yx-smartcamera/coverage/tools/jacoco/lib/jacocoagent.jar=includes=com.netease.yixin.smartcamera.*,output=tcpserver,port=21005,address=*,重启实例,就可以在服务器中开启jacocoagent,监听测试过程。

Jacocoant是通过Jacoco的配置文件build.xml来发起请求的,在build.xml文件中写入必要参数,包括源代码路径src、编译后的class文件路径、jacocoant工具路径、生成的报告路径、测试服务器ip地址和端口号等。参考丁巍威的文章《轻松实施代码覆盖率统计(NJaco操作手册)

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

Job配置好后,就可以构建查看接口测试覆盖率详细情况,有两种方式,一种是选择jenkins平台构建后操作中的插件Record JaCoCo coverage report,直接打印jacoco报告,点击进去,最深可以看到每个类和方法的覆盖情况。如下图所示:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

还可以选择打印jacoco生成的html报告,点击进去,也可以看到每个类和方法的覆盖情况,接口测试维护人员可参考该报告,看下哪些未被覆盖的函数,适当的补充测试用例,增加接口测试覆盖率。如下图所示:

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

最后一步,可以把以上所有实现的job串联起来,建立pipeline view构建任务,并设定进行每日进行一次构建。

青果的持续集成实践全过程 - 网易杭州QA - 网易杭州 QA Team

写在最后的话,进行持续集成的搭建是为了方便管理测试的各个模块和阶段(代码质量,接口测试,UI测试等),也为了通过每日构建保证每个开发人员提交的代码不对原有的代码产生较大干预,尽早发现是否有新代码的提交影响老代码的功能。目前,我们组的持续集成正在逐步完善过程中,但是还需要进一步挖掘对项目组的帮助,以及代码质量的管理尤其是静态代码检查的结果(前期开发配合改过,后来开发太忙时就会无暇顾及)。所以,就我们组目前而言,持续集成如何提高测试过程管理,开发代码质量,还有待深究。。。

  评论这张
 
阅读(361)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016