РИТ++ 2017, AppsConf
Зал Найроби + Касабланка, 5 июня, 11:00
Тезисы:
http://appsconf.ru/2017/abstracts/2584.html
Большинство современных мобильных приложений так или иначе работает с каким-то API (а зачастую и не с одним). Количество запросов при этом может достигать десятков в минуту и понимание того, что сейчас происходит в сетевом слое вашего приложения, становится непростой задачей.
Я расскажу и покажу весь диапазон современных средств для мониторинга и отладки сетевых запросов: от самых простых до узкоспециальных - с плюсами/минусами каждого из инструментов и областями их применения.
10. curl
10
curl https://api.github.com/users/MikeCamino -i
Заголовки ответа
curl https://api.github.com/users/MikeCamino –i –H ”User-Agent: GitHub Test App”
Заголовки запроса
curl https://api.github.com/gists –i –H ”User-Agent: GitHub Test App” –X POST
Не только GET
curl https://api.github.com/gists –i –H ”User-Agent: GitHub Test App” –X POST –d “{
"description": "the description for this gist", "public": true, "files": {
"file1.txt": { "content": ”<6Kb of text>" } } }”
POST-запрос с телом
11. API tools
11
Soap UI
Много функций
Поддержка SOAP
Интерфейс из 2000-х
Очень медленно
Insomnia
Как редактор кода
Лаконичный интерфейс
Меньше функций, чем у
Postman
Postman
Все функции Insomnia
Автоматизация
тестирования API
Перегруженный
интерфейс
https://insomnia.rest/https://www.soapui.org/ https://www.getpostman.com
17. До приложения
17
Браузер
Всегда под рукой
Много плагинов
Только GET-запросы
CURL
Умеет почти все
Много ручного труда
Нет OAuth
API Tools
Коллекции запросов
Переменные и пресеты
Форматирование ответов
OAuth
https://curl.haxx.se
33. Во время разработки
33
Отладчик
Всегда под рукой
Все детали и контекст
Медленно и по одному
Логирование
Любые свои запросы
Вместе с другими логами
Только текстовые ответы
Засоряет логи
Stetho / Pony
Все свои запросы
Куча деталей
Форматирование ответов
Не только сеть
Требуют настройки
42. Отладочные прокси
Владеют всем трафиком устройства
42
Устройство Прокси Сервер
Модификация запросов и
ответов
Троттлинг и точки останова
Запись и реплеи
43. Без кода приложения
43
Charles
Все платформы
$50 за лицензию
Fiddler
Бесплатный
Только Windows
Cloud Middleman
Не требует установки
Доступен отовсюду
Ограниченые
возможности
Приложения общаются с серверомПо HTTP/JSON
История о человеке, писавшем клиент-серверное приложение
Почитать спеку
Построить запросы
Почитать ответы
Пощупать ошибки
Дело не пошло дальше простых GET-запросов
Несмотря на то, что curl мог все, запросов и параметров становилось все больше. Разбирать ответы было трудно. К тому же не было OAuth. Нужно было что-то менять. Поспрашивав мировой разум, Василий нашел несколько
Импорт коллекций из Swagger, RAML, WADL, curl, Runscope и собственного формата
Чужой код, много запросов, надо понять, что и куда отправляется
Первая мысль – есть отладчик
В отладчике много полезного: можно будет увидеть не только запрос с ответом, но и их окружение – что к ним привело и во что они распарсились
Василий находит место в коде, где создается клиент и асинхронный запрос
Часто точку остановки поставить просто некуда – приходится писать дополнительный код
К тому же отладка запросов по одному отнимала много времени. Испытательный срок тикал, а проблема не решалась
Василий задумался: раз есть код, где доступен и запрос и ответ, то зачем останавливаться? Можно записать результат в лог
Айос-девелопер по неизвестным причинам покинул проект и Василию пришлось поддерживать работу iOS-приложения
Для него, к счастью, нашлось аналогичное решение
Логирование очень ускорило работу Василия, но логи:
Сильно засорялись
Показывали только текстовые ответы
Василий стал искать решение, которое бы складывало запросы в какое-то другое место и нашел его
Кто хоть раз открывал Chrome Developer Tools?
Еще называют Debug Bridge или Debug Gateway
Много информации в небольшом пространстве
Отладчик: для детального изучения одного запроса и его окружения
Логи: запрос/ответ в контексте всех остальных логов
Внешние: Pony требует запуска сервера на Питоне. Stetho нужно не забывать выключать для продакшен-сборок
Задание – отладить запросы из библиотеки сбора аналитики: исходников нет, запросы шированые и их тыщи
Кто знает, что такое прокси?
Работает на уровне устройства, а не приложения
Могут модифицировать запросы и ответы, эмулировать другую скорость соединения
Не зависят от платформы
Работают во всей системе
Не требуют изменений в коде
Настраивается
Проблема была в том, что часть трафика библиотеки была зашифрована
HTTPS – вопрос доверия
Без дешифрования – насквозь
С дешифрованием
Man In The Middle
Проблема была решена
Работает на уровне устройства, а не приложения
Могут модифицировать запросы и ответы, эмулировать другую скорость соединения
Не имея доступа к коду можно увидеть даже больше, чем
Не бойтесь новых инструментов
Экономьте свое время на важные задачи
Успешной вам отладки!