3 分钟全面了解 API Moke

一、什么是密闭服务?
Google 测试团队的博客中,有一篇博文介绍的正是《Hermetic Servers(密闭服务)》。如下图所示,当被测试系统依赖了 Another Backend,这种依赖即产生了 “不可控” 因素。

怎么定义密闭服务呢?
如果可以在一台没有网络的机器上启动整个服务并且服务可以按照预期的工作,那么这就称为是一个密闭服务。但是,图中关系中 Another Backend 服务会依赖其他的服务、中间件... ,最终会形成一个庞大的调用网络,如何解决这个问题呢?答案是:通过 Mock Server。

二、为什么需要 API Moke?
2.1 服务规模庞大且复杂
当前在各研发团队中普遍存在的一个问题是服务依赖和接口数量规模越来越大。造成这样一个现状的原因有三个:
● 业务场景复杂度越来越高,如:双十一各大电商平台的玩法越来越复杂。
● 大单体服务 ---> 微服务的演进,服务模块之间的调用变成了微服务之间调用。
● 云原生基础设施使得创建服务变得很简单,研发团队缺少 “克制”。
2.2 挑战 &解决办法
一个集群几十个微服务非常普遍,这使得上述中的 “密闭服务” 越来约困难也给开发/测试工作带来很多挑战。这种挑战主要体现在以下几个方面:
● Web 前端依赖复杂联调困难
● 后台开发无法在本地启动服务,无法直接本地开发调试
● 自动化测试活动开展困难
通过 API Mock 帮助构建密闭服务解决以上三个挑战:
● 通过 Mock 解决联调困难问题

前端同事的应用访问 Mock Server,通过合理配置访问 Mock 规则 或者透传到后台服务。● 自动化测试困难

自动化测试开展困难的,通常主要原因是依赖服务是第三方服务不可控,如:第三方支付接口... ,通过构建 Mock Server 来构建测试密闭环境,解决此问题。
三、实践
3.1 通过接口管理快速导入 API 文档规范化的 API 管理能力是构建 Mock 的基础,笔者所在团队 HTTP 接口使用 Swagger 统一管理,优测接口管理提供完善的接口托管能力(见下图)。

通过上传导入的形式可以对接口进行统一的管理和版本的管控。同时,接口管理的能力支持对接 git 代码仓库和流水线,实现服务和接口管理自动化同步。同时,优测接口管理支持 RPC 协议托管,包括:PB、tars(腾讯内部 IDL)、Dubbo 等协议接口文档托管能力。
3.2 接口文档基础上构建 Mock 能力

通过构建 Mock 能力可以解决 2.2 中的挑战问题。
四、总结
云原生、微服务为服务研发及运维工作带来了很多便捷,同时也带来了诸多挑战。本文从密闭服务概念开始讲起,通过构建 Mock Server 能力解决服务之间依赖问题,提升前端和后台开发者效率。通过优测接口管理和 Mock 的能力构建基础 Mock 能力解决研发、测试过程中环境的 “不可控” 问题。


版权声明: 本文为 InfoQ 作者【优测云服务平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/27bece07b77ee18e376237d16】。文章转载请联系作者。
评论