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

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

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

共收到 10 条回复 时间 点赞

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

fengzx120 回复

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

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

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

9楼 已删除
alwans 回复

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

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

fengzx120 回复

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

fengzx120 回复

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

重来看雨 回复

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

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

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

  1. 如果后台代码对外部请求没有做配置化,直接改代码为 mock 地址,mock 服务可以分情况 mock 或者 proxy 到正常服务。
  2. 如果配置化了,比如配置文件,就修改配置文件。
  3. 更好一点的,现在服务框架可以根据请求 header 动态路由,这样就可以从前端控制请求是不是走 mock。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册