持续集成概念

持续集成是一种软件开发实践,即团队成员经常集成自己的工作。通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编辑、发布、自动化测试)来验证,从而尽快地发现集成错误。许多团队通过实践发现这个过程可以大大减少集成时的问题,让团队能够更快的开发内聚的软件。

持续集成的价值1、 减少风险:

越早发现的错误,修正的费用越低。及时检查软件的健康状况,减少发布时的风险。

2、 减少重复性的工作:

通过持续集成可以将编译、部署、测试等动作都变成自动化的,无需太多人工干预。

3、 任何时间、任何地点都可以部署软件

利用持续集成,可以经常对源代码进行一些小改动持续集成,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知去修复。

持续集成对到家的意义

由于业务的特殊性,迭代速度比较快。如何使每个服务都能够快速部署测试上线,给测试和研发工程师带来了很大的挑战。我们引入了持续集成的概念,并开始逐步实施

持续集成帮京东到家主要解决了三个问题:

1、提测质量差。开发周期被压缩,代码质量一定不高。

2、测试周期长。一旦代码质量变差,测试投入的成本就会很高。

3、重复性的工作多。

京东到家持续集成的实现

代码提交到GIT,代码静态扫描JOB会先运行,然后单元测试和代码覆盖率JOB会运行,之后编译打包,部署到对应的服务器上。

后续UI、JSF和APP自动化测试运行,测试人员分析并修复失败的CASE。如果有需要再做功能测试持续集成,收集功能测试代码覆盖率。

目前对代码静态扫描,我们要求修复阻塞和重要级别的BUG。所有系统都做到自动编译、打包和部署。自动化测试要不断添加测试用例,并及时查看覆盖率报告。

持续集成基本架构

持续集成ci_持续集成好处_持续集成

持续集成服务器架构

持续集成ci_持续集成_持续集成好处

测试环境的演变

第一阶段:需要手动编译、打包、部署。解决方案就是引入自动编译打包部署。

第二阶段:服务器硬盘打满了,一台机器上部署的服务太多,导致服务挂掉。我们做的就是定时清理硬盘空间,监控服务状态,自动重启服务,保证服务可用。

第三阶段:主要问题是分布式服务之间调不通。因为开发人员在本地调试时,随意修改配置文件导致服务之间调用组名不对。

我们部署了两套测试环境,一套对外提供服务,供他人测试调用,一套自己使用。保存本地配置,与线上配置比对,防止误改。使用自动化测试,检查整个系统的健康状况,及时修复。

代码静态扫描

代码质量管理系统

1、 配置SONAR环境。

2、 配置环境,下载插件,并进行配置。

3、 在代码静态扫描的JOB后,配置运行SONAR。

持续集成好处_持续集成ci_持续集成

代码覆盖率收集单元测试代码覆盖率环境搭建

1、 配置POM.XML文件

  1. sed -i 's%%  

  2. <plugin> 

  3.  <groupId>org.codehaus.mojo 

  4.     <artifactId>sonar-maven-plugin 

  5.     <version>1.0 

  6.  

  7. <plugin> 

  8.     <groupId>org.apache.maven.plugins 

  9.     <artifactId>maven-surefire-plugin 

  10.     <version>2.9 

  11.     <configuration> 

  12.         <skip>false 

  13.      

  14.  

  15. <plugin> 

  16.     <groupId>org.jacoco 

  17.     <artifactId>jacoco-maven-plugin 

  18.     <version>0.7.4.201502262128 

  19.     <executions> 

  20.         <execution> 

  21.             <id>default-prepare-agent 

  22.             <goals> 

  23.                 <goal>prepare-agent 

  24.              

  25.          

  26.         <execution> 

  27.             <id>default-report 

  28.             <phase>prepare-package 

  29.             <goals> 

  30.                 <goal>report 

  31.              

  32.          

  33.         <execution> 

  34.             <id>default-check 

  35.             <goals> 

  36.                 <goal>check 

  37.              

  38.             <configuration> 

  39.                 <rules> 

  40.                      

  41.                     <rule implementation="org.jacoco.maven.RuleConfiguration"> 

  42.                         <element>BUNDLE 

  43.                         <limits> 

  44.                              

  45.                             <limit implementation="org.jacoco.report.check.Limit"> 

  46.                                 <counter>COMPLEXITY 

  47.                                 <value>COVEREDRATIO 

  48.                                 <minimum>0.00 

  49.                              

  50.                          

  51.                      

  52.                  

  53.              

  54.          

  55.      

  56.  

  57. %' pom.xml

2、 运行MVN CLEAN 命令,生成代码覆盖率报告。

持续集成_持续集成ci_持续集成好处

功能测试代码覆盖率环境搭建

1、 启动脚本中插入监听参数。

持续集成_持续集成ci_持续集成好处

2、 DUMP出监听文件。

持续集成ci_持续集成_持续集成好处

3、 使用ANT脚本生成最终的HTML。

4、 配置到的持续集成环境。

持续集成_持续集成好处_持续集成ci

自动化测试

UI自动化测试集成到:++

1、 配置MAVEN POM.XML 文件

持续集成好处_持续集成_持续集成ci

2、 配置 JOB

持续集成_持续集成ci_持续集成好处

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注