charles программа для чего

Погружение в удивительный мир Charles для чайников

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

Charles работает и на мобильных устройствах, но в этой статье мы будем рассматривать только версию для Windows. Давайте же начнем!

Установка Charles

Начать следует, конечно же, с установки. Скачиваем программу с официального сайта разработчика.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Программа платная, но есть тестовый период на 30 дней. Даже без покупки программой можно спокойно пользоваться, но время одной сессии будет ограничено 30 минутами, а также частенько на 5-10 секунд будет появляться оверлей.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

После скачивания следует запустить exe-файл и произвести инсталляцию. Здесь ничего сложного нет, просто оставьте стандартные настройки установки.

Настройка программы

После установки программу следует настроить. Многие пользователи Charles забывают об этом этапе, а затем кусают локти, пытаясь понять, почему у них ничего не работает. На самом деле настройка программы очень простая, сейчас все покажу!

Для начала нужно установить сертификат программы. Именно из-за него, увы, и возникает большинство проблем, связанных с неработоспособностью программы.

Инструкция по установке сертификата:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Жмем «Установить сертификат».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Здесь выбираем «Локальный компьютер» и жмем «Далее».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

ВАЖНО! На этом этапе выбираем «Поместить все сертификаты в следующее хранилище», жмем «Обзор», затем ОБЯЗАТЕЛЬНО выбираем «Доверенные корневые центры сертификации».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чегоЖмем «Далее».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Ставим галочку на «Enable SSL Proxying», затем под полем «Include» жмем на кнопку «Add».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Программа настроена. Теперь рассмотрим ее возможности и функции.

Compose

Данная функция позволяет нам отправить копию выбранного запроса с измененными параметрами.

Нам достаточно выбрать один конкретный запрос и с помощью функции Compose поменять его параметры (заголовок запроса, тело запроса, куки, код и пр.)
Для начала мы можем отделить конкретные запросы от остальных с помощью функции Focus :

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

У нас создается копия запроса, в которой мы можем менять все, что нам нужно: тело, шапку, тип запроса, версию HTTP и т.д.

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

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

После изменения нужных нам параметров жмем « Execute » и получаем копию запроса с ответом от сервера.

Breakpoint

Данная функция позволяет точнее работать с запросами, вешая на них так называемый «Breakpoint» (точку остановки).

Ниже показано, как через настройки добавить запрос в список Breakpoint. После повторного получения указанного вами запроса в программе откроется отдельная сессия, в которой вы сможете спокойно работать с ним.

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

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Ставим галочку на «Enable Breakpoints», затем жмем «Add».

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Заполняем все поля в открывшемся окне (выше пример заполнения).

При повторном получении запроса с такими же данными у вас будет открываться новое окошко, в котором вы сможете работать с пойманным запросом. Удобно!

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Rewrite

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Rewrite» src=»https://timeweb.com/media/image9.png» title=»» />

Ставим галочку на «Enable Rewrite», затем в открывшемся окне под левым полем жмем «Add», а дальше жмем «Add» уже под правым верхним полем.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Заполняем все поля (они идентичны тем, что заполняются при создании Breakpoint).

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Затем жмем «Add» уже под правым нижним полем, указываем тип редактирования запроса, заменяемые значения, а также условия замены.

Давайте поймаем запрос и посмотрим на реакцию Charles!

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Charles поймал нужный запрос, а затем заменил все Header одним значением.

Repeat Advanced

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

Ниже подробно показано, как это сделать.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Здесь настраиваем все в соответствии с указаниями на приложенной выше картинке.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Должно открыться новое окно, где отправляются запросы.

Map Local

Последняя функция в сегодняшней статье. Позволяет работать с локальными файлами.

Демонстрация инструмента ниже.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

При повторном получении того же запроса Charles будет перенаправлять его на локальный файл.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Надеюсь, эта статья помогла вам разобраться в основах Charles. Это действительно мощный и довольно простой инструмент для тестирования. Спасибо за внимание!

