Какие ключевые функции предоставляет прокси-отладчик Charles?

«Какие ключевые функции предоставляет прокси-отладчик Charles?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Charles Proxy — это инструмент для отладки и анализа сетевого трафика. Его основные функции:

1. Перехват и анализ трафика

  • Просмотр запросов/ответов: Детальная информация по каждому HTTP/HTTPS-запросу: URL, метод, статус, заголовки, тело.
  • Расшифровка HTTPS: Позволяет просматривать зашифрованный трафик после установки сертификата Charles в систему доверенных.

2. Манипуляция трафиком (Mocking & Stubbing)

  • Breakpoints (Точки останова): Приостановка запроса или ответа для их изменения «на лету» перед отправкой.
  • Map Local: Подмена ответа от сервера содержимым локального файла. Незаменимо для тестирования различных сценариев без деплоя бэкенда.
    • Практика: Правый клик на запросе → Map Local → выбрать JSON/XML файл с mock-данными.
  • Map Remote: Перенаправление запросов с одного домена на другой.
  • Rewrite Rules: Автоматическое изменение частей запроса или ответа (заголовков, URL, тела) по заданным правилам.

3. Тестирование производительности и сетевых условий

  • Throttling (Ограничение скорости): Эмуляция медленных сетей (3G, EDGE) для проверки поведения фронтенда.
  • Repeat/Stress Test: Многократный повтор выбранного запроса для нагрузочного тестирования или воспроизведения race condition.

4. Организация и фильтрация

  • Focus на домен: Скрытие всего трафика, кроме указанных доменов.
  • Структурирование по сессиям: Сохранение сессий для последующего анализа или отчета.

5. Автоматизация

  • Charles CLI: Запуск в headless-режиме и экспорт данных для интеграции в CI/CD-конвейеры.

Пример сценария использования Map Local:

  1. Сервер обычно возвращает:
    {"status": "success", "data": []}
  2. Создаем локальный файл error_500.json:
    {"status": "error", "code": 500, "message": "Internal Server Error"}
  3. Настраиваем Map Local для эндпоинта /api/orders. Теперь клиент получит наш mock-ответ с ошибкой, что позволяет проверить обработку ошибок на фронтенде.