推ter开源Diffy 通过比较响应结果来判断服务Bug
jopen 9年前
英文原文:推ter Diffy Spots Bugs in Services by Comparing the Responses
近日,推ter 开源了 Diffy,这是一个自动化测试工具,可用在生产环境中,旨在探测运行在 Apache Thrift 与其他 HTTP 服务器上的新代码所产生的潜在 Bug
Diffy 不像预定义了每个部分代码有着独立的测试集合的单元测试工具,Diffy 更像一个函数式测试工具,它针对整体 web 服务。Diffy 充当代理接收 HTTP 请求,再把请求分发给两套服务,一个良好运行的,另一个是有潜在问题的。然后 Diffy 收集两者的响应作对比,给出代码的回归测试集。
很显然,有很多可能导致两套服务一定会有微小的差异,包括不同的时间戳、调用随机值生成器或者其他原因。为了避免这些差异引出的误报,Diffy 运行了三套服务:两套运行着完全相同的正常版本的代码,另一套运行着全新的代码。除了不确定的噪音(时间戳、随机值等),两台相同实例的响应应该也是完全相同的。当和备用机比较响应的时候,这些不确定的噪音是要忽略的。经过对比找到噪音为何并排除其影响是避免误报的关键。
安全起见,Diffy 默认忽略 POST、PUT 和 DELETE 操作,但是他们也可以被启用。
Diffy 用 Scala 编写而成,基于 Apache 2.0 协议开源,托管在 GitHub。
来自: InfoQ