研发效能 各位公司的 mock 平台的设计思路是什么样的呢

fengzx120 · 2021年10月12日 · 最后由 chris 回复于 2022年04月05日 · 5321 次阅读

我一直有个疑问,是不是做 mock 平台,都是需要开发配合改业务代码的?比如测试一个外部系统接口的返回的几种状态,200 的话前端返回成功,403 的话前端返回没权限,我知道 mockserver 这种可以做一个链接来返回,但怎么才能让我测试的时候,比如在前端页面点击以后,后台就直接去调用 mockserver 提供的地址而不是去调用正常的外部接口呢?

共收到 10 条回复 时间 点赞
  1. 如果后台代码对外部请求没有做配置化,直接改代码为 mock 地址,mock 服务可以分情况 mock 或者 proxy 到正常服务。
  2. 如果配置化了,比如配置文件,就修改配置文件。
  3. 更好一点的,现在服务框架可以根据请求 header 动态路由,这样就可以从前端控制请求是不是走 mock。

你可以在接口测试中全部使用 mock server 来进行转发,当 mock server 发现接口地址真实存在就转发至真实的服务,否则就走自己 mock 的接口

https://tech.meituan.com/2015/10/19/mock-server-in-action.html
我参考美团这个文章设计,做了一个 mock-server。

重来看雨 回复

我不太明白的是,某一个内部接口会对接第三方服务,那我需要怎么做,才能让内部的这个接口不走第三方服务而走我定义好的 mock?

fengzx120 回复

一般做法是修改服务配置文件的第三方服务域名,让其走到 mock 服务,如果是开发写死了第三方服务域名,则让开发修改。

fengzx120 回复

结合 sandbox 来做,页面一键配置

我们用的测试网管 + 测试 MOCK 的思路,所有服务请求到第三方的请求都会通过我们的测试网管(修改服务的配置,将第三方服务的域名更改为测试网管的域名)。然后根据一些白名单配置,决定对应接口是否请求到第三方服务/测试 MOCK。按照这个逻辑,就可以决定特定第三方服务/特定接口/特定数据是否需要走第三方还是 MOCK。

alwans 回复

大佬,请问有更详细的说明吗,最近也在想这个问题,没有思路😂

3楼 已删除
fengzx120 回复

思路本质就是做 aop,看在哪里做 aop 去改掉原本业务要请求的地址。

比如代码级别的动态配置下发
编译层面的拦截 c/c++ 插桩 java 的 agent,字节码&源码级别的切面 aspectj ASM 等等
机器级别的 libc 拦截、防火墙拦截
中间件级别的 网关统一拦截,配置中心拦截
路由器级别的拦截,这个类似防火墙

当然每一层做都各有优劣势,可以根据自身情况分析分析再做决定

直接使用第三方开源的 WireMock,基本上你想到的功能都已经有了。没必要做重复的轮子

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册