Источник

Charles: незаменимый тул в арсенале QA-инженера

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего
Для тестирования мобильных приложений, работающих с удаленными серверами, QA-инженеру приходится держать под рукой множество разных тестовых аккаунтов, логов, запросов и ответов. Реальность такова, что не всегда удается договориться о предоставлении нужных тестовых данных в срок. Чаще всего серверные разработчики будут незнакомыми вам людьми по ту сторону Скайпа. В таких ситуациях приходится своими руками подменять ответ сервера перед его передачей в приложение.

Чтобы редактировать выдачу сервера и воспроизводить сложные тестовые сценарии в QA Redmadrobot, мы используем Charles.

Как это работает?

Charles — инструмент для мониторинга HTTP/HTTPS трафика. Программа работает как прокси-сервер между мобильным приложением (в нашем случае) и сервером этого приложения. Charles записывает и сохраняет все запросы, которые проходят через подключенный к нему телефон и позволяет их редактировать.

1. Качаем и устанавливаем.
2. При первом запуске Charles заботливо предложит автоматически настроить параметры сети — соглашаемся.
3. Переходим в Proxy > Proxy Settings и выставляем порт 8888, если он уже не прописан.
4. На телефоне заходим в настройки Wi-Fi и прописываем в прокси сервер IP-адрес вашего Mac и порт 8888.
Телефон должен быть подключен к той же Wi-Fi сети, что и ваш Mac.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Готово. При следующем соединении клиент Charles попросить разрешение подключить ваш телефон. После этого в Charles начинают отображаться все HTTP-запросы и ответы, которые проходят через ваш телефон.

Для мониторинга HTTPS-трафика нужно пройти дополнительные шаги:
5. Переходим в браузер телефона и заходим на www.charlesproxy.com/getssl для установки сертификата SSL, который будет использоваться при подключении. Устанавливаем.
6. В списке хостов выбираем желаемый хост с HTTPS и ставим галочку Enable SSL Proxying.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Готово. Теперь в клиенте Charles отображается HTTPS-трафик по выбранному хосту.

Важно
Если ваше приложение использует SSL pinning, то Charles не сможет перехватывать запросы и ответы.

Мониторинг трафика


Для наглядной демонстрации работы с API используем приложение Хабрахабр для Android. На iPhone стоит защита от программ типа Charles, но на Android её нет.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Подмена данных


Как видите, у меня не так много кармы. Charles поможет сделать вид, что её чуть больше, чем есть на самом деле.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Выдача по аккаунту выглядит так (только JSON-строка, без header’ов):

В логе есть поле score:
По всей видимости, как раз то, что мне нужно.

Rewrite settings

Для подмены серверных данных открываем Tools > Rewrite.
В списке слева отображаются сеты из запросов, которые можно составлять на свой вкус. После создания сета идет выставление location. Здесь мы прописываем URL запроса с query параметрами (по желанию).

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

Окно создания правила будет выглядеть следующим образом:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Сам экран подмены будет выглядеть приблизительно так:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Следующий ответ по запросу информации о себе будет иметь отредактированные данные, score = 5000:

При следующем переходе на экран профиля в приложении Хабра мы увидим плод своих трудов.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

Таким же образом можно подменять не только ответы, но и запросы. Для этого на экране Rewrite rule нужно поставить галочку в поле Request, а не Response.

Breakpoints

При подмене запросов с помощью Rewrite settings в Charles невозможно редактировать кириллицу. При изменении любой информации на кириллицу ваши логи будут состоять из множества вопросительных знаков.

К счастью, этот недостаток можно обойти с помощью другой функции Charles — breakpoints. Идея похожая, но только ответы останавливаются прямо перед передачей в МП, и их можно редактировать своими руками в реальном времени.

Открываем Breakpoints settings и прописываем URL запроса.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

