好分期 Mock 服务在测试中的应用实践(2)

发表于:2024-1-16 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李豪 等    来源:网络

#
Mock
  好分期 Mock 服务整体实践方案
  Mock 服务作为统一的访问入口,所有 API 请求均被引导到 Mock 服务。Mock 服务根据请求的特定信息(如访问域名、API 路径、参数、请求头等)进行路由,将请求转发到相应的后端服务或返回动态 Mock 响应。“Mock 路由规则”来定义请求路由行为,包含 3 种工作模式:Internal Forward(内部路由转发)、Upstream(上游转发)、Mock(Mock 响应)。每一个“Mock 路由规则”下可以包含任意多个“条件规则路由”,如果命中“条件规则路由”则执行对应的路由动作。如果未命中“条件规则路由”则使用其所属的“Mock 路由规则”作为兜底的路由动作。通过路由规则的创建和修改即可以实现“Mock 服务和真实服务同时工作(根据命中不同路由条件转发 Upstream 和返回 Mock 响应)”、“流量切换迅速切换(修改路由规则的工作模式)”、“环境隔离区分(虚拟 Mock 服务地址来区分)”。
  ·Mock 服务网关特征
  Mock 服务作为统一的服务访问入口,使用动态配置生效的“Mock 路由规则”对访问请求进行路由,转发到真实服务或直接返回 Mock 响应。
  · 虚拟 Mock 服务
  创建虚拟 Mock 服务地址(Virtual Host)后可以通过虚拟服务地址域名访问 Mock 服务,便于针对各环境的 Mock 响应结果独立管理。
  例如:
  环境 A 调用 testa.mock.com
  环境 B 调用 testb.mock.com
  如果希望 testa.mock.com 和 testb.mock.com 返回同样 Mock 响应,则可以将如上两个服务地址对应的 Mock 路由规则经“内部路由转发(Internal Forward)”到 default.mock.com 虚拟 Mock 服务。仅针对 default.mock.com 虚拟 Mock 服务配置 Mock 响应。
  如果希望 testa.mock.com 和 testb.mock.com 分别返回不同的 Mock 响应,则分别定义各自路由规则和对应的 Mock 响应即可。
  如果希望请求 testa.mock.com 转发(Upstream)到真实的 a.real.com,而请求 testb.mock.com 时返回 Mock 响应,那么将 testa.mock.com 的虚拟服务更改“Mock 路由规则”转发到 a.real.com 即可。
  · Mock 路由规则
  “Mock 路由规则”包含 3 种工作模式:Internal Forward(内部路由转发)、Upstream(上游转发)、Mock(Mock 响应)。“Mock 路由规则”可以把期望的 Mock 结果模块化,从而可以快速关闭、启用、复用。满足复杂环境及业务场景下动态 Mock 响应、Mock 服务与真实服务的流量的切换。
  1)修改路由规则工作模式在 Upstream(上游转发)、Mock(Mock 响应)之间切换,可快速进行 Mock 服务和真实环境迅速切换;
  2)Internal Forward(内部路由转发)工作模式可以在 Mock 服务中进行内部实现路由规则复用。如“图 11-虚拟 Mock 服务场景 1”,可将 testa.mock.com 和 testb.mock.com 的“Mock 路由规则”全部“Internal Forward(内部路由转发)”到 default.mock.com 的“Mock 路由规则”。因此我们只需要定义 default.mock.com 的 Mock 路由规则和响应内容。不需要在 testa 和 testb 两个虚拟 Mock 服务上重复配置两次。
  3) 根据环境信息、请求数据信息路由到不同的服务或者返回动态 Mock 响应。
  使用场景一:环境维度——同一接口可以依据来源环境不同得到专属的响应信息。
  实例:测试团队同时并行着 3 套测试环境,同一时刻都用到某资方借款试算接口,各环境场景如下:
  · 环境 A:走资方真实环境,借款金额为 1000,期次 6 期;
  · 环境 B:走 Mock 测试,借款金额为 2000,期次 9 期;
  · 环境 C:走 Mock 测试,借款金额为 3000,期次 12 期。
  则“Mock 路由规则”处理如下:
  使用场景二:个人维度——同一套测试环境同一接口请求可以根据使用者不同给予不同的应答。
  示例:
  测试人员 A/B/C 三人在同一套环境调用机构的还款试算接口,各场景如下:
  · 测试人员 A:借款共 6 期,当前期为第 2 期,从第 2 期发起的提前结清试算;
  · 测试人员 B:借款共 3 期,第 2 期已逾期,当前期为第 3 期,第 2 期发起正常还款试算;
  · 测试人员 C:借款共 9 期,第 1 期为当前期,从第 1 期发起提前结清试算。
  则“Mock 路由规则”处理如下:
  · Mock 动态响应
  除了常用的内建变量、内建方法之外,好分期 Mock 服务还支持通过 JSR223 标准 Groovy 脚本在线编译和执行来实现访问外部数据库、外部服务,模拟延时。
  · Mock 日志
  将 Mock 响应和真实服务的响应日志全部记录下来,将 Mock 路由流转路径留存下来,方便针对测试数据进行分析。使用真实服务的响应日志也可以快速完成 Mock 响应报文的制作生成。
  总结
  好分期 Mock 服务方案应用后,已接入 7 套测试环境服务超 50 个系统。在集成测试、系统测试自动化测试过程中极大地提升了开发联调、测试效率,证明了这一方案的有效性。同时也帮助开发工程师更加全面地测试系统性能。
  1. 模拟高负载场景:在性能测试中,使用 Mock 服务模拟底层服务高负载场景,测试中间件的性能。通过模拟这样的场景,可以测试中间系统的抗压能力和性能表现,从而获得有关系统性能的重要数据。
  2. 模拟不同的网络环境:不同的网络环境对系统性能的影响是很大的,例如网络延迟、带宽限制等都会对系统性能造成影响。在性能测试中,使用 Mock 服务模拟不同的网络环境,以测量系统在不同网络条件下的性能表现。
  未来,会进一步提升 Mock 服务自身性能,支持更多服务和团队。还会继续探索将更加智能化、自动化的 Mock 技术,为开发和测试提供更为准确和实用的模拟数据。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号