Proxyman для QA: практичний гайд з використання

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Всім привіт! Мене звати Діана, і я вже більше чотирьох років працюю QA Engineer. У цій статті хочу поділитись досвідом роботи з інструментом, який допомагає мені тестувати мобільні застосунки, і розповісти про його налаштування, основні фічі та їхнє застосування.

Що таке Proxyman

Почнемо з короткого визначення що це таке.

Proxyman — це сніффер (перехоплювач) трафіку, інструмент для відстеження, аналізу та модифікації запитів і відповідей в реальному часі. Простіше кажучи — показує кожен запит, що відправляє додаток, і кожну відповідь, яку отримує, і дозволяє це все змінювати.

Впевнена, багато хто з вас знайомий з таким інструментом як Charles, а хтось використовує його для виконання своїх щоденних задач. По суті, Proxyman — це такий самий інструмент для перехоплення та моніторингу трафіку, який має більш сучасний та юзер-френдлі дизайн. Далі розглянемо більш детально як же працювати з цим інструментом, його зручність та які я можу виділити «підводні камені» :)

Встановлення і перший запуск

На цьому етапі я розпишу процес встановлення і першого запуску цього інструменту на macOS.

  1. Скачайте і встановіть додаток на macOS proxyman.com
  2. Після відкриття додатку вам запропонується встановити Proxyman Helper Tool. На цьому етапі можете встановити допоміжний інструмент Proxyman

3. Далі Proxyman запропонує вам відкрити гайд по встановленню і роботі з iOS, Android, Web, а також різні гайди по роботі з допоміжними функціями сніффера.

Цю панель можна відкрити у будь-який момент за допомогою кнопки у верхньому правому куті.

Після налаштувань ви будете бачити мережевий трафік в основному вікні Proxyman. Це трафік, який ваш макбук відправляє та отримує у режимі реального часу. Тобто, ви можете побачити запити/відповіді веб-сайтів, додатків на основній панелі сніфферу. При натисканні на конкретний запит можна переглядати деталі, а саме статус запиту, headers, body та інше.

Важливий момент, якщо запит виконується через HTTPS — ви не будете бачити деталі запиту/відповіді поки не налаштуєте SSL-проксування для конкретного домену або додатку. Все через те, що HTTPS шифрує трафік між додатком і сервером, тому без встановленого сертифікату Proxyman бачить лише зашифровані дані. Після встановлення і налаштування сертифікату ви зможете переглядати та аналізувати необхідні вам деталі.

Налаштування SSL-проксування

  1. Оберемо необхідний запит, наприклад rozetka.com.ua
  2. Натискаємо на кнопку Enable only this domain (якщо ви хочете включити для всіх запитів, які відправляє додаток — можна натиснути Enable all domains from..)

3. Далі перед вами відображається вікно з налаштуванням сертифікату Proxyman на macOS -> натискаємо Install & Trust

Після цього Proxyman автоматично встановлює сертифікат на ваш макбук та по завершенню вам висвічується екран, що сертифікат встановлено, тут можна повертатись до ваших запитів.

На цьому етапі при успішному налаштуванні бачимо надпис, що потрібно надіслати запит ще раз, щоб побачити деталі.

Повторюємо запит ще раз і тепер можемо переглядати та аналізувати необхідну інформацію.

Далі перейдемо до налаштування роботи з реальним пристроєм, у моєму випадку це буде iOS.

Тут допоможе детальна інструкція від Proxyman щодо всіх кроків, які необхідно виконати для налаштування. Також, можна знайти інструкцію і для налаштування роботи з Android девайсом, але сьогодні пройдемо флоу саме на iOS.

  1. Перейти в налаштування телефону — Wi-Fi > Configure Proxy > Manual

Тут зверніть увагу, що макбук та айфон мають бути підключені до однієї мережі Wi-Fi

2. Далі необхідно встановити сертифікат на ваш телефон, для цього у Proxyman вже є функція встановлення з AirDrop, що досить швидко й зручно

3. Після цього необхідно встановити сертифікат (Налаштування > General > VPN&Device Management — тут можна переглянути встановлені сертифікати)

4. Далі треба налаштувати Trust Settings на вашому девайсі (для цього переходимо у Налаштування > General > About > Certificate Trust Settings та вмикаємо опцію Enable Full Trust for Root certificates для Proxyman)

Ось і все, тепер ваш девайс готовий для роботи з Proxyman і ви можете відслідковувати мережевий трафік з нього на вашому макбуці.

