В ходе тестирования приложения, а в частности при работе с http-запросами нередко возникает потребность в отслеживании запросов и ответов. Например, при сверке с документацией или в случае ее отсутствия при работе с ПО (программным обеспечением). На помощь придут снифферы — приложения или сервисы, позволяющие сканировать пакеты, которые пересылаются через выбранную сеть (локальную или внешнюю). Например, существует очень удобное приложение Fiddler, которое позволяет не только отслеживать, но и отправлять запросы. Расширенная версия предоставляется на платной основе, а для операционной системы Windows можно бесплатно скачать упрощенную — Fiddler Classic.
Но мы предлагаем обратить внимание на не менее функциональный и полностью бесплатный аналог — Wireshark, о котором пойдет речь в этом лонгриде.
Оба сниффера выполняют примерно одинаковую задачу — отслеживают передаваемые пакеты. Их разница в том, что пока Fiddler работает «из коробки» и довольно прост для освоения. Wireshark имеет более высокий порог входа, но предоставляет больше возможностей через обширные настройки и поддержку различных плагинов.
Конечно же, выбор в пользу того или иного сниффера всегда остается за пользователем :)
Пошаговое руководство для отслеживания http-запроса
Шаг 1. Начало работы
Методы работы Wireshark во многом совпадают с Fiddler: запустить отслеживание трафика в нужной сети, выполнить операции, запросы для которых необходимо отследить, завершить процесс, просмотреть логи.
Запускаем программу > появится окно с выбором сети > выбираем необходимые пакеты для отслеживания:
В качестве примера будем использовать сеть «Ethernet 2» (с подключением к интернету). Если требуется работать с локальным оборудованием, то в этом случае выбираем локальную сеть.
Шаг 2. Настройка
Wireshark начнет автоматическое отслеживание пакетов сразу после выбора сети, поэтому стоит его отключить и отбросить предыдущие значения. Перед тем как приступить к операциям с запросами, начинаем заново.
Навигация по кнопкам:
Шаг 3. Фильтрация
После того как мы начали отслеживание, выполняем нужные нам операции, и снова останавливаем процесс. В нашем случае — это запрос информации из базы данных (БД) для тестов.
В итоге получаем список всех перехваченных пакетов и сторонних в том числе. Для фильтрации только интересующих нас http-запросов выбираем строку:
Чтобы отфильтровать запросы, достаточно указать «http» в строку фильтра.
Также существуют более точные поисковые команды для отбора нужных запросов, например, «http.response.code == 404» оставит только запросы с кодом ответа 404.
Полный список опций по фильтрам можно найти в документации Wireshark: https://www.wireshark.org/docs/dfref/h/http.html
Шаг 4. Отбор http-запросов
После проведенных манипуляций получаем выдачу следующего вида:
Здесь представлены все произведенные http-запросы.
Шаг 5. Извлечение .json-выдачи
Мы хотим получить .json-выдачу из запроса (ответа) 505. Для этого два раза кликаем по нему и в открывшейся форме выбираем «JavaScript Object Notation»:
В нижней части формы представлен hex-код выдачи (слева), и ее представление в текстовой форме (справа). Для того чтобы получить только .json-выдачу, нажимаем на окно с ней правой кнопкой мыши, и выбираем «..as Printable Tex»:
Шаг 6. Завершение
Теперь в буфере обмена находится вся .json-выдача, которую перенесем в более удобный редактор, например Notepad++:
На основе полученной .json-выдачи можно делать выводы о требованиях к реализуемым тестам.
Заключение
Итак, мы на примере разобрали отслеживание http-пакетов, необходимое для исследования API-составляющей приложения или сервиса при неполной или отсутствующей документации.
Wireshark предоставляет инструменты, необходимые для контроля передаваемых пакетов и покрывает весь функционал более известного приложения — Fiddler. Существенным преимуществом Wireshark стоит назвать модель Open Source, удобный пользовательский интерфейс, а также большое количество форумов и обсуждений в сети, где без труда можно найти решение конкретного вопроса. Кроме того, Wireshark предоставляет возможность бесплатного использования и поддерживается пользователями за счет их добровольных взносов.
__________________
Предлагаем подписаться на наши социальные сети и блог, чтобы не пропустить интересные события и материалы по автоматизации тестирования (SDET):
Telegram: https://t.me/simbirsoft_dev
ВКонтакте: https://vk.com/simbirsoft_team
Habr: https://habr.com/ru/company/simbirsoft/blog/
YouTube: https://www.youtube.com/user/SimbirSoft/videos