При следующем ответе по этому запросу Charles перехватит всю выдачу и позволит нам с ней работать. Следует держать в голове, что МП может выкинуть ошибку по тайм-ауту, и текущий запрос уйдет в никуда.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Заменим мой логин на что-нибудь, написанное на кириллице.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Вот и все. Приложение отображает нужную нам информацию и проблем с кириллицей не возникает.
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Самое главное

Источник

Charles – Инструкция для чайников

Скачать Charles можно на официальном сайте: www.charlesproxy.com

Продукт условно бесплатный (trial на 30 дней), но нам этого будет вполне достаточно.

Для проведения тестов Вам понадобится:
1) LAN-кабель с вселенным в него интернетом.
2) Ноутбук с возможностью подключения в него того самого LAN-кабеля и wi-fi передатчиком.
3) Реальное Android-устройство с установленным на него мобильным приложением, которое нужно тестировать.

Итак, отключаем ноутбук от всех возможных Wi-fi сетей и подсоединяем к нему LAN-кабель со священным Интернетом. Далее нам необходимо раздать wi-fi с помощью самого ноутбука.
Для этого нужно вызвать командную строку (обязательно — запуск от имени Администратора) и ввести следующие две команды:

(или просто скопировать данный текст в Блокнот, сохранить как *.bat-файл и каждый раз запускать его от имени Администратора).

Wi-fi точка доступа создана. подключаемся к ней своим Android-устройством, имя сети (как Вы догадались, наверное) «WIFI», а пароль – 12345678.

Возможен вариант, что у вас не будет доступа к Интернету на самом устройстве. В таком случае необходимо открыть общий доступ к сети. Как это сделать можно без проблем найти и самому, но раз уж я пишу эту статью, то оставлю полезную ссылку прямо здесь с инструкцией по устранению данной проблемы:

После этого, как показала практика, Интернет на устройстве все-таки появился.

Далее необходимо узнать 2 волшебных цифры:

1) Ваш IP-адрес
2) Номер порта, который использует Charles для прокси.

Первую узнаем здесь же, в командной строке, набрав команду ipconfig.
Из всей чепухи которую Вам выдаст cmd.exe нас интересует только cвойства «Ethernet adapter Подключение по локальной сети», а именно IPv4-адрес.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Запоминаем (записываем) его и идем далее.
Номер порта, который использует Charles можно узнать внутри самой программы. Для этого в главном окне программы выберите пункт меню Proxy, в выпадающем списке – Proxy settings. Перед Вами откроется нечто подобное:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Как вы поняли эти заветные 8888 и есть наше второе число. Теперь необходимо задать ограничение скорости соединения. Для этого пройдем в пункт меню Proxy → Throttle Settings.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Ставим галочку Enable Throttling. Only for selected hosts – можно убрать (если не тестируете зависимость работы приложения от какого-либо конкретного домена).

Самый главный параметр – Bandwidth – пропускная способность нашего соединения – устанавливаем на необходимый Вам уровень (я тестировал очень медленное соединение, поэтому поставил 3kb/s ). Также, включите запись (Start/Stop Recording) нажав на панели главного окна на соответвующую кнопку charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чегодля начала записи.

Осталось только настроить наше устройство. Для этого зайдите в настройки, раздел Wi-fi. Заходим в свойства сети, которую раздаем с ноутбука (и к которой уже подключено устройство) выбираем «Настройка прокси» и вводим два волшебных числа в соответствующие поля.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Все готово! Возвращаемся обратно в Charles и во вкладке Sequence видим дивную картину:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Это и есть все запросы, которое делает наше приложение (для образца взял мобильную версию ВК), с подробной информацией по каждому запросу.

P.S: На написание данной статьи меня подтолкнуло несколько вещей:
— отсутствие полного и доступного описания в русскоязычной части интернета.
— англоязычное население YouTube во всех роликах предлагало тестировать Charles на эмуляторах, а для моего старенького ноутбука это смерти подобно.

Надеюсь, данная статья будет полезной. Удачи всем в тестировании и поменьше багов!

