Как использовать снифферы трафика (Charles Proxy, Wireshark) для тестирования?

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

Ответ

Снифферы трафика — инструменты для перехвата и анализа сетевых запросов, незаменимые для отладки API, проверки безопасности и диагностики проблем.

Charles Proxy (для HTTP/HTTPS)

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

  • Просмотр трафика: Детальный разбор запросов/ответов (заголовки, тело, timing).
  • Модификация "на лету":
    • Breakpoints: Остановка и изменение запроса или ответа перед отправкой.
    • Map Local/Remote: Подмена ответа сервера на локальный файл или другой удаленный ресурс.
  • Throttling: Эмуляция медленных сетей (3G, Edge).
  • Повтор запросов (Repeat): Для нагрузочного тестирования или воспроизведения сценариев.

Настройка для HTTPS:

  1. Установите корневой сертификат Charles (Help -> SSL Proxying -> Install Charles Root Certificate).
  2. Включите SSL Proxying для нужных доменов (Proxy -> SSL Proxying Settings).
  3. На мобильном устройстве настройте прокси на ПК с Charles и установите сертификат.

Wireshark (для низкоуровневого анализа)

Анализирует сырые сетевые пакеты (Ethernet, TCP, UDP). Применение в тестировании:

  • Диагностика сетевых проблем: Потеря пакетов, высокие задержки (latency), ретрансмиты.
  • Анализ не-HTTP трафика: Работа с базами данных, специализированными протоколами.
  • Проверка безопасности: Обнаружение незашифрованных передач конфиденциальных данных.

Пример фильтра Wireshark для отладки API:

# Показать только HTTP POST запросы с определенного IP
http.request.method == "POST" && ip.src == 192.168.1.100
# Показать все пакеты, связанные с конкретным TCP-потоком
tcp.stream eq 10

Выбор инструмента:

  • Используйте Charles/Fiddler для повседневной отладки HTTP(S) API и модификации трафика.
  • Используйте Wireshark для глубокой сетевой диагностики, когда проблемы лежат ниже уровня приложения.