OTDD (Online Test Driven Development的缩写),是一个开源的流量回放系统,其主页:https://otdd.io,github:https://github.com/otdd/release。
和传统的流量回放相比,其最大的区别是它会自动将服务的请求/返回(inbound request / response )和其第三方依赖请求和返回(outbound requests / responses) 自动关联起来,所以它有如下巨大的价值:
1. 可以直观的检查和理解线上的处理流程细节
2. 可以正确的mock掉所有第三方依赖,同时这些mock还可以编辑,极大的加快开发过程
3. 可以用线上录制的流量精准的对开发代码进行测试
为什么要用OTDD?
微服务架构主要面临如下问题:
1. 难以在线下构造第三方依赖
众多被依赖的服务需要在开发/测试环境启动,且其数据状态不一致问题突出和难以解决。
2. 难以构造复杂的测试场景
复杂的测试场景对应复杂的第三方依赖的返回,要么手动mock,要么构造第三方数据,特别繁琐。
3. 测试case难以维护
微服务经常升级,测试case难以维护。
而OTDD完美的解决了这些问题
1. 所有的第三方服务会被用录制的线上数据自动mock,完美解决第三方依赖问题。
当流量回放时,被测服务的所有outbound request通过iptables被转发到本地的OTDD test runner,然后该runner根据线上录制的数据返回对应的response.