💥 在用户之前破坏你的 API。用于 CI/CD 的自动化网络混沌。

发布: (2025年12月22日 GMT+8 01:46)
4 min read
原文: Dev.to

Source: Dev.to

故事:我为何构建 Chaos Proxy

我们都有过这种经历。功能在 localhost 上完美运行,端到端测试轻松通过。然后我们部署到生产环境,使用 3G 网络的用户开始抱怨应用卡顿、崩溃,甚至——最糟糕的——被双重收费

我意识到我们的 CI 流水线生活在一个 0 ms 延迟、100 % 正常运行 的幻想世界里。

我想在 GitHub Actions 中自动模拟“糟糕网络”条件,特别是针对 移动应用后端幂等性检查。在 Playwright 中模拟请求并不能覆盖原生 Android/iOS 模拟器,而本地代理又难以脚本化。

于是我构建了 Chaos Proxy —— 一个基于云的、可编程的代理,专为 CI/CD 设计。

工作原理

Chaos Proxy 是一个 API‑first 平台。你可以把网络基础设施当作代码来管理。

  1. 创建 – 你的 CI 脚本调用 API,启动一个隔离的、短暂的代理容器。
  2. 连接 – 将你的端到端测试流量(Web、Android、iOS)通过该代理路由。
  3. 破坏 – 发送 API 命令实时注入延迟、触发 503 错误或篡改请求头。

Demo: 在 Chrome 中模拟 503 错误(可视化)

关键特性

  • CI/CD API – 以编程方式启动和销毁代理。无需管理长期运行的服务器。
  • “愤怒点击”测试 – 在特定端点(例如 /api/pay)注入 3 秒延迟,以确保 UI 在用户二次点击前正确禁用按钮。
  • 原生移动支持 – 工作在网络层(HTTP 代理),因此 Android 模拟器和 iOS 模拟器开箱即用。
  • 响应模糊化 – 自动篡改 JSON 内容,检测你的应用在遇到畸形数据时是否会崩溃。

实际演示

使用 curl 向结账流程注入 503 Service Unavailable 错误:

curl -X PUT https://api.debuggo.app/v1/sessions/$SESSION_ID/rules \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "rules": [
      {
        "url_pattern": "*/api/checkout",
        "failure_rate": 50,
        "error_code": 503
      }
    ]
  }'

Demo: 通过终端(CLI)自动化网络混沌

你可以如何参与

我刚刚推出 Public API Beta,正在寻找对“易碎”应用感到厌倦、希望构建真正弹性的 QA 工程师和 DevOps 同仁。

  • 试用免费套餐 – 可手动或通过 API 免费开始使用。
  • 破坏你的应用 – 运行“愤怒点击”测试(参见我们博客的 Tip #5)。
  • 提供反馈 – 告诉我你还需要哪些集成!

别再只信任 localhost,开始测试真实世界吧。

Back to Blog

相关文章

阅读更多 »