Источник

Блог Евгения Крыжановского

Я научу вас ремонтировать свой компьютер!

Charles — программа для анализа сетевого трафика

Charles является приложением, которое способно провести анализ сетевого трафика. Программа представляет собой современный прокси-сервер. Кроме того, приложение контролирует все данные, которые отправляет обозреватель или другие программы в интернет. Также утилиту можно применять для взлома интернет-игр.

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

Кроме того, Charles способна внедриться в диалог между игрой и онлайн-сервером. В основном этой возможностью пользуются любители нечестной игры.

Как работает программа?

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

В основном это приложение скачивают для подмены показателей в онлайн-игре. Для этого необходимо запустить анализ трафика при открытой интернет-сессии. В разделе Structure показывается дерево работающих запросов. Для открытия необходимого раздела, требуется кликнуть ПКМ и выбрать пункт Advanced Repeat. После этого на экране появится окно для изменений показателей любого запроса. По такому принципу выполняется взлом онлайн-игр.

Возможности

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

Преимущества и недостатки

Приложение обладает всеми необходимыми инструментами для создания прокси-сервера. Кроме того, программ стабильно работает. Из недостатков можно отметить необходимость владеть специальными знаниями для работы в программе. Помимо этого, меню утилиты не переведено на русский язык. Также стоит отметить высокую цену лицензионного ключа.

Подобные приложения никогда не отличались дешевизной, но за месяц бесплатного использования можно понять необходимость в этой программе. Утилита способна работать на всех операционных системах Windows.

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

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

Запись опубликована 15.09.2015 автором katrinas11 в рубрике Программы. Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:

Источник

Погружение в Charles Proxy

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Привет, Хабр! Меня зовут Настя, я работаю в команде тестирования мобильных приложений компании FunСorp.

При приёмке задач мы уделяем большое внимание проверке клиент-серверного взаимодействия. Опыт проведения собеседований показывает, что новички в тестировании мобильных приложений ограничиваются интерфейсными проверками, упуская из виду то, что за каждым изменением интерфейса стоит отправка запроса к серверу и получение ответа от него. Здесь и возникает пространство для ошибок.

Если повезло, то кандидат знает о необходимости проверки сетевого взаимодействия, но, за редким исключением, его знания ограничены Rewrite или Breakpoints.

Сегодня я расскажу, с какими задачами сталкиваются тестировщики мобильных приложений в FunСorp и как в этом помогает Charles Proxy.

Случай из жизни

Прежде чем двигаться дальше, сравните два кейса, которые подчеркнут важность проверок на сетевом уровне.

Ситуация 1: тестировщик пропускает баг вёрстки счётчика подписчиков для пользователя, у которого больше миллиона фолловеров. Неприятно, но на ценности продукта для пользователя сильно не скажется.

Ситуация 2: в приложение добавлена настройка получения push-уведомлений. Проверяя их отключение, тестировщик увидел подтверждение и посчитал сценарий пройденным. После релиза посыпались жалобы пользователей на слишком большое количество уведомлений, им приходилось отключать их на уровне ОС или удалять приложение. Для бизнеса такая ситуация критична: метрики искажаются, а пользователи утекают.

Почему так произошло? На бэкенде раскатили неудачный коммит, и на запрос отключения уведомлений возвращалась ошибка сервера. Мобильный клиент не обрабатывал получение кода 500, но тестировщик и пользователь видели попап отписки, хотя она не происходила. Если бы тестировщик обратил внимание на нестандартный код ответа API, то проблему быстро бы обнаружили и решили. Правда, в этот случай ещё вмешался сломанный мониторинг и отсутствие тестов на бэкенд, но всегда помните, что вы можете оказаться единственным тестировщиком на задаче или продукте и перепроверить будет некому.

К чему это всё? К тому, что использование сниффера может избавить вас от таких ошибок.

Что мы используем в FunCorp?