На своєму екрані ви можете побачити список запитів, з яких додатків/доменів вони приходять — 1 (тут можна одразу налаштувати SSL-проксі для конкретного додатку або домену). Також ви можете зупинити записування кнопкою 2, очистити історію кнопкою 3, відфільтрувати запити за допомогою панелі фільтрів 4, переглянути запит/відповідь в окремому вікні кнопкою 5, і налаштувати відображення деталей горизонтально або вертикально — кнопки 6, 7.

Основні фічі

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

  • Throttling

Почнемо з throttling. Коротко про те, що це взагалі таке і навіщо потрібно тестувальнику. Це фіча для зміни швидкості інтернету, яка допомагає протестувати поведінку додатку з повільним або нестабільним зʼєднанням інтернету — наприклад, перевірити чи коректно відображається лоадер, чи не крашиться додаток при таймауті.

Для того щоб налаштувати throttling, треба клікнути на необхідний вам запит, обрати Tools > Network Conditions.

У вікні, що відкриється, вказуємо назву правила, хост, обираємо пресет профайл (готові налаштування від Proxyman — 3G, LTE, WiFi та інші) або налаштовуємо свій кастомний пресет профайл з потрібними параметрами.

По завершенню налаштування необхідно натиснути Done і правило буде відображатись у загальному списку як Active і застосовуватиметься до всіх наступних запитів обраного хосту.

  • Breakpoints

Наступною розглянемо таку фічу, як Breakpoints. Це функція, яка дозволяє призупиняти та змінювати запити та відповіді між додатком/браузером і сервером. Простіше кажучи — ви перехоплюєте запит «на льоту» і можете підмінити будь-які дані: заголовки, тіло, статус-код. За допомогою цього можна перевірити як додаток або браузер відреагує на внесені зміни.

Щоб налаштувати breakpoint, треба клікнути необхідний вам запит, обрати Tools > Breakpoint.

У вікні що відкриється вказуємо назву правила, URL запиту та обираємо що саме хочемо перехопити — request, response або обидві опції одразу.

Після цього натискаємо Done і нове правило буде відображатись у загальному списку breakpoints.

Коли наступного разу додаток або браузер надішле запит, який відповідає створеному правилу — Proxyman його зупинить і відкриє редактор, де можна внести зміни і відправити запит далі. Це зручно, коли потрібно швидко перевірити як система реагує на певні дані.

Для прикладу розглянемо тестовий сервіс jsonplaceholder.typicode.com

  1. Створюємо правило для URL jsonplaceholder.typicode.com
  2. Активуємо чекбокс Include all subpaths of this URL або ставимо * в кінці нашого URL, щоб правило відпрацьовувало для всіх подібних запитів
  3. Обираємо Request або Response (у даному прикладі я хочу показати саме для Response) і натискаємо Done

4. Відправляємо повторно запит з jsonplaceholder.typicode.com/posts/1 — в цей момент відкривається редактор Proxyman

5. Тепер переходимо до блоку Response та змінюємо наш тайтл на будь-який довільний

6. Натискаємо кнопку Execute і бачимо що у відповіді тепер відображається наш змінений тайтл замість оригінального. Саме так Proxyman дозволяє змінювати відповіді сервера.

Так само можна змінювати request/response при тестуванні мобільних додатків, механізм налаштування правил не відрізняється.

  • Map Local

Далі розглянемо фічу Map Local — інструмент, який дозволяє замінити реальну відповідь серверу на локальний файл. Це допомагає при тестуванні як система реагує на різні сценарії, а також при тестуванні UI поки бекенд ще не готовий.

Як у попередніх кейсах, для налаштування треба клікнути на необхідний запит, обрати Tools > Map Local.

У вікні, що відкриється вказуємо назву правила, URL та метод запиту. За потреби можна активувати чекбокс Include all subpaths of this URL — тоді правило спрацює для всіх підшляхів цього URL, або додати затримку відповіді через Delay Response.

Зручна деталь — Proxyman автоматично створює локальний файл з поточною відповіддю сервера включно з headers і одразу підставляє його. Залишається лише відредагувати вміст файлу під потрібний сценарій. Також, є можливість підключити власний файл через кнопку Select Local File або вказати локальну директорію у відповідному табі.

Після налаштування натискаємо Save — правило з’являється у загальному списку і автоматично спрацьовує для кожного наступного запиту, що відповідає правилу.

