Для чего используются сниферы?
Что проверяют
Умеете ли вы смотреть на трафик между клиентом и сервером и использовать это в тестировании, а не просто знаете слово Wireshark. Следом обычно спрашивают, как перехватить HTTPS с мобильного устройства и как подменить ответ сервера.
Как отвечать
Разделите инструменты на два класса:
- анализаторы пакетов: Wireshark,
tcpdump. Слушают сетевой интерфейс и видят всё: TCP, DNS, TLS-рукопожатия. Нужны, когда проблема ниже HTTP: таймауты, обрывы соединения, неверный DNS; - отладочные HTTP(S)-прокси: Charles, Fiddler, mitmproxy, Proxyman. Встают посредником между клиентом и сервером, показывают запросы и ответы в читаемом виде и позволяют их менять.
Задачи тестировщика, которые так решаются:
- локализация бага: клиент отправил неверные параметры или сервер вернул неверные данные. От этого зависит, на кого заводить дефект;
- подмена ответов: в Charles это Breakpoints, Map Local и Rewrite. Можно вернуть
500, пустой список или обрезанный JSON и проверить, как приложение переживает ошибки, не дожидаясь их на стенде; - медленная сеть: троттлинг, чтобы увидеть лоадеры, таймауты и повторные запросы;
- безопасность: не уходят ли токены и пароли в открытом виде, в URL или в запросы аналитики.
HTTPS читается только после установки корневого сертификата прокси на устройство. На Android начиная с версии 7 приложения по умолчанию не доверяют пользовательским сертификатам, поэтому в отладочной сборке нужен network_security_config, а при certificate pinning прокси не пропустят вовсе. Для веба часто хватает вкладки Network в DevTools и экспорта в HAR.
Где спотыкаются
Называют снифером только Wireshark и не знают про прокси. Для тестирования мобильного API Charles или mitmproxy берут гораздо чаще.
Не могут объяснить, почему HTTPS-трафик не виден, и не слышали про сертификат и pinning.
Прикладывают к багу скриншот вместо сохранённой сессии или HAR-файла, хотя разработчику нужны точные заголовки, тело и время ответа. И помните: снимать трафик можно только в своих тестовых средах, перехват чужого без разрешения может нарушать закон.