近日,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 读者交流群)。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论