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

  • Abel Avram
  • 李志

2015 年 9 月 27 日

话题:测试开源语言 & 开发架构

近日,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 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

测试开源语言 & 开发架构