Всем привет! Меня зовут Ксения Мерзлозубова, и я тестирую мобильные приложения в компании ATI.SU.

Для тестирования большинства задач мобильному тестировщику необходим сниффер — инструмент для перехвата и анализа трафика. Сейчас существует множество снифферов, но самые популярные — это Charles и Fiddler. В этой статье я опишу их достоинства и недостатки, обращу внимание на фичи, удобство использования, дизайн и еще некоторые нюансы. Снифферы всегда помогают мне при ручном тестировании, поэтому надеюсь, что и вы сможете выбрать один из них или будете использовать все. 

Добавлю, что у Fiddler существует 2 версии: Classic и Everywhere. Расскажу про обе.

Charles

Тестировщики обычно называют его «Чарльз» или ласково «Чарлик». Для начала обсудим основные плюсы этого сниффера.

Плюсы

Кроссплатформенность. Есть версии на Mac OS, Windows и Linux. Это очевидное преимущество, если каждый из ваших коллег выбрал себе рабочую ОС по душе, и нужен общий инструмент для тестирования.

Удобная панель инструментов с такими функциями как очищение сессии, редактирование и перевыполнение запроса, остановкой перехвата трафика и другими.

Панель инструментов
Панель инструментов

Классификация запросов по хостам. У сниффера есть экраны Structure и Sequence. На экране Sequence перехваченные запросы отображаются последовательно, а на экране Structure еще и с группировкой по хостам. Для удобства можно настроить фокус на определенный хост. Тогда остальные запросы попадут в группу Other hosts. Этот вариант подойдет, если вы тестируете небольшую группу запросов к одному хосту, а остальные в текущий момент не важны.

Возможность экспортировать настройки. Например, можно попросить коллегу экспортировать настройки Charles и загрузить их себе, чтобы не настраивать все опции вручную. Настройки экспортируются в формате xml.

Возможность просматривать несколько сессий в соседних закладках. Здесь под «сессией» я подразумеваю один сеанс перехвата трафика. Например, вы воспроизводите сложный баг, и вам нужно повторить его дважды, чтобы сравнить траффик. Тогда можете использовать для каждого повтора отдельную сессию, а затем переключаться между ними.

Современный интерфейс. В отличие от Fiddler Classic, у которого интерфейс напоминает десктопные приложения из 2000-х, Charles выглядит актуальнее.

Минусы

Нет возможности наложить таймаут на запрос. При тестировании часто требуется проверить, как поведет себя конкретный запрос при задержке ответа и нестабильном интернете. К сожалению, Charles позволяет создать такую задержку только для хоста. Настройка влияет на все запросы указанного хоста, а их может быть очень и очень много. Найти настройку можно так: Proxy — Trottle Settings.

Trottle Settings
Trottle Settings

Нет возможности экспортировать сессию в формате txt или json. Теперь под «сессией» я подразумеваю запрос и ответ вместе, одним файлом. Charles предлагает форматы chls, csv, trace, har и другие.

Форматы экспорта сессии
Форматы экспорта сессии

Документация без скриншотов и видео. У этого сниффера есть документация на официальном сайте, и она целиком состоит из текста. На мой взгляд, документация платного инструмента должна быть как минимум дополнена поясняющими скриншотами, а еще лучше видео.

Это платный инструмент. В отличие от Fiddler Classic, у Charles бесплатный только триальный период в 30 дней. Однако, этот минус сомнительный, т.к. хороший инструмент и должен быть платным.

Fiddler Classic

Этот инструмент долгое время был моим любимчиком, так как с него я начинала изучение снифферов.

Плюсы

Удобная подмена ответов. Чтобы подменить ответ, в Fiddler Classic достаточно перетащить запрос на закладку AutoResponder. Далее можно выбрать вариант ответа в Rule Editor или нажать Edit Response и дать волю фантазии.

AutoResponder в Fiddler Classic
AutoResponder в Fiddler Classic

Для сравнения, чтобы подменить ответ в Charles, придется:

  • Копировать url; Добавить настройку подмены (Rewrite).

  • Вставить скопированный url.

  • Создать новое правило подмены (Rewrite rule) для url.

  • Выбрать тип подмены. Например, Body или Status.

  • Выбрать, в запросе или в ответе сделать подмену.

  • Допустим, вы подменяете тело ответа (Body). Тогда нужно заготовить измененное тело заранее и вставить в поле Value.

Rewrite в Charles
Rewrite в Charles

На самом деле шаги не сложные, но путь к подмене ответа длиннее, чем в Fiddler. В качестве альтернативы в обоих снифферах есть возможность подменять ответ на файл.

Много функций вынесены на панель инструментов. На мой взгляд, панель инструментов Fiddler Classic менее удобная, чем у Charles, но разработчики постарались вынести на нее большое количество опций.

Возможность цветового выделения запросов. Для наглядности, можно выделить запрос другим цветом. В Charles я не нашла подобной функции.

Бесплатный инструмент. Из трех инструментов, которые я сравниваю, только Fiddler Classic абсолютно бесплатно можно скачать с официального сайта.

Два способа редактирования запросов. В Fiddler и Charles есть аналогичные способы редактирования запросов. Они позволяют менять любую часть запроса. Покажу их на скриншотах ниже.

Редактирование запроса в Fiddler Classic
Редактирование запроса в Fiddler Classic
Редактирование запроса в Charles
Редактирование запроса в Charles

Однако в Fiddler есть и второй способ: использование редактора запросов Composer. Основное преимущество этого способа в том, что в Composer есть лог измененных и выполненных запросов. В нем очень просто найти запрос, который вы меняли ранее и вернуться к его редактированию.