Charles Proxy в FunСorp стал стандартом де-факто. Этот инструмент предоставляет множество возможностей и в то же время прост в использовании, что снижает порог входа. Так тестировщики, разработчики и менеджеры находятся в одном информационном поле.

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

Задача 1. Слушаем, смотрим, анализируем

Подготовка

Если знаете, как установить Charles в связке с мобильным устройством, можете смело пропускать эту часть.

Результат шага: мы запустили Charles, отображается трафик приложения, а также соединения рекламных и системных сервисов.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Примечание 2: мы не включаем расшифровку сетевых соединений на все хосты сразу, т.к. это помешает проверке сценариев интеграции со сторонними сервисами (Twitter, Facebook, и т.д), покупки и прочего — самоподписанный сертификат Charles не вызовет доверия.

Фильтрация информации

Найти интересующую тестировщика информацию можно несколькими способами.

Structure view + Focus Mode

Представление Structure view удобно, если хотим узнать, к каким ручкам выполняется обращение. Список проксируемых ручек отображается слева. Выберем конкретный запрос и в правой части увидим информацию о нём. Во вкладке Overview будет техническая информация по статусу соединения, коду ответа, времени отправки запроса и времени получения ответа и так далее, во вкладке Contents можно выбрать формат и заглянуть в тело запроса или ответа, а также посмотреть заголовки.

Для уменьшения количества хостов в левой части на помощь придёт Focused Mode. Находим нужную ручку, вызываем контекстное меню, выбираем Focus.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Теперь ручки, для которых выбран Focus, будут закреплены в верхней части списка. Остальные сгруппированы в Other Hosts.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Примечание: в Charles можно уровнем выше настроить хосты, информация об обращении к которым будет записана в сессию, но часто удобно знать обо всём трафике, который проходит через приложение.

Да, стало проще искать информацию о конкретных пакетах. Ещё хотелось бы видеть на одном экране техническую информацию о пакете и тело. Кроме того, в этом представлении не видно, насколько позже или раньше уходит один запрос относительно другого. В этом нам поможет Sequence view.

Sequence view

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

Необходимую техническую информацию о подключении выводим через колонки таблицы. Мне наиболее интересными кажутся: время начала запроса, используемый метод, код ответа, полный путь обращения, длительность соединения (или время получения ответа), размер пакета, IP-адрес отправителя, по которому выполняем сортировку, если к Charles подключено больше одного устройства.

Можно создать кастомную колонку по любому полю заголовков запроса/ответа. Например, рекламные SDK часто передают полезную информацию в заголовках ответа.
Для настройки нажимаем на заголовок таблицы ПКМ и выбираем New Custom Header Column. Указываем название заголовка.

Ставим галочку Focused и видим только те ручки, что ранее выбрали через Structure view.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Ещё одна классная фича — возможность обходиться без галочки Focused и делать фильтрацию с помощью регулярок. Для этого нужно нажать на Settings справа от строки фильтрации и поставить галочку тут:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Теперь, составив, например, такой фильтр, увидим тот же результат, как при использовании галочки Focused.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Анализируем результаты

Ещё раз зафиксируем, на что в общем случае стоит обратить внимание:

В каких случаях стоит насторожиться и бежать к бэкендерам:

Задача 2. Меняем API

Случается, что мобильным тестировщикам приходится проверять фичу на тестовом API, которое пока не задеплоено на продакшен. Можно попросить разработчиков добавить developer mode, в котором будет возможность изменить ручку API, но можно это сделать и без внесения изменений в код.

Итак, у нас есть URL тестовой среды, на которой можно протестировать фичу — https://api-1111.ifunny.mobi, и URL продового API — https://api.ifunny.mobi.
Charles позволяет решить эту задачу следующими способами.

Map Remote

