HookChaos:Webhook 压力测试工具 CLI/开源项目

发布: (2026年3月15日 GMT+8 05:19)
3 分钟阅读
原文: Dev.to

Source: Dev.to

一次订单被重复完成。我们花了两天才发现是我们的处理器不是幂等的,而提供方在超时后进行了重试。好吧,吸取了教训。
随后又发生了同样的事。不同的 bug,但同一类——一个我们从未测试过的 webhook 边缘情况,因为我们的“测试”基本上就是:发送一次 ping,收到 200,直接上线。

这时我意识到我们根本没有办法测试这些糟糕的情况:重复事件、乱序投递、延迟事件导致状态过期、签名验证因尾随换行符而失败。我们只能祈祷生产环境不会出现这些问题。

生产环境总会把它们暴露出来。

于是我创建了 HookChaos——一个本地优先的 CLI,在生产环境之前把这些场景抛向你的端点。

http://localhost:3000/webhooks


HookChaos

HookChaos 是 webhook 失效场景的包管理器。它是一个本地优先的 CLI,用于可复现的 webhook 失效模拟,专为那些只有在 webhook 消费者看到以下情况时才会显现的 bug 而构建:

  • 重复事件
  • 乱序投递
  • 重试在状态已改变后才到达
  • 签名或时间戳验证失败
  • 序列中的选择性丢失

HookChaos 将这些失效模式转化为可重用的包,你可以随时运行、在本地保存、发布到基于 Git 的注册表,并从历史中回放。

为什么会有它

大多数 webhook 工具只帮助你 接收 流量,但当真正的 bug 出现在第一次成功请求之后时,这远远不够:

  • 同一事件被投递两次。
  • 后来的事件先到达。
  • 重试在你的状态已经改变后才落地。
  • 签名或时间戳验证拒绝了本应有效的负载。
  • 某一次投递消失,而其余序列继续进行。

Install

# Install HookChaos into ~/.local/bin
cd /path/to/hookchaos
make install
export PATH="$HOME/.local/bin:$PATH"

View on GitHub


你遇到过最糟糕的 webhook bug 是什么?(这正是场景列表将要增长的方式。)

0 浏览
Back to Blog

相关文章

阅读更多 »