← Назад к вопросам

Какие знаешь функции Charles?

2.0 Middle🔥 82 комментариев
#Инструменты тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные функции Charles Proxy как инструмента для тестирования и отладки

Charles Proxy — это многофункциональный HTTP-прокси / монитор трафика, который я активно использую в работе QA Engineer для тестирования веб- и мобильных приложений. Его возможности можно разделить на несколько ключевых категорий.

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

Это базовая и самая мощная функция. Charles выступает как прокси-сервер между клиентом (браузер, мобильное приложение) и сервером, записывая весь HTTP/HTTPS-трафик.

  • Структурированный просмотр: Запросы и ответы группируются по хостам, что упрощает навигацию.
  • Детализация: Для каждого запроса можно просмотреть:
    *   **Заголовки (Headers)**
    *   **Тело запроса/ответа (Contents)** в различных форматах: JSON, XML, HTML, plain text, hex.
    *   **Сводку (Summary):** URL, метод, статус-код, время выполнения, размер данных.

# Пример того, как Charles видит запрос:
Запрос GET https://api.example.com/v1/user
Статус: 200 OK
Время: 150 мс
Размер: 2.5 KB
Заголовки: Authorization: Bearer ..., Content-Type: application/json
Тело ответа: {"id": 123, "name": "John Doe"}

2. Маппинг и подмена данных (Map Local / Map Remote)

Критически важные функции для тестирования различных сценариев без необходимости деплоя на реальный сервер.

  • Map Local: Подменяет ответ от удаленного сервера на содержимое локального файла. Используется для:
    *   Тестирования клиента на специфичных (ошибочных, пустых, больших) данных.
    *   Проверки UI при недоступном бэкенде.
    *   Воспроизведения багов по конкретному ответу API.
  • Map Remote: Перенаправляет запросы с одного домена/пути на другой. Полезно для тестирования на стейджинг-среде, указывая на продакшн-домен, или для обхода CORS.

3. Мокапирование (Модификация запросов и ответов) с помощью Breakpoints

Функция Breakpoint позволяет приостановить выполнение запроса или ответа, чтобы вручную изменить его данные перед отправкой дальше.

  • Типичное использование:
    1.  Установить брейкпоинт на конкретный URL.
    2.  Отправить запрос из приложения.
    3.  Перехватить запрос в Charles, изменить, например, параметр тела `{"status": "active"}` на `{"status": "banned"}`.
    4.  Отправить измененный запрос на сервер и проанализировать ответ приложения.
  • Это идеально для негативного тестирования, проверки валидации и обработки ошибок.

4. Throttling (Имитация медленных сетей)

Charles может искусственно ограничивать скорость и качество сетевого соединения.

  • Настраиваемые параметры: Пропускная способность (Bandwidth), задержка (Latency), уровень потери пакетов (Packet Loss).
  • Для чего нужно: Проверка поведения приложения в условиях слабого 3G/EDGE, отображение лоадеров, таймауты, отказоустойчивость. Это обязательный этап тестирования мобильных приложений.

5. Повтор запросов (Repeat / Repeat Advanced)

Позволяет легко отправить один и тот же запрос несколько раз.

  • Repeat: Простой повтор выбранного запроса.
  • Repeat Advanced: Мощный инструмент для нагрузочного тестирования (в простых сценариях). Можно задать количество итераций, количество параллельных потоков и интервалы. Полезно для проверки стабильности и утечек памяти на стороне клиента при частых запросах.

6. SSL Proxying (Расшифровка HTTPS-трафика)

Без этой функции современное тестирование невозможно, так как почти весь трафик шифруется.

  • Charles генерирует свой самоподписанный сертификат, который нужно установить в систему и/или на мобильное устройство как доверенный корневой.
  • После этого можно просматривать и расшифровывать содержимое HTTPS-запросов и ответов, что абсолютно необходимо для анализа API.

7. Инструменты для работы с API (Compose)

Простой, но удобный REST-клиент внутри Charles.

  • Позволяет вручную создавать и отправлять HTTP-запросы любого типа (GET, POST, PUT, DELETE).
  • Удобно для быстрой проверки эндпоинта, без использования Postman или cURL.

8. Режим записи (Recording) и структурирование сессий

  • Charles непрерывно записывает весь трафик, проходящий через прокси.
  • Сессию можно сохранить в файл (.chls) и позже открыть для анализа или отладки. Это бесценно для документирования багов: вместо длинного описания можно приложить файл сессии, где разработчик увидит всю цепочку запросов.

9. Визуализация данных

  • Sequence View: Хронологический список всех запросов — лучший вид для анализа последовательности действий.
  • Chart View: Представляет трафик в виде графика по времени, что помогает визуально идентифицировать "тяжелые" запросы или проблемы с производительностью.

В заключение, Charles — это не просто "сниффер трафика". Это комплексная среда для отладки (debugging environment), которая позволяет QA-инженеру не только пассивно наблюдать за обменом данными, но и активно вмешиваться в него, моделируя различные, в том числе и аномальные, условия работы приложения. Его использование значительно повышает глубину тестирования клиент-серверного взаимодействия, покрывая такие аспекты, как сетевая безопасность, производительность, устойчивость к ошибкам API и корректность бизнес-логики.

Какие знаешь функции Charles? | PrepBro