Документация. Просто почитайте ее на официальном сайте.

Минусы

Только под Windows. Для других ОС на официальном сайте Fiddler предлагается скачать Fiddler Everywhere, о котором я расскажу позже в этой статье.

Устаревший дизайн интерфейса. Этот пункт выглядит очень субъективно, но с ним согласны большинство моих коллег.

Редактирование ответа только в текстовом формате. В AutoResponder есть встроенный редактор ответа. Если ответ содержит множество вложенных структур и полей, то читать его в текстовом виде крайне неудобно, а редактирование в формате json отсутствует. Также нет поиска по тексту в редакторе, поэтому быстро найти нужное поле не получится. Однако, выход есть — можно использовать отдельный текстовый файл для подмены ответа.

Fiddler Everywhere

Перейдем к новому Fiddler. Судя по списку релизов на официальном сайте, этот сниффер появился в 2018 году.

Плюсы

Кроссплатформенность. В отличие от предшественника, у Fiddler Everywhere есть версии под Mac OS, Windows и Linux.

Удобные фильтры запросов. Перехваченные запросы отображаются на закладке Life Traffic. Там можно настроить, какие столбцы показывать, а какие скрывать. Также есть фильтры по каждому столбцу. Если использовать фильтры по нескольким столбцам, то они применяются вместе.

Life Traffic
Life Traffic

Сохранение сессий внутри инструмента  — это преимущество по сравнению с Charles и Fiddler Classic, где сессии нужно экспортировать в файл для сохранения.

Отправка сессий другим пользователям. В Fiddler Everywhere можно поделиться сессией с коллегой, указав его email, если он тоже пользуется этим инструментом. Тут «сессия» — это один или несколько запросов.

Современный интерфейс. В отличие от Fiddler Classic, этот сниффер может похвастаться более актуальным интерфейсом, который напоминает привычный многим тестировщикам Postman.

Улучшенный Composer. В Fiddler Everywhere редактор запросов Composer получил функционал и дизайн, аналогичный Postman, за исключением некоторых функций. Например, нет возможности использовать переменные, писать скрипты или использовать раннер для запуска коллекций.

Сохранение коллекций. В отличие от Charles и Fiddler Classic в этом сниффере можно сохранять запросы в коллекции и давать им названия.

Документация. У Fiddler Everywhere есть подробная документация на официальном сайте.

Минусы

Нет брейкпоинтов. Брейкпоинты позволяют останавливать выполнение запроса и на ходу изменять его. Многие тестировщики привыкли к ним в Charles и Fiddler Classic. На текущий момент есть просьбы пользователей сделать breakpoints к команде разработчиков Progress Telerik. Вот еще пример. Судя по ответам, этот функционал есть в планах на будущее.

Платный инструмент. У сниффера есть бесплатный триальный период в 30 дней, а далее можно выбрать тарифный план.

Дополнительно

Добавлю, что большая часть функционала описанных снифферов совпадает. Они все отлично справляются с редактированием запросов, экспортом и импортом сессий, поиском по части запроса, поэтому на этих функциях я не останавливалась в статье.

В зависимости от проекта и задачи, тестировщику может потребоваться разный функционал сниффера. Если вам приглянулся какой-то инструмент, рекомендую попробовать его на практике, так как ваши рабочие потребности могут отличаться от моих. 

Если у вас есть, что сказать по теме статьи, буду рада комментариям!

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


  1. Tatikoma
    14.10.2021 14:28

    В сравнении с mitmproxy есть какие-то преимущества? - Если смотреть не только на нескучный интерфейс.

    Не хватает информации по технической части. Поддержка шифрования, каких версий. Поддержка HTTP2, поддержка иных протоколов.


    1. Kseniya_M Автор
      14.10.2021 22:57

      Добрый день! К сожалению, mitmproxy я не использую, поэтому не могу их сравнить.

      Насчет HTTP2, он поддерживается в Charles. Также его собирались поддержать в Fiddler Everywhere в 2021 году, однако фича сейчас в разработке.

      Насчет шифрования и других протоколов, затрудняюсь ответить, так как в работе не использую, но запланирую изучение этих тем, спасибо!


  1. monane
    14.10.2021 22:58
    +1

    Минусы

    Только под Windows. Для других ОС на официальном сайте Fiddler предлагается скачать Fiddler Everywhere, о котором я расскажу позже в этой статье.

    простите

    https://www.telerik.com/blogs/fiddler-for-linux-beta-is-here

    это classic работает под mono


    1. Kseniya_M Автор
      14.10.2021 22:59

      Добрый вечер! Согласна, теперь буду в курсе, что под linux тоже есть :)


  1. FeNUMe
    16.10.2021 00:56

    Для меня главный минус чарли это java: при активном использовании запросто сжирает оперативу гигабайтами, а если еще нужно распарсить очень тяжелый ответ, например AMF на пару мегабайт, то запросто может крашнуться вообще. Но по удобству использования он конечно на голову выше фидлера.


    1. Kseniya_M Автор
      20.10.2021 14:20

      Не сталкивалась с таким поведением. Спасибо, что предупредили :)


  1. HackcatDev
    20.10.2021 14:20

    В чем проблема использовать Burp? У него больше всех возможностей по перехвату запросов и их изменению, и из коробки есть всё нужное для автоматического тестирования много чего (перебор значений, генерация запросов, ручные запросы куда угодно и т.д.) Работает на всех платформах


    1. Kseniya_M Автор
      20.10.2021 14:22

      Добрый день! Не могу сказать, что есть какие-то проблемы с ним, так как просто его не пробовала еще:) Все впереди, спасибо за рекомендацию