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

Что такое Charles?

1.0 Junior🔥 171 комментариев
#Инструменты тестирования

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

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

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

Что такое Charles?

Charles — это прокси-сервер (или HTTP-прокси / монитор трафика), работающий на локальной машине и предназначенный для перехвата, анализа и модификации HTTP/HTTPS-трафика между вашим компьютером и интернетом. Это один из ключевых инструментов в арсенале QA-инженера для тестирования клиент-серверных приложений, особенно веб-сайтов, мобильных приложений и API.

Charles выступает в роли «человека посередине» (Man-in-the-Middle), через который проходит весь сетевой трафик. Это позволяет детально исследовать запросы и ответы, что невозможно сделать с помощью обычного браузера или встроенных инструментов разработчика.

Ключевые возможности Charles для QA-инженера

  • Перехват и просмотр трафика: Все HTTP/HTTPS запросы и ответы, включая заголовки, методы, URL, тела запросов (JSON, XML, формы) и статус-коды, отображаются в удобной иерархической структуре.
  • Отладка мобильных приложений: Настройка Charles в качестве прокси на мобильном устройстве позволяет анализировать и дебажить трафик, идущий с Android/iOS приложений. Это незаменимо для тестирования API-интеграций, проверки отправляемых данных и логики работы приложения.
  • Модификация запросов и ответов «на лету» (Breakpoints): Можно поставить точку останова на конкретный запрос или ответ. Когда приложение отправляет такой запрос, Charles приостанавливает его, позволяет изменить любые параметры (URL, заголовки, тело) и только затем отправляет дальше. Аналогично можно изменить ответ от сервера перед тем, как он попадёт в приложение. Это используется для:
    *   Тестирования обработки ошибок (например, подмена успешного ответа 200 на 500).
    *   Проверки валидации данных на стороне клиента (отправка невалидных данных).
    *   Эмуляции различных сценариев без необходимости менять код бэкенда.
  • Повтор и редактирование запросов (Repeat & Compose): Любой перехваченный запрос можно скопировать, отредактировать и отправить заново. Это ускоряет тестирование API, проверку разных входных данных и воспроизведение найденных багов.
  • Создание мока ответов (Map Local / Map Remote):
    *   **Map Local** позволяет заменить ответ от удалённого сервера на заранее подготовленный файл (например, `.json`) с локального компьютера. Идеально для тестирования фронтенда, когда бэкенд ещё не готов, или для проверки UI при разных структурах ответа.
    *   **Map Remote** заменяет URL запроса на другой, что полезно для переключения между тестовыми, стейджинг и продакшн-окружениями.
  • Throttling (Имитация медленных сетей): Можно искусственно ограничить скорость и увеличить задержку сети, чтобы имитировать работу приложения в условиях плохого 3G или EDGE-соединения. Это помогает находить проблемы с таймаутами, прогресс-барами и общей отзывчивостью UI.
  • Расшифровка HTTPS-трафика: Charles может расшифровывать HTTPS-трафик при установке своего SSL-сертификата в систему или на устройство в качестве доверенного корневого. Это обязательный шаг для анализа защищённого трафика.

Пример типичного сценария использования в QA

Задача: Протестировать, как мобильное приложение обрабатывает ошибку «503 Service Unavailable» от платежного шлюза.

Действия в Charles:

  1. Находим в логе Charles запрос на оплату (например, POST /api/v1/payment).
  2. Кликаем правой кнопкой мыши на запрос и выбираем "Breakpoints".
  3. Инициируем оплату в приложении. Charles автоматически остановит соответствующий ответ от сервера.
  4. В открывшемся окне редактируем ответ:
    *   Меняем статус-код с `200 OK` на `503 Service Unavailable`.
    *   Изменяем тело ответа на корректное JSON-сообщение об ошибке.
  1. Нажимаем "Execute". Модифицированный ответ уходит в приложение.
  2. Наблюдаем в приложении: появилось ли корректное сообщение пользователю, не упало ли приложение, сохранился ли порядок данных.

Практический пример настройки Breakpoint

# Charles не требует написания кода, но вот как выглядит логика его работы:

1. Приложение отправляет: POST /api/order { "item_id": 123 }
2. Charles (с активным брейкпоинтом) перехватывает запрос.
3. Инженер вручную меняет тело запроса в интерфейсе Charles на { "item_id": "invalid_string" }.
4. Charles отправляет модифицированный запрос на сервер.
5. Инженер анализирует ответ сервера на невалидные данные прямо в Charles.

Вывод для QA: Charles — это не просто «сниффер». Это мощный интерактивный инструмент для тестирования, отладки и контроля сетевого взаимодействия. Он значительно расширяет возможности QA-инженера, позволяя глубже тестировать логику приложения, работу API и его устойчивость к различным сетевым условиям и данным, что напрямую влияет на качество и надёжность продукта.

Что такое Charles? | PrepBro