什么是devops?随着时间的推移,devops的定义也在不断的演进。对于其定义可能出现千人千面,但从核心观点,总体业界仍是保持着一致的认识。DevOps不是单一的技术或者工具,甚至不仅是一个流程,他包含应用设计、敏捷开发、持续交付和监控运维等一系列流程,涉及到企业文化、团队协做流程等多个方面,它能够被理解为一系列能够高速、高质量进行软件开发的工具链。数据库
结合软件生产全生命周期来看,devops落地实践的核心目标是缩短开发周期,提升部署频率和更可靠的发布。segmentfault
DevOps的诞生源于企业要适应这个瞬息万变的市场,可以作到持续交付。正如《持续交付2.0》做者在书中精炼的2个环:价值探索和快速验证。api
快速验证环的两个核心关键是质量与速度服务器
它会要求以最可靠的质量和最快的速度,交付最小可行方案,可靠地收集真实反馈,来造成这样的闭环。对于质量来说一个核心的实践就是质量内建,有一个公认的事实。那就是在整个持续交付全生命周期过程当中,缺陷越滞后发现,所须要的成本就越高。质量内建就是要从生产过程当中的第一个环节开始,就要注重产出物的质量,而且在每一个环节中都要去开展质量保障活动,这就要求在软件全生命周期参与的各个角色都须要实时的对软件的质量负责。确保软件在交付到下一个环节前有了基础的质量保障。其核心目的就是减小由于质量问题致使的返工,避免浪费大量人力成本。网络
速度,得益于在软件全生命周期过程当中每一个环节有效的开展自动化,进而作到“持续”两个字,好比持续构建、持续测试、持续发布、持续运维。框架
对于快速验证环,从测试的层面,是如何落地实践的。让咱们聚焦于接口,这个软件产物中必不可少的核心组成部分。从接口的全生命周期出发,介绍接口管理、测试、监控。接下来会围绕网易易测团队输出的接口全生命周期协做平台GoAPI出发,从痛点梳理、平台的设计、测试左移和右移实践、接口监控闭环建设等几个部分阐述是如何实现对于接口的“快速验证环”运维
什么是接口全生命周期?能够从以下的一张图来理解工具
结合软件研发流程来看的话,接口全生命周期包含了接口定义、编写、测试、上线应用、运维监控、回收下线等阶段。在接口的不一样生命周期过程当中,围绕着质量内建的思想,实际上是需求开发/测试/运维等角色去开展各类质量保障活动。性能
在实践的过程当中,一个典型的现象是接口的质量保障仍是测试这个角色在接口测试及回归阶段进行,这种现象出现可能有两种团队形态,一是开发、测试、运维三个角色分工明确,你们都聚焦于自身角色的一些目标。二是你们都在积极的开展着质量活动,可是在实施过程当中发现会遇到各类阻碍和痛点。测试
那么在接口全生命周期中有哪些核心的痛点,能够从如下4点来进行分析
* 接口定义管理与同步难:传统接口定义可能是文档化管理,文档更新则每每不及时,当接口发生变动时,时常不能及时同步到下游的测试团队。
* 自动化门槛高:数据准备、用例编写、用例执行和任务的编排都有较高的准入门槛
* 角色及使用阶段受限:传统模式下的接口测试只局限于测试人员在版本回归阶段使用,缺乏协做
* 线上接口监控难:因代码变动致使的接口异常、偶发性的接口错误、线上服务宕机等异常行为缺少有效的监控与发现手段。
围绕以上痛点,从质量内建的目标出发,从测试左移和右移的视角去思考,能够看到以下图示的典型问题及阶段变化
* 第一个问题:测试须要更多的时间关注在接口定义层面
从接口定义开始,涉及到一个核心点在于接口管理,目前的一些管理方式中包含Swagger和Postman等形式,相似Swagger这种管理属于静态的,在接口变动时缺少及时性通知机制,每每会存在测试人员在测试过程当中才会发现接口已经发生变动,这无疑会致使项目交付周期延长。
* 第二个问题:接口自测冒烟在开发与测试之间没有造成很好的协做。
同一件事情被多人重复作了
开发人员在开发完一个API接口,会部署到开发环境中,而后经过本身写自动化脚本或者利用 POSTMAN工具验证一下这个API 接口是否符合预期,这时候其实已经作过一个简单的API测试了。到了提测阶段开发会将写好的API接口文档给测试人员,测试人员会部署代码到测试环境中去,而后经过 TestNG 或者其余自动化测试框架写接口测试用例,咱们发现,API的正向用例测试,开发人员作过一次,测试人员用不一样的方式又作了一次?
开发提测的质量不可度量
开发人员提测,测试人员进行冒烟验收,通常只是执行一下冒烟测试用例,提交接口文档,口头叙述一下这些接口我在开发环境都验证经过,符合提测标准了。可是对于测试人员来说这个口头叙述是无法来度量提测的质量的,测试人员缺乏客观的数据来评估接口的质量是否符合预期,从而致使后期由于质量问题出现版本回退的现象,拖延了版本交付周期。
* 第三个问题:API 接口的变更引发的叠加效应
API 接口变更是常有的事情,可是现有的流程中,一个接口的变更会牵扯出一系列的变更,接口文档的变更,接口测试用例的变更,接口测试代码的变更,持续集成的变更......, 时间成本瞬间提升。有没有办法只要一个地方修改了这个变更,那么其余全部的事情都解决了呢?
围绕着接口全生命周期管理与测试中的典型痛点及多角色间协做的问题,网易易测通过多年的技术经验积累和业务实践,打造了GoAPI接口协做平台。它是围绕接口全生命周期管理、提高研发与测试效率为目标的团队协做平台。平台提供便捷的接口管理,无门槛与多维度的自动化测试,完善的OpenAPI扩展等多种丰富能力,大幅下降企业研发和测试成本。
接下来会重点介绍它的设计思路和应用实践
从核心目标、设计理念、实践应用的几个维度来看下总体的设计思路
* 核心目标:减小投入成本和增长收益
针对接口管理与测试,须要关注的一个核心是投入产出比,这会涉及到两个指标:减小投入成本、增长收益。减小投入成本能够从如下几个方向去考虑:减小用例编写的成本、减小用例维护优化的成本、减小依赖工具开发、数据构造的成本。而增长收益,咱们都知道自动化每执行一次它就发挥一次价值,那么增长使用率,也就能增长收益;而要作到增长使用率有几个方面能够考虑去实施:作到人人能用,手工能用、能当工具用、同时接口全生命周期各个阶段都能用。
* 设计理念:可视化、可协做、可追溯
可视化,须要作到2个0,0框架入门成本,如此才能不须要再关注自动化框架要如何去作封装,如何去作业务分层和数据驱动等等;0编码用例编写,只须要拼装好参数执行就能够,再也不吐糟这是谁写的测试代码。
可协做,在前面分析痛点的过程当中一个很重要的点就是多角色共建共用;何谓共建,开发与测试共同完成接口测试用例,何谓共用,让每个角色都可以垂手可得的去使用已有的接口自动化测试案例
可追溯,真正实践的过程当中,当接口量级达到1万+时,可追溯就变得很重要了,其中会包含失败分析,得具有便捷高效的快速定位的能力。同时要针对性的展开数据统计分析,从不一样维度和不一样粒度去开展。
能够看到整个接口全生命周期的各个角色都围绕着GoAPI在实施活动,以上是一个单产品的统计数据,达到了1万+接口,5万+用例,5千万+执行次数。在整个实践应用过程当中涵盖了接口生命周期的各个阶段,从定义接口契约开始,调试能够一键mock,不须要再另外搭建mockserver,接口自测冒烟及验收,开发只需自测完成后添加一个执行集,测试就能够一键完成冒烟验收平台能够定时持续集成并包含多维度通知机制,同时包含了当接口契约发生变动时,其余全部环节会同步发生变动,以达到一键变动的目的。
测试左移实践
测试环的快速验证
利用GoAPI创建在测试环节围绕接口的快速验证,将GoAPI建设的接口自动化能力接入到持续集成、发布过程、线上回归阶段。
结合发布平台实施PE发布验证
某个业务线上应用集群上百台机器,而线上回归执行运行一次不能完整覆盖到每台机器上应用实例的可用性,可能会形成某台应用实例由于不可知因素带着问题上线,致使线上故障。那么对于PE而言,他们的诉求是但愿每次发布的每一台应用实例都是通过自动化回归过的,基于此,结合内部发布平台实施方案以下,通常的发布平台都应该具有如下步骤:offline、deploy、check、online;先将当前实例下线,接着部署,而后check服务可用性,最后online到线上提供服务。只是当前check这一步只是健康检查,而非服务功能性验证。那么如此能够基于check扩展去调用GoAPI openAPI实施自动化执行,经过后再自动online。
经过这个方案实施后,PE每次发布不再会“提心吊胆”,由于每个应用实例都是通过全量接口回归后上线的。
测试右移:接口监控
从接口全生命周期来看,还有“最后一千米”须要去攻克,那就是线上接口监控。首先咱们从总体的业务质量监控来看,须要依赖于业务质量监控和系统资源监控二者造成互补。
系统资源监控主要是贴近系统资源,从服务器、数据库、中间件、应用异常、网络等资源展开监控,可是其中的局限在于难以直观评估线上用户实际影响。
业务质量监控主要是贴近业务功能场景,从接口监控、UI监控、指标监控、舆情监控等方面展开,可用于评估线上业务影响。
接下来聚焦于接口监控,经过监控是否可以及时发现接口不可用,减小对用户的使用及体验是很是重要的。围绕接口监控造成的闭环解决方案,须要包含从监控、告警、处理、归档、统计的几个环节。结合GoAPI的业务接口监控优秀实践来看
从创建业务执行集开始,根据业务接口的重要程度进行执行计划的制定,在执行失败时,经过不一样的重试机制来升级对应的报警策略,以达到责任人可以快速跟进处理的目的。在跟踪分析过程当中,能够结合业务的trace链路,经过在请求中带相应的Header贯穿整个链路,实现对于失败case的快速定位,处理完成后进行相应的记录和结论同步,最后在统计层面落地了几项指标:线上监控发现问题数、线上问题召回率、接口报警准确率,来有效的度量和推动接口监控的落地。
网易易测团队基于网易10年质量效能经验积累,为企业提供测试管理、UI自动化测试、接口自动化测试、性能压测等总体解决方案,助力企业创建健全质量效能体系,欢迎试用体验
网易易测GoAPI