前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >09 微服务接口:怎么用Mock解决混乱的调用关系?

09 微服务接口:怎么用Mock解决混乱的调用关系?

作者头像
测试开发囤货
发布2021-08-11 15:12:34
4670
发布2021-08-11 15:12:34
举报
文章被收录于专栏:测试开发囤货

微服务下混乱的调用关系

一般来说,开发工程师在开发前期就已经定义好了微服务接口,测试工程师和开发工程师几 乎是同步开始进行各自的开发任务。但是,这种和谐的工作场景很快就被蜘蛛网一样的微服 务调用关系给破坏了,几乎所有的项目都会出现相互依赖的关系,比如说服务 A 依赖服务 B,服务 B 依赖服务 C,如下图所示:

这种混乱主要体现在:当持续集成流水线部署服务 A 的时候,由于对应的开发工程师团队也在做同步改造,导致测试环境的服务 B 不可用;

由于服务 B 依赖服务 C,而服务 C 还没有开发完成,导致即使服务 A 和服务 B 都没问题,但也没有办法完成服务 A 的接口测试。

微服务随 着开发越来越复杂,服务之间的调用关系就像蜘蛛网一样错乱,让你摸不清外部依赖到底有 几层,以及一个接口到底依赖了几个外部接口。这就导致了虽然被测系统已经开发完成,测试脚本也准备就绪,但是测试工作就是没办法进 行的悲惨结局。

Mock 框架的抉择:用什么实现服务 B 的替身

针对混乱的调用关系,我的思路是:我的被测服务就是服务 A,那么我不用管服务 B 是不 是好用,我只要保障服务 A 能够走完流程,就可以完成接口测试任务了。循着这个思路, 每做一个 Mock 服务其实就是做了一个简单的服务 B,不同的是,它不需要实现原有服务 B 负载的处理逻辑,只要能按服务 B 的处理逻辑给出对应返回就可以了。 因此,有些团队也会把这样的服务叫做挡板系统。

我的 Mock 服务设计经验

在选择好 Mock 框架后,你就可以酣畅淋漓地完成各个外部依赖服务的解耦工作了,但是 关于 Mock 服务,我还想告诉你一些我的设计经验。

首先,简单是第一要素。无论原服务 B 处理了多么复杂的业务流程,你在设计服务 B 的 Mock 服务时,只要关心服务 B 可以处理几种类型的参数组合,对应的服务都会返回什么 样的参数就可以了。这样你就能快速抓住 Mock 服务 B 的设计核心,也能快速完成 Mock 服务 B 的开发。

其次,处理速度比完美的 Mock 服务更重要。一个 Mock 服务要能按照原服务正确又快速 地返回参数,你不需要把大量的时间都浪费在 Mock 服务的调用上,它只是用来辅助你完 成接口测试的一个手段。

最后,你的 Mock 服务要能轻量化启动,并且容易销毁。你要时刻注意,Mock 服务只是 一个辅助服务,因此,任何一个团队都不希望启动一个 Mock 服务需要等待 5 分钟,或者 需要 100M 的内存。它要能快速启动、容易修改并且方便迁移。

总结

微服务现在已经铺天盖地而来,尤其在中台化战略的推动下,业务中台服务的依赖关系会越 来越复杂,并且随着团队内微服务数量越来越多,每个测试团队面临的被测系统都会是一团 乱麻,很容易找不到头绪。

为了解决由于微服务间相互依赖而导致的混乱的系统调用关系,我建议你尽快掌握一个 Mock 服务框架,这样可以让你在混乱中理清思路,快速进行接口测试,交付高质量的项 目。

最后我要提醒你的是,选择 Mock 的技术栈与选择测试框架的技术栈还是有些区别的,在 选择 Mock 技术栈时,你重点要考虑的是学习成本,把学习成本降到最低,才是选择 Mock 框架的首要关注点。而且你不只要关注自己的学习成本,也要关注你所在团队的学习 成本,因为现在每个项目都有可能需要 Mock 服务,这个时候,就要求每一个项目的测试 工程师都具备自己独立建设 Mock 服务的能力,在 Mock 服务的技术选型上,还是要以团 队整体的技术栈为基础,以自己的技术为参考进行选型。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发囤货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档