DevOps之自动化测试

本文讲的是DevOps之自动化测试,DevOps概念从2009年提出已有近8个年头,每个人对DevOps的理解可能都不完全一样,下面是普元对DevOps的理解和定义。

我们认为DevOps不仅需要打通开发运维之间的部门墙,更多的需要从应用的全生命周期考虑,实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力;

DevOps也不能简单等同于一组自动化工具的运用,要实施DevOps需要考虑敏捷、持续、协作、系统性、自动化五个维度;

第一部分:DevOps不可或缺的测试自动化

从上面的DevOps实践模型中可以看到,其实很多东西大家都不陌生,或者一直都在践行,比如,持续集成(CI)、持续交付(CD),还有多年来提的很多但不易落地的持续测试(CT);

如果没有持续测试,也就不能对持续集成进行及时验证,自然就无法做到有效的持续交付。作为持续测试必需的能力,测试自动化自然不可或缺,但它也不仅仅只是工具的运用,还需要过程、方法等多方面的支撑。

第二部分:自动化测试过程与方法

首先阐述一下我们的测试理念,同时也是DevOps实践模型中很重要的三点:测试一切、测试驱动开发、测试自动化;

1)测试一切
文档、配置、环境、发布包,一切皆代码,这个很好理解,我不再赘述;
2)测试驱动开发
测试提前,敏捷协作,测试用例同步开发;
3)测试自动化
多种测试技术能力、组件化开发、统一管理,不间断测试执行;

为了实现测试驱动开发、测试自动化,我们认为需要以下四个要素:

1)敏捷协作的过程
2)测试设计方法
3)全栈测试团队
4)自动化测试服务

普元多年来在产品研发过程中,一直践行敏捷协作的RDT过程,在新一代云平台项目中,我们分为若干RDT小团队,每个团队负责一个或多个领域系统,以实现不同的用户场景;在每个RDT小团队中,采用需求、开发、测试协同并行工作模式;

随着产品需要在公有云上部署运维,我们做了一些改进,变成了RDT+Ops过程,运维组参与分析用户场景、需求设计测试评审、反馈运维遇到的问题,而且,运维组自身也作为RDT团队直接负责统一监控中心的需求定义和设计开发;

那么为什么在敏捷协作的过程中,就能将测试尽量提前呢?

从上面过程中我们可以看到,在计划阶段,每个RDT团队对用户场景都有了统一认识,那么在接下来的每个迭代开发中,定义需求规格、设计概念模型/原型界面/API定义/数据模型的同时,测试可以并行进行测试对象分析、测试点分析、测试数据和测试组件设计,并且强调RDT的相互评审;

基于这些成果,开发进行编码的同时,测试就可以并行进行测试用例的开发,并且测试用例开始不间断的执行,自动化测试相比传统开发过程大大提前,通过测试尽量提前达到测试驱动开发的目标;

自动化测试毕竟不同于手工用例,我们从四个方面定义了自动化测试的设计原则与方法:

1)易管理性
统一规划、统一版本控制的规范要求;

2)易实现性
采用分层设计,测试基础服务层、测试能力支撑层、测试组件层、测试用例层,支持多种技术的测试能力,测试组件复用,用例专注业务逻辑;

3)易维护性
组件与用例分离、区分变化与不变、测试用例原则上不互相依赖、测试数据容易维护;

4)易定位性
测试用例独立、低复杂度、要求断言信息的准确性;

自动化测试分层设计对测试团队提出了更高的要求,也就是要求我们必须成为全栈测试团队,具备各层的能力:

测试架构师负责总体设计、测试基础服务层,提供统一管理、统一调度的能力;
领域技术专家负责测试能力支撑层,对各领域测试技术进行分析和选型,提供测试服务能力以及基础的技术组件;
测试专家负责指导测试开发工程师进行测试方案设计、测试组件和用例的实现;

除了过程、方法、团队,自动化测试的落地最终还是需要依赖各种自动化测试服务的实现,我们也一直在做这方面的努力,并形成了产品化的自动化测试服务能力;

