Как с помощью Charles Proxy можно изменять параметры сетевых запросов и ответов?

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

Ответ

Charles Proxy предоставляет несколько ключевых функций для модификации сетевого трафика:

Основные инструменты:

  • Breakpoints (Точки останова): Позволяют перехватить запрос или ответ перед его отправкой/получением, вручную изменить данные и продолжить выполнение.
    • Пример: Изменить user_id в теле POST-запроса или статус-код в ответе сервера.
  • Map Local / Map Remote:
    • Map Local: Заменяет ответ от удаленного сервера содержимым локального файла (например, JSON). Используется для тестирования различных сценариев ответа API.
    • Map Remote: Перенаправляет запросы с одного URL на другой, что полезно для тестирования с разными окружениями.
  • Rewrite Rules: Автоматическое изменение запросов и ответов на основе заранее заданных правил (поиск и замена).
  • Throttling (Ограничение скорости): Эмуляция медленных сетевых условий (2G, 3G) для проверки поведения приложения.

Пример скрипта (Charles Proxy Local Rewrite) для добавления параметра отладки:

// Этот скрипт добавит параметр debug=true ко всем запросам к api.example.com
if (oRequest.host().contains("api.example.com")) {
    oRequest.url().addQueryParameter("debug", "true");
}

Важно: Для перехвата HTTPS-трафика необходимо установить корневой сертификат Charles на тестовое устройство или в эмулятор.