DevOps之自动化测试-原创

上一篇 / 下一篇  2017-09-05 09:19:50 / 个人分类:Devops

DevOps是笔者最近听的比较多的词儿。顾名思义,它是由devops构成,这个词儿里面忽略了QA,很多人就会认为DevOps的开展没有QA什么事儿,其实不然,QADevOps的重要组成部分。大家在百度百科中,搜索”devops”,映入眼帘的就是下面这张图。

  那么DevOps是什么呢?百度百科给出的定义:DevOps(英文DevelopmentOperations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,其目的是达到业务的快速交付。

  看到这里,大家对DevOps有了一个整体的概念。但是不是还是觉得很抽象?看到这儿笔者也这么认为,那么到底DevOps是什么以及如何落地呢?

  其实,一方面,笔者比较认同《如何着手实现DevOps》一文中的观点,DevOps是工具的集合,是通过工具链打通业务、开发、测试、运维的部门墙,最终实现端到端的部署流水线。笔者认为不管DevOps的文化和理念多么高大尚,最终落地还是需要靠工具。另一方面,笔者认为监控和快速反馈也是DevOps成功非常重要的部分,在通过工具集加速软件生产过程中,对流水线的监控是非常必要的,这样在任何环节出现问题,可以快速反馈到主责部门,主责部门才可以快速去解决问题,并打通流水线的阻塞,形成闭环,达到业务快速交付的目的。

 下面看一张图:

  

  这张图体现了目前软件生产过程的整个流水线所涉及的节点,也体现了各个部门之间的协作过程。那么如何在流水线中的各个节点使用工具打通业务、开发、测试和运维各个部门的壁垒呢?

下面给出了第二个图:

这张图在第一张图的软件生产流水线的基础上增加了开源工具集和docker的使用,同时结合可视化流水线实现实时监控。下面给出实现DevOps落地思路的开源工具集:

1、 Mavengradle:管理依赖;

2、 GitLab:实现代码管理、代码协作、需求管理和看板管理;

3、 Junit:实现单元测试,构建内建质量;

4、 SonarQube:可视化代码质量,度量技术债务;

5、 Docker:管理镜像,保证测试、RC(预投产环境)等环境的一致性;

6、 Selenium/Appium/TestNg:实现接口自动化和功能自动化测试,提高测试质量和效率,实现质量快速反馈;

7、 HARBOR:管理镜像制品库,镜像管理、存储、分发全覆盖;

8、 Kubernetes:实现运行环境容器化,搞定容器编排;

9、 ELK :实时可视化生产环境数据,搞定分析度量。

10、          Jenkins定义可视化流水线进行过程监控,持续交付引擎,支撑持续交付过程;

 

结合开源工具集DevOps流水线执行过程简要描述如下:

1、 开发:基于新特性,需求从GitLab的看板中创建需求任务,开发将任务拖到看板的doing一栏并从master上拉取分支,建立自己的特性分支;完成单元测试代码和功能代码后进行特性代码构建;

2、 开发:构建完成触发Junit进行单元测试;

3、 开发:单元测试通过后,触发SonarQube进行代码静态扫描;

4、 开发:静态扫描通过后,将特性分支合并到Master分支,Master分支构建;

5、 开发:构建完成触发Master单元测试;

6、 开发:测试通过后,触发构建docker镜像;

7、 开发:部署到测试环境;

8、 测试:自动触发TestNg接口自动化测试和Selenium(Appium)功能自动化测试;

9、 测试:测试通过后,进行必要的手工测试;

10、 测试:测试通过后自动部署到RC环境;

11、 业务:自动化测试脚本在RC环境进行业务验证;

12、 运维:验证通过后自动部署到生产环境;

13、 运维:生产环境数据收集和监控;

 

下图为通过Blue Ocean结合Jenkins实现可视化流水线成功上线的过程实例。这个过程任何一个环节有问题,就会报警并通知主责人员进行及时解决。

三层

三层

TAG:

 

评分:0

我来说两句

日历

« 2024-04-23  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 333871
  • 日志数: 230
  • 建立时间: 2007-11-19
  • 更新时间: 2024-04-03

RSS订阅

Open Toolbar