Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Мониторинг траффика мобильного приложения

rest
mobile
appium
ios
ruby
Теги: #<Tag:0x00007f7b6921a3b8> #<Tag:0x00007f7b6921a048> #<Tag:0x00007f7b69219e90> #<Tag:0x00007f7b69219c60> #<Tag:0x00007f7b692199e0>

(brbrr) #1

Мобильное приложение на андроид (iOS в ближайшей перспективе), REST, Appium, Ruby.

Нужно каким либо образом проверять сработала ли кнопка или нет(напр. Логин) т.е. ушел ли запрос на сервер, и каков был ответ(что более актуально, тк. по тост сообщения не отлавливаются)

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

Вопрос такой: каким образом можно монитрить траффик девайса, так что бы иметь доступ к запросам/ответам от сервера. в идеале - кроссплатформенные варианты

UPD: Упустил: монторинг траффика программно


(zub_test) #2

Видеть ответы сервера на запросы девайса вы должны в своём сниффере. Мы для этого используем fiddler http://www.telerik.com/fiddler. Для того, чтобы видеть запросы сервера (например, если он обращается к каким то сервисам), нужно сниффать траффик сервера. Для этих целей можно опять же использовать фиддлер. Только на сервере нужно указать хост с фиддлером как прокси.

Если нет возможности настроить прокси на сервере, то сниффер нужно ставить на сам сервер.

Могут возникнуть сложности с мониторингом https трафика.


(brbrr) #3

Когда тестирую руками примерно так и делаю, только использую Charles.
Но вопрос на самом деле про программный мониторинг трафика для его дальнейшего использования в тестах (не было ясно с моего поста, обновил)


(Максим Таран) #4

А можно вопрос. А зачем сниферить трафик в вашем случае? Клиент и сервер адекватно реагируют друг на друга, ну и нормально, нет? Или какое-то особое поле?


(brbrr) #5

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


(Максим Таран) #6

Всё равно не понял. К вам же на сервер запрос приходит? Он его разбирает и говорит, что логин не верный, так?


(brbrr) #7

зарос вида POST ./login с контентом.
в ответ приходит в зависимости от контента: 200 OK / 401 Unauthorized
Во втором случае так же приходит json с конкретной проблемой(не валидные данные/ пользователь заблокирован/пр)
вот и на основе этих ответов приложение делает разное. переводит на другой экран, показывает тосты, и пр.
вот и хочу иметь доступ к рест интерфейсу. и в нужные моменты проверять правильно ли приложение отреагировало


(Максим Таран) #8

А нельзя просто кейсы соответствующим образом составлять, и проверять как приложение отреагировало?


(Urtow) #9

А если изменить задачу и сделать отдельные тесты для сервера?

Проверять именно работу API отдельно от клиента. Это позволит проверять какой сервер дал ответ в зависимости от запроса.

Проверять ушел ли вообще запрос на сервер - как мне кажется проще по логам самого сервера.

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


(brbrr) #10

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

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

  • смотреть на сервере(логи, сама база(есть счетчики логинов) и пр)
  • делать скриншоты экрана с тостом, и читать текст с картинки. и там уже находить нужное.

Вот последний вариант таки получилось реализовать. Но возможность отслеживать траффик, отдельно от этой задачи, все равно класная фича:)


(Максим Таран) #11

А зачем отслеживать??? Отправляйте сами ответ от сервера. Тут действительно надо разбивать задачу. Отдельно сервер, отдельно клиент. А потом уже интеграционные тесты.


(Dmitry Cheremushkin) #12

adb logcat
— должно быть то, что вам нужно. Выводит дебажную информацию, включая сетевой трафик (по умолчанию — для всех приложений).

Ограничение: соответственно, работает только с debug-билдами.

Параметры и примеры использования: http://developer.android.com/tools/debugging/debugging-log.html (можно фильтровать по Activity).


selendroid | гибридное приложение | захват\запись трафика
(brbrr) #13

Решил уже с помощью встроенного в руби вебсерва/прокси - WEBrick
пришлось расширить его, тк он не принимает PUT / DELETE

Вот что получилось: gist