С помощью Map Remote можно без СМС и регистрации выполнить переадресацию запросов с некоторого URL (Map From) на другой (Map To). Подменяем только хост, путь целиком или только параметры (в зависимости от задачи).
Настраиваем Map Remote для решения текущей задачи. Чтобы перейти в настройки Map Remote, выбираем Tools: Map Remote или для macOS (⌘⌥M). Шорткаты ускорят работу в Charles.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего
charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Примечание: Charles автоматически распарсит части URL при копировании и вставке. Вставляем URL в строку Host, нажимаем Tab. Protocol, Port, Path, Query заполнятся сами.

Rewrite

Rewrite — самый мощный механизм Charles. В коллекциях на текущем проекте порядка 30 наборов рерайтов (Rewrite sets) с десятками вложенных правил (Rewrite rules).

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Чтобы добавить первое правило, нажимаем на (4). Появляется скромное окошко, обладающее большими возможностями.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Rewrite — это подмены: в заголовках (header rules), в пути (URL), в параметрах (query parameter rules) и в теле запроса или ответа (body rules).

Помимо подмен можно добавить или удалить новые заголовки, параметры запроса, когда это нужно. Для этого выбираем подходящее для задачи значение из выпадающего списка Тип (Type).

Для правила требуется указать область действия: запросы клиента (Request), ответы сервера (Response) или и те, и другие. Устанавливаем соответствующие чек-боксы.

Рассмотрим алгоритм применения Rewrite. Если указать маркер применения правила через блок Match, выполнится поиск этого значения в пакете, а затем замена на значение из блока Replace. Здесь и в некоторых других местах полезно использовать регулярные выражения, при необходимости — соответствующий чек-бокс. При пустом блоке Match замена применится везде, где можно. Заменится весь хост при типе Host или всё тело пакета при типе Body.
Ещё можно выбрать опцию «Подменить один раз» (Replace First), тогда Rewrite будет применён только по первому совпадению. Заполнение полей может оказаться недоступным для некоторых типов правил.

Для смены API подойдёт Type: Host. Нужное правило выглядит так:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Можно не прописывать Match, потому что указан Location, к другим хостам правило не применится, но Value пришлось бы указать целиком.

Задача 3. Проверяем нестандартные коды ответа

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

Прежде чем приступить к проверке, уточняем детали со стороны продукта и разработки:

Block Lists, Allow Lists

Block List позволяет добавить URL, запросы к которым будут заблокированы путем разрыва соединения или возврата 403 кода ответа. Включаем так:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Allow list работает по обратной логике: указываем те URL, обращения к которым разрешены. Остальные соединения сбрасываются или возвращается 403 ошибка.

Задача 4. Безопасный способ подменить тело

Представьте, вы нашли баг: приложение падает при получении рекламного креатива. Сниффер включён, сессия сохранена.

Через время разработчику требуется воспроизвести ситуацию у себя, а рекламодатель не спешит возвращать ту же рекламу, что привела к ошибке. Что делать? Открываем сохраненную сессию и находим креатив.

Map Local

Для подмены ответа сервера целиком можно использовать Map Local (⌘⌥L). Это удобный инструмент, который позволяет заменить удалённый файл на тот, что хранится локально на машине. Указываем ручки, ответы к которым надо подменить, и выбираем файлы у себя в системе, предварительно сохранив их в нужном расширении/формате (json, xml и т.п., поддерживаются медиа и другие менее популярные форматы). В контексте представленного кейса нам надо откопать приводящий к проблеме креатив из сохранённой сессии, положить себе в папку и включить на него Map Local.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Здесь можно также воспользоваться Rewrite. Выбираем Type: Body, поле Match остаётся незаполненным, если заменяем тело целиком. Вставляем простыню с телом ответа в поле Value блока Replace, применяем.

Заменить определённую часть запроса/ответа через Rewrite также не представляет сложности.
Это полезно, когда мы хотим получить на клиенте какие-то значения, которые трудно сгенерировать на тестовой или продакшен-среде. Для этого в поле Match указываем, какую пару «ключ-значение» ответа API мы ищем, а в Replace — на какую пару подменяем.

