宣布 Chaos Proxy API:在 CI/CD 中自动化网络混沌 🚀

发布: (2025年12月21日 GMT+8 22:45)
6 min read
原文: Dev.to

Source: Dev.to

Ilya Ploskovitov

超越 “本地主机” 测试

直到现在,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

Back to Blog

相关文章

阅读更多 »