宣布 Chaos Proxy API:在 CI/CD 中自动化网络混沌 🚀
Source: Dev.to
超越 “本地主机” 测试
直到现在,Debuggo 一直是进行手动测试的绝佳工具。你可以启动一个代理,连接手机,并验证你的应用如何处理 503 错误或高延迟。它非常适合临时调试。
但手动测试无法扩展。
你不能要求 QA 团队在每一个 Pull Request 上手动验证 离线模式 的处理。你也不能在每次部署前手动检查支付网关是否能正确处理双击。
要构建真正具备弹性的应用,你需要 持续混沌。
今天,我们推出 Chaos Proxy API。现在,你可以在 CI/CD 流水线(GitHub Actions、GitLab CI、Jenkins)中以编程方式创建代理、配置混沌规则并将其拆除。
Source: …
架构:在 CI 中的工作原理
API 让你可以直接在流水线脚本中完整控制 Chaos Proxy 的生命周期:
| 操作 | 描述 |
|---|---|
| Create | 按需启动全新、隔离的代理实例(POST /sessions)。 |
| Configure | 通过 JSON(PUT /rules)应用混沌规则(延迟、错误、响应体篡改)。 |
| Certify | 下载 CA 证书,以便在 Android 模拟器或 iOS 模拟器上安装(GET /certs)。 |
| Test | 运行你的端到端套件(Playwright、Appium、Cypress),让流量通过代理。 |
| Destroy | 测试结束后清理资源(DELETE /sessions)。 |
实际案例:GitHub Actions
下面是完整的工作流示例。它会启动一个代理,注入 3 秒延迟 来模拟慢网络,运行测试以确保 UI 能正确处理 “Rage Clicks”,随后关闭所有资源。
name: 🧪 Chaos E2E Tests
on: [push]
jobs:
chaos-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# 1. Start the Proxy
- name: 🚀 Start Debuggo Proxy
id: start_proxy
run: |
RESPONSE=$(curl -s -X POST https://chaos-proxy.debuggo.app/api/v1/sessions \
-H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}")
# Extract and save details to ENV
echo "PROXY_ID=$(echo $RESPONSE | jq -r .id)" >> $GITHUB_ENV
echo "PROXY_HOST=$(echo $RESPONSE | jq -r .host)" >> $GITHUB_ENV
echo "PROXY_PORT=$(echo $RESPONSE | jq -r .port)" >> $GITHUB_ENV
echo "PROXY_AUTH=$(echo $RESPONSE | jq -r .auth)" >> $GITHUB_ENV
# 2. Configure Chaos (The "Bad 3G" Simulation)
- name: 💣 Configure Chaos Rules
run: |
curl -X PUT https://chaos-proxy.debuggo.app/api/v1/sessions/$PROXY_ID/rules \
-H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"rules": [
{
"url_pattern": "*/api/checkout",
"delay": 3000,
"error_code": null
}
]
}'
# 3. Run Tests
- name: 🧪 Run Playwright Tests
run: |
# Route traffic through the authenticated proxy
export HTTPS_PROXY="http://$PROXY_AUTH@$PROXY_HOST:$PROXY_PORT"
npx playwright test
# 4. Cleanup (Always run this, even if tests fail)
- name: 🧹 Cleanup
if: always()
run: |
curl -X DELETE https://chaos-proxy.debuggo.app/api/v1/sessions/$PROXY_ID \
-H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}"
Source: …
API 参考
使用这些端点将 Chaos Proxy 集成到您的自定义脚本中。
身份验证
所有请求必须在 Authorization 头中包含您的 API 密钥。可在仪表板设置中生成密钥。
Authorization: Bearer dbg_ci_YOUR_KEY
启动代理会话
创建一个新的隔离代理容器。返回主机、端口和凭证。
端点: POST /api/v1/sessions
响应示例:
{
"id": "sess_abc123",
"host": "proxy-us-east.debuggo.app",
"port": 10245,
"auth": "user:pass"
}
配置规则
实时更新混沌逻辑。您可以在测试过程中更改规则(例如,先测试成功,然后注入失败)。
端点: PUT /api/v1/sessions/{session_id}/rules
请求体示例:
{
"rules": [
{
"url_pattern": "*/api/v1/checkout",
"failure_rate": 100,
"error_code": 503,
"delay": 0
},
{
"url_pattern": "*/api/v1/search",
"delay": 2000
}
]
}
下载 CA 证书
获取根 CA 证书。对于在 CI 中自动化设置 Android 模拟器或 iOS 模拟器至关重要。
端点: GET /api/v1/certs/ca.pem
使用示例:
curl -O https://chaos-proxy.debuggo.app/api/v1/certs/ca.pem
# 然后通过 adb 等方式安装
停止会话
停止代理并释放端口。
端点: DELETE /api/v1/sessions/{session_id}
为什么要自动化 Chaos?
捕获 “不开心路径” 中的回归。
开发者常因只关注正常流程而破坏错误处理逻辑。自动化的混沌测试能够提前捕获边缘案例的故障,让你的应用在生产环境中保持韧性。
本地很少看到错误。对 500 错误 进行自动化测试,可确保你的 “出现了点问题” 页面永不崩溃。
验证幂等性
在 CI 期间向支付接口注入延迟,可验证后端在请求到达生产前能够正确处理重复请求(狂点)。
原生移动端测试
不同于 Playwright 内置的 page.route(仅在浏览器上下文中工作),Debuggo 在系统层面运行。这使你能够在 CI 流水线中对运行于模拟器的 原生 Android 和 iOS 应用 进行测试。
准备好有意让你的构建出错了吗?获取你的 API Key。

