Mockest无侵入的对被测应用的入口和出口流量拦截录制,实现被测应用外部依赖回放的能力。
- 在很多传统企业做遗留项目改造的过程中,缺乏相关测试,通过Mockest可以快速进行场景录制,将遗留项目的依赖录制下来进行回放,减轻手动编写大量Mock Server的工作。
- 在大型项目进行组件测试的过程中,同样也可以利用录制回放的能力减少手动编写Mock Server的工作。
- Mockest对录制对象无任何改造,只需按照步奏将被录制的对象运行在容器中即可。
- Mockest录制的结果为Stubby4j/4node支持的文件格式,通过一个Stubby4J实现所有外部依赖服务的Mock。
- Mockest收集了所有的流量信息,通过结合现有服务扩展可以实现API覆盖率,契约测试等。
- 通过envoy+iptables实现透明代理,所有的流量将被collector收集
- collector将收集到的所有流量进行整理生成用于回放的replay文件
- replay服务(Stubby4j)将读取replay文件进行mock
- coredns将强制解析外部的域名到0.0.0.0
- collector担任replay过程中的流量黑洞
镜像会自动构建,最新的镜像为:
- tmtbe/mockest-proxy:master
- tmtbe/mockest-collector:master
- tmtbe/mockest-demo:master
make build.docker
make test.record
make test.replay
由于HTTP/1.1协议的TLS连接可能没有采用ALPN协议,envoy无法识别加密流量到底是不是HTTP协议。我们默认将443端口识别成为HTTPS协议,但其他端口如果采用了非ALPN模式的HTTPS请求可能会导致无法识别。
解决方案:
- 采用ALPN方式请求
- 增加端口匹配或者域名匹配等等