Задача 5. Таймауты и троттлинг.

Плох тот тестировщик, который тестирует свое приложение только в условиях мощного офисного WiFi, находясь в одной сети с серверами. Как можно выяснить, что потери и задержки не нарушают usability для пользователя, или обнаружить, что при получении таймаута приложение не может восстановиться?

Настройки троттлинга (⇧⌘T) в Charles выглядят так :

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Подбираем те, которые превратят любимое приложение в тыкву, а для тестирования таймаутов используем Breakpoints (⇧⌘K).
Примечание: Пользуйтесь возможностью включить троттлинг только на определённых хостах.

Брейкпоинты в Charles — это очень крутая штука. Информация о них будет в первых результатах поисковой выдачи по запросу «как подменить ХХХ в Charles». Их действительно можно использовать вместе или вместо Rewrite, но для подмен они не очень подходят.

Breakpoints работают так же, как бряки в коде. Получили совпадение по запросу или ответу — остановили выполнение, можем внести изменения в любую часть пакета. При этом подмена применится только на один пакет — нет повторяемости. Можно выйти за таймаут, пока выполняешь изменения. Другие способы подмены лишены этих ограничений.

Из неочевидного

Оптимизируем Rewrite

Что ещё здесь интересного? Активных правил в наборе может быть несколько, они применяются последовательно, сверху вниз. Значит, одно и то же место может изменяться несколько раз подряд.
Если есть какая-то структура, которая должна принимать несколько вариантов значений в зависимости от необходимости, то можно сделать следующее:

Например, приложение использует некоторое количество ID для получения рекламы. Мы хотим их все подменять то на один тестовый ID, то на другой. Здесь сначала все ID будут заменены на your_var, а your_var будет следом заменено в зависимости от простановки чек-боксов.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

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

Примечание 1: никто нас не ограничивает в сложности используемых подмен, регулярных выражений, но некоторые нюансы типа того, что выше, могут затруднять отладку или привести к ненужному срабатыванию правил.

Примечание 2: «Я всё делаю правильно, но Rewrite не работает».

Проверяем, что Rewrite был применён к выбранному пакету, информация об этом в явном виде есть во вкладке Overview и Notes:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Включаем логи в Charles в окне Rewrite:

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Убедимся, что другие наборы Rewrite не переписывают поверх наше правило. Отмеченные чек-боксами наборы также применяются друг за другом, сверху вниз, как и правила внутри набора.

Убедимся, что все чек-боксы на своих местах.

Убедимся, что не произошло ошибки при копировании-вставке. Известный баг Charles на macOS: при копировании в буфер обмена при раскладке клавиатуры, отличной от английской, данные в буфере задваиваются и вставляется два значения вместо одного.

Auto save

Один из недостатков Charles — утечки памяти, возникающие при продолжительной записи сессии. Чтобы избежать утечек, необходимо регулярно очищать активную сессию. Из-за этого возникают ситуации, когда вы случайно очистили нужную сессию. Чтобы защититься, автоматизируем сохранение сессий.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

Mirror

Еще одна не самая очевидно полезная функция — Mirror (⌘⌥I). Эта фича позволяет автоматически сохранять все ответы, возвращаемые в Charles. Они раскладываются локально в такой же иерархии, как на сервере. Если внезапно случился даунтайм на бэкенде, отвалилась тестовая среда и так далее, у вас есть готовые моки для Map Local.

charles программа для чего. Смотреть фото charles программа для чего. Смотреть картинку charles программа для чего. Картинка про charles программа для чего. Фото charles программа для чего

На этом всё. Я постаралась раскрыть возможности Charles Proxy для тестировщиков мобильных (и не только) приложений в разрезе тех задач, которые мы решаем в FunСorp. Если какие-то функции, которые вы используете, остались за бортом, пожалуйста, напишите об этом в комментариях.

И помните: хороший тестировщик клиент-серверных приложений всегда прикладывает к багу сессию из любимого сниффера.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *