Twitter Diffy通过比较响应结果来判断服务Bug

近日,Twitter开源了Diffy,这是一个自动化测试工具,可用在生产环境中,旨在探测运行在Apache Thrift与其他HTTP服务器上的新代码所产生的潜在Bug

Diffy不像预定义了每个部分代码有着独立的测试集合的单元测试工具,Diffy更像一个函数式测试工具,它针对整体web服务。Diffy充当代理接收HTTP请求,再把请求分发给两套服务,一个良好运行的,另一个是有潜在问题的。然后Diffy收集两者的响应作对比,给出代码的回归测试集。

很显然,有很多可能导致两套服务一定会有微小的差异,包括不同的时间戳、调用随机值生成器或者其他原因。为了避免这些差异引出的误报,Diffy运行了三套服务:两套运行着完全相同的正常版本的代码,另一套运行着全新的代码。除了不确定的噪音(时间戳、随机值等),两台相同实例的响应应该也是完全相同的。当和备用机比较响应的时候,这些不确定的噪音是要忽略的。经过对比找到噪音为何并排除其影响是避免误报的关键。

安全起见,Diffy默认忽略POST、PUT和DELETE操作,但是他们也可以被启用。

Diffy 用Scala编写而成,基于Apache 2.0协议开源,托管在GitHub。

查看英文原文:Twitter Diffy Spots Bugs in Services by Comparing the Responses

感谢张龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

你可能感兴趣的:(Twitter Diffy通过比较响应结果来判断服务Bug)