发布新日志

  • DevOps之自动化测试-原创

    2017-09-05 09:19:50

    DevOps是笔者最近听的比较多的词儿。顾名思义,它是由dev ops构成,这个词儿里面忽略了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实现可视化流水线成功上线的过程实例。这个过程任何一个环节有问题,就会报警并通知主责人员进行及时解决。

    查看(9033) 评论(0) 收藏 分享 管理

Open Toolbar