返回介绍

Mock 最佳实践

发布于 2024-05-30 23:00:45 字数 12725 浏览 0 评论 0 收藏 0

1. 前言

传统架构下的银行、保险、证券等金融类客户,存在很多用于代付、转账等的第三方接口。而当第三方提供的测试环境不稳定时,此类客户的研发测试效率就会受到非常大的影响。本文将对如何通过使用阿里云云效-专有云版本的 Mock 产品来解决上述问题进行了介绍


2. 最佳实践概述

在当今流行的互联网架构下,分布式服务的粒度非常细,互相之间也存在非常复杂的调用依赖。但这些服务又同时在并行开发和并行测试。因此,无法保证测试自己的服务时,自己依赖的服务均已准备就绪。此外,前后端分离开发的方法也是目前比较提倡的。所以,当后端代码尚未准备好,甚至接口尚未提供时,我们建议先做前端页面的逻辑。

【适用场景】

  • 解耦服务端依赖,模拟尚未实现的服务端服务接口
  • 模拟异常场景:模拟难以验证的异常场景,比如余额不足,风控禁止交易等
  • 模拟昂贵的三方系统:如模拟人行的授信查询,降低测试代价

流程示意

  • 新建 Mock 模拟接口服务返回所需结果
  • 调用 Mock 服务

3. 前置条件

在执行本文操作前,请完成以下准备工作:

  • 所在公司已购买并开通云效 Mock 产品模块。
  • 已注册云效账号并完成认证,可以登录云效平台。
  • 完成云效产品培训并通过相关考试。
  • 加入云效的钉钉答疑群(联系本公司云效接口负责人入群)。
  • 了解和分析所要模拟的业务逻辑,根据业务逻辑找出将要模拟的接口或服务。
  • 了解调用方和服务提供方的调用方式以便选择合理的模拟方式。
  • 了解和熟悉将要模拟的接口所采用的通信协议以及传输的报文内容,模拟的接口要与真实接口的通信协议以及数据格式一致。

4. 工具准备

  • 本方案使用 Chrome 浏览器,需提前准备。
  • 安装钉钉或企业微信。

5. 使用流程

背景说明】:在一些电商类系统中,经常会调用第三方支付接口来完成支付业务,为测试各种支付异常场景,若使用真实系统,每种场景就必须使用一个真实账户,准备数据较为繁琐。但是,使用 Mock 就不再需要真实的支付账户,并且可以模拟各种异常场景。

下面来说明如何通过 Mock 平台根据入参中不同的账户返回不同的异常结果的场景,此示例采用 http 的通信协议,请求响应为 json 格式,账户的参数名为 buyer_id。

5.1 新建 Mock

操作步骤】:点击新建 Mock按钮。

mock

5.2 配置 Mock 模拟支付的各种异常场景

此处,以两个异常场景来为例进行说明:支付账号余额不足场景和支付账号被冻结场景。我们创建两个 Mock,一个场景对应一个 Mock。

  • 使用账号 buyer_id=“2088102146225136” 返回用户银行卡余额不足
  • 使用账号 buyer_id=“2088102146225135” 返回账号被冻结
  1. 接口地址:必须与真实地址一致(使用 gateway.95516.com)
  2. 匹配规则:调用该 Mock 时,入参中如果包含这里定义的规则(buyer_id==”特定账号”)就会返回在返回结果中定义的内容。因此:

    • 余额不足的场景匹配规则为 buyer_id==“2088102146225136”
    • 账号冻结场景为匹配规则为 buyer_id==“2088102146225135”
  3. 期望返回结果:定义异常的返回结果,保证 response 的格式与真实接口保持一致。

5.2.1 模拟用户银行卡余额不足的场景

mock

5.2.2 模拟账号冻结的异常场景

mock

5.3 使用 Mock

无需变动代码,只需配置测试环境的 Hosts 将所模拟的服务的地址指向云效的 Mock 平台。当我们在测试环境测试这些异常场景时,就会返回我们定义的返回结果。其中 IP 地址为云效 Mock 平台服务器的地址,而域名为所模拟的服务的域名。

为了展示 Mock 的使用过程,我们编写了一个模拟支付的过程 Web 应用,在 Web 页面中输入支付账号,点击支付按钮,Web 应用会调用支付服务,并将支付服务返回的支付结果直接显示在 Web 页面。

操作步骤】:

  1. 首先,在测试环境中设置 Web 应用所在服务器的 Hosts 文件,将 Web 应用调用的底层支付服务域名指向 Mock 服务器:mock
  2. 然后,便可使用不同账号进行支付测试。 1)如果支付账号的值为 208810214622513,页面显示银行卡余额不足: mock 2)如果支付账号的值为 2088102146225135,页面显示账号被冻结:mock

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文