Розглянемо на прикладі тестового сервісу jsonplaceholder.typicode.com:

  1. Створюємо правило для URL jsonplaceholder.typicode.com/posts/1
  2. Proxyman автоматично створює файл з поточною відповіддю сервера і підставляє його у редактор
  3. Знаходимо поле «title» і змінюємо його на будь-який довільний текст, наприклад «Тестова відповідь»

  4. Натискаємо Save — правило з’являється у загальному списку Map Local
  5. Відправляємо запит повторно — і замість реальної відповіді сервера отримуємо наш змінений вміст

На відміну від Breakpoints, де ви «on-the-fly» змінюєте запит — Map Local працює автоматично за заданим правилом. Зміна спрацьовує для кожного наступного запиту, що відповідає правилу. Map Local особливо корисний, коли потрібно протестувати edge cases, відтворити складний баг або перевірити UI поки бекенд ще не готовий.

  • Map Remote

Останньою на сьогодні розглянемо фічу Map Remote — інструмент для перенаправлення запитів з одного хосту на інший. Для прикладу розглянемо такий кейс: є прод-версія мобільного додатку, вилили зміни бекенду на staging/dev і потрібно перевірити як додаток поведе себе з новим бекендом. Питання в тому, що прод версія додатку частіше за все дивиться на прод бекенд. Map Remote вирішує це на стороні Proxyman: створюємо правило, що перенаправляє трафік з production хосту на staging або dev, і додаток починає працювати з новим бекендом.

Як у попередніх кейсах, для налаштування треба клікнути на необхідний вам запит, обрати Tools > Map Remote.

У вікні що відкриється вказуємо назву правила, URL, метод запиту та хост, на який ми будемо перенаправляти запит. У секції Map To заповнюємо куди саме перенаправити трафік — Protocol, Host, Port, Path та Query. Зручна деталь: можна просто вставити повний URL прямо в поле Host — Proxyman автоматично розпарсить його на всі компоненти. За потреби можна активувати чекбокс Include all subpaths of this URL — тоді правило спрацює для всіх підшляхів цього URL.

Після налаштування натискаємо Done — правило з’являється у загальному списку і автоматично спрацьовує для кожного наступного запиту, що відповідає правилу.

Звичайно, Proxyman не обмежується цими трьома фічами — я розглянула ті, які використовую найчастіше у роботі. Решту можна знайти в офіційній документації або відкрити для себе в процесі роботи.

Що мені не сподобалось

Перше і, напевно, найголовніше — доволі обмежена безкоштовна версія. Це звужує функціонал інструменту та не дає можливості використовувати всі його переваги «на повну». Без ліцензії доступне тільки одне правило для кожного інструменту — тобто саме ті фічі, які роблять Proxyman дійсно функціональним.

Друге — ціна. $89 за одну ліцензію може бути проблемою, особливо якщо компанія не готова купувати інструмент, а самостійно платити не хочеться. Тут Charles у безкоштовному режимі виграє.

Порівняння з Charles

Хочу приділити увагу невеликому порівнянню Proxyman з Charles, тому що другий інструмент більш звичний для багатьох тестувальників.

Критерій

Proxyman

Charles

Інтерфейс

Сучасний, нативний macOS

Оновлений у v5, але складніший

Безкоштовна версія

Є

Є

Обмеження безкоштовної версії

PRO-фічі обмежені

Сесія до 30 хв, потім перезапуск

Ціна PRO

від $89

від $50

Налаштування для роботи (SSL-проксі)

Зручна покрокова інструкція, все виконується в одному вікні автоматично

Потребує додаткових кроків у системних налаштуваннях

Обидва інструменти виконують ті самі задачі, питання у зручності та звичці використання. На мою думку, Proxyman має більш юзер-френдлі дизайн та чіткі, покрокові інструкції, які допоможуть швидко і без проблем розпочати роботу із сніффером навіть новачку. Charles натомість дає доступ до використання важливих фіч навіть у безкоштовній версії, але вимагає перезапуску кожні 30 хвилин. Тому, тут вже грає роль які задачі вам потрібно виконувати за допомогою цього інструменту, чи готова ваша компанія оплачувати ліцензію та якщо ви активний юзер Charles Proxy то, звичайно, наскільки ви звикли до нього.

Висновок

Отож, Proxyman — дійсно якісний інструмент для тестувальника. Він має зручний дизайн та детальні покрокові інструкції, які є зрозумілими навіть для новачків та значно пришвидшують налаштування інструменту. Звичайно, є і свої недоліки — наприклад, обмежена безкоштовна версія та доволі висока вартість ліцензії. Але, на мою думку, Proxyman вартий уваги як зручний інструмент з сучасним інтерфейсом. А переходити на нього чи ні — вже справа за вами :)

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному8
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі