赞
踩
接口定义管理与同步难:传统接口定义多是文档化管理,文档更新则往往不及时,当接口发生变更时,时常不能及时同步到下游的测试团队。
自动化门槛高:数据准备、用例编写、用例执行和任务的编排都有较高的准入门槛。
角色及使用阶段受限:传统模式下的接口测试只局限于测试人员在版本回归阶段使用,缺少协作。
线上接口监控难:因代码变更导致的接口异常、偶发性的接口错误、线上服务宕机等异常行为缺乏有效的监控与发现手段。
围绕以上痛点,从质量内建的目标出发,从测试左移和右移的视角去思考,可以看到如下图示的典型问题及阶段变化。 第一个问题:测试需要更多的时间关注在接口定义层面 从接口定义开始,涉及到一个核心点在于接口管理,目前的一些管理方式中包含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扩展去调用GoAPIopenAPI实施自动化执行,通过后再自动online。 通过这个方案实施后,PE每次发布再也不会“提心吊胆”,因为每一个应用实例都是经过全量接口回归后上线的。测试右移:接口监控 从接口全生命周期来看,还有“最后一公里”需要去攻克,那就是线上接口监控。首先我们从整体的业务质量监控来看,需要依赖于业务质量监控和系统资源监控两者形成互补。 系统资源监控 主要是贴近系统资源,从服务器、数据库、中间件、应用异常、网络等资源展开监控,但是其中的局限在于难以直观评估线上用户实际影响。 业务质量监控 主要是贴近业务功能场景,从接口监控、UI监控、指标监控、舆情监控等方面展开,可用于评估线上业务影响。 接下来聚焦于 接口监控 ,通过监控是否能够及时发现接口不可用,减少对用户的使用及体验是非常重要的。围绕接口监控形成的闭环解决方案,需要包含从监控、告警、处理、归档、统计的几个环节。结合GoAPI的业务接口监控优秀实践来看。 从建立业务执行集开始,根据业务接口的重要程度进行执行计划的制定,在执行失败时,通过不同的重试机制来升级对应的报警策略,以达到责任人能够快速跟进处理的目的。在跟踪分析过程中,可以结合业务的trace链路,通过在请求中带相应的Header贯穿整个链路,实现对于失败case的快速定位,处理完成后进行相应的记录和结论同步,最后在统计层面落地了几项指标:线上监控发现问题数、线上问题召回率、接口报警准确率,来有效的度量和推进接口监控的落地。 网易易测团队基于网易10年质量效能经验积累,为企业提供测试管理、UI自动化测试、接口自动化测试、性能压测等整体解决方案,助力企业建立健全质量效能体系。 点击Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。