除测试基础服务以外,我们没有选择从零开始,而是评估并引入好的开源技术和公司内部其他产品的可用技术,按照我们的自动化测试设计原则和方法进行相应的改造;

比如WebUI测试服务,我们选用了Selenium,为了适应我们的用例开发规范和易用性,我们对其接口进行了重新封装,形成我们的WebUI基础组件库;

比如CI工具Jenkins1.x,由于我们产品多、每个产品版本也多,使用时间久了之后其任务管理界面简直就是灾难,任务的调用关系也非常不直观、难以维护,所以我们扩展实现了持续集成项目管理、图形化的持续集成任务流管理,以适应我们的需要;

另外,像用例开发/调试,除了支持Java以外,我们还复用了普元的逻辑流图形化开发能力、组件库可视化管理能力,用例开发效率更高、更易维护;

综上所述,有了适合自己的过程、方法、团队、工具的保障,自动化测试的实践自然能够水到渠成;

第三部分:云平台自动化测试实践

新一代云平台采用了自己生产自己的方式,使用V0.1生产线进行V0.2的开发和交付,于是我们也将自动化测试服务搬到了平台上,作为微服务进行部署;

自动化测试用例同样作为微服务进行开发,和其他领域系统一样进行管理和构建部署;

我们目前的持续集成、持续测试过程大致如上图所示,主要分为以下步骤:

1)开发/测试人员提交代码后, 手工触发或者系统定时触发持续集成任务流;
2)持续集成任务流会调用SRM资源管理领域系统的服务能力,进行产品的构建部署,其中包括编译、配置、打包、部署,这个过程中也包括了单元测试的执行;
3)继续调用SRM的服务能力,进行自动化测试代码的构建部署;
4)调用测试基础服务,加载测试用例调度执行,生成报告进行反馈;

新一代云平台项目中实践的执行效果

使用在Jenkins上扩展的可视化的任务流编排,进行持续集成和持续测试的流程定义,支持子任务流,避免了Jenkins的任务调用关系不直观、难以维护的问题,这里使用的就是之前提到的自动化测试服务中的持续集成任务编排,后续将会根据新一代云平台的服务编排设计进行重新规划;

可视化测试管理控制台,可以直观的进行用例展示和统计、指定用例执行、查看测试报告、参数配置等等;

自动化测试执行报告可以了解每次执行的情况,查看错误信息,及时响应;

自动化测试执行趋势报告,可以了解一段时间内版本质量稳定趋势,再结合其他过程数据反馈,QA就能够进行质量的度量,比如单元测试覆盖率、自动化测试需求/功能覆盖率、测试用例密度、缺陷密度等等;

第四部分:总结

最后总结回顾一下,我们的测试理念,也是DevOps实践模型中很重要的三点:测试一切、测试驱动开发、测试自动化,以及为了实现这三点所需的四个要素:敏捷协作的过程、测试设计方法、全栈测试团队、自动化测试服务;

时间: 2024-09-12 02:55:18

DevOps之自动化测试的相关文章

DevOps 发展融合运维可视化

DevOps,是开发(Development)和运维(Operations)的组合,代表一种文化.运动或实践,旨在促进软件交付和基础设施变更软件开发人员(Dev)和 IT 运维技术人员(Ops)之间的合作和沟通.它的目的是构建一种文化和环境使构建,测试,发布软件更加快捷,频繁和可靠. 现在2016年 DevOps 逐渐成为主流,来自云端.移动和社会等基本需求的驱动将促使越来越多的公司认识到采用 DevOps 最佳实践可能获得的文化.性能和经济效益. 精简灵活的公司已经在过去几年感受到了 DevO

活动干货|基于Docker的DevOps实现

作者:精灵云 众所周知,传统开发模式已经面临了诸多难题.首先,在代码集成方面,因为没有合适粒度的代码合并,大规模的合并会有很大的风险,且传统开发模式中没有自动化测试,以至于测试周期特别长,人力成本高昂.其次,传统开发中的单体应用,通常都很庞大,单体应用把所有模块都包含在一个应用中,升级单个模块也需要对整个应用进行升级,所以升级和创新都很不方便,常见的比如银行系统就是如此. 同时,传统的开发模式中单独采用微服务的情况也会由于服务数量多而没有有效管理,在大批量的部署和测试的时候容易出现问题.除此之外

微服务的持续集成,四步“构建”一个代码世界

本文讲的是微服务的持续集成,四步"构建"一个代码世界,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误. 今天我们就来聊一聊微服务的持续集成. 目录 一.持续集成之构建 二.持续集成之部署 三.持续集成之测试 四.持续集成之发布 五.总结 一.持续集成之构建 当微服务产生

2016及以后的自动化测试趋势 -《测试技术六月刊》

业界前沿 2016及以后的自动化测试趋势 测试自动化的博客joecolantonio.comtesttalks主持者和创始人,Joe Colantonio带来了15年的自动化测试经验,他分享了他的专业知识和预测如何从2016自动化测试的魅力中获取成功.Joe预测: 未来将是Dev + Test + Ops的模式:我们正朝着行为驱动开发(BDD)的模式发展:2020,Selenium WebDriver将成为功能测试执行标准等等.查看视频 浅谈Docker在测试领域的应用 Docker是PaaS供

独家:阿里巴巴DevOps落地实践玩法及思路解析

互联网时代,随着业务的迅猛发展,企业越来越希望通过实施DevOps来提升研发.运维等IT部门的效率,支撑业务发展.互联网企业如何利用工具让DevOps落地?传统企业如何提升研发效能,更快速的互联网化?这些都是企业面临的问题.   7月26日,阿里巴巴持续集成持续交付平台--云效,在深圳阿里中心举办了一场"业务为王时代,DevOps怎么玩?"主题沙龙,由阿里巴巴技术专家从云效新概念的提出,到阿里巴巴DevOps落地实践.到企业如何利用云效进行高效研发.再到阿里巴巴CI/CD之分层自动化,

阿里云专家理解的DevOps

2017运维/DevOps在线技术峰会上,阿里云平台研发高级专家连铭带来DevOps的相关演讲.本文主要从什么是DevOps开始聊起,接着对比了DevOps与传统模式的区别,并且列举了DevOps的难点和需要解决的问题,包括寻找平衡点.责权划分和制约考核,最后进行了简要总结.一起来了解下吧.   以下是精彩内容整理: 近几个月,运维事件频发.从"炉石数据被删"到"MongoDB遭黑客勒索",从"Gitlab数据库被误删"到某家公司漏洞被组合攻击.

云效2.0助力企业成功实施DevOps,让软件交付质量更快更好

DevOps是近几年非常热门的话题,企业如何成功实施DevOps,是企业迫切想要解决的.在2017杭州云栖大会企业高效研发实践专场上,阿里巴巴研发效能事业部高级技术专家章屹,为大家分享了<云效2.0助力企业成功实施DevOps>议题,为大家提供了解决思路和实施方案. 嘉宾简介 章屹:阿里巴巴研发效能事业部高级技术专家.毕业于清华大学电子工程系硕士,多年从事软硬件的测试.开发.系统设计工作.现为阿里云-云效平台业务负责人,负责研发效能事业部的技术商业化工作. DevOps定义   从维基百科定义

应用生命周期终极 DevOps 工具包

[编者按]本文作者为 Kevin Goldberg,主要介绍了在开发.运营应用的完整生命周期当中,可能用到的 DevOps 工具大集合.文章系 OneAPM 工程师编译整理. DevOps工具包中合适的工具可以帮助你在企业内成功实施DevOps,增强敏捷发布过程和团队协作.笔者想先声明,DevOps不仅涉及工具,如果背后没有合适的人员与文化,即使拥有最好的工具,也不能成功实施DevOps.不幸的是,没有"文化"工具可供你使用,让你能够立刻在团队之间培养协作和反馈. 合适的工具可以提供框

Web Scale IT 与 6 种 DevOps 工具

新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale IT Will Be an Architectural Approach Found Operating in 50 Percent of Global Enterprises 表示: 截止至 2017 年,全球 50% 的企业将使用 Web Scale IT 架构. 在 2016 年年初,我们回