💥 在用户之前破坏你的 API。用于 CI/CD 的自动化网络混沌。
Source: Dev.to
故事:我为何构建 Chaos Proxy
我们都有过这种经历。功能在 localhost 上完美运行,端到端测试轻松通过。然后我们部署到生产环境,使用 3G 网络的用户开始抱怨应用卡顿、崩溃,甚至——最糟糕的——被双重收费。
我意识到我们的 CI 流水线生活在一个 0 ms 延迟、100 % 正常运行 的幻想世界里。
我想在 GitHub Actions 中自动模拟“糟糕网络”条件,特别是针对 移动应用 和 后端幂等性检查。在 Playwright 中模拟请求并不能覆盖原生 Android/iOS 模拟器,而本地代理又难以脚本化。
于是我构建了 Chaos Proxy —— 一个基于云的、可编程的代理,专为 CI/CD 设计。
工作原理
Chaos Proxy 是一个 API‑first 平台。你可以把网络基础设施当作代码来管理。
- 创建 – 你的 CI 脚本调用 API,启动一个隔离的、短暂的代理容器。
- 连接 – 将你的端到端测试流量(Web、Android、iOS)通过该代理路由。
- 破坏 – 发送 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
}
]
}'
你可以如何参与
我刚刚推出 Public API Beta,正在寻找对“易碎”应用感到厌倦、希望构建真正弹性的 QA 工程师和 DevOps 同仁。
- 试用免费套餐 – 可手动或通过 API 免费开始使用。
- 破坏你的应用 – 运行“愤怒点击”测试(参见我们博客的 Tip #5)。
- 提供反馈 – 告诉我你还需要哪些集成!
别再只信任 localhost,开始测试真实世界吧。