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

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

  • ввести логин
  • ввести пароль
  • OTP(код из смс)

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

Приложение на react native, тестирую на appium, pytest, python

image

я тоже новичек в тестирование и у меня тоже проект где ты регаешся и тд так вот я использую page object model и когда мне надо что-то зделать я просто вызываю Login Class а не делаю логин методы для всех тестов ( надеюсь я тебя правельно понел)

1 лайк

что не пост, то загляденье! :muscle:

5 лайков

Лучше бы опытом поделились, да совет дельный дали)

я тоже ищу ответ на подобный вопрос, но мне кажется “договориться” с разработчиками это неверный путь. Хотелось бы получить ответ от знающих людей, что такое фикстуры и можно ли реализовать нечто подобное с их помощью

Так вы разберитесь, как работает реальное приложение - наверняка оно не требует первого входа каждый; значит где-то хранит авторизационный токен или куки или ещё какой-то набор данных для идентификации пользователя

и вот эти данные вам надо подпихнуть в сессию

Appium каждый раз поднимает приложение с нуля

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

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

1 лайк

Для моего приложения необходим токен, его можно легко получить, но я не знаю как и куда его подсунуть. Он передается в desired capabilities?
Можно какой-нибудь пример?

мне кажется можно в desired capabilities передавать “noReset”: “true”. Это позволит не останавливать и не очищать данные приложения. А для тех тестов где нужна авторизация просто удалять этот параметр программно.
Вот тут про noReset https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

с нуля это “не перезагружаете”. Он именно очищает данные приложения

ну так у приложения же есть кэш данных какой-то, внутреннее хранилище и что-то такое

у вас есть доступ ко всему и никто не мешает подкладывать эти данные, спросите у разработчиков

2 лайка

Есть несколько путей решения.

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

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

2 лайка

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

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

1 лайк

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

Погуглите про capabilities и startActivity

Обычно (или, как минимум, часто) приложение “выбрасывает” логин страницу если 1) у него нет сессии 2) сессия заэкспарилась. Я делал так - логинился через АПИ и получал сессию. У аппиума есть возможность передать все что угодно приложению при старте. Пример здесь Home | KB

соответственно в приложение девелоперы добавили небольшой код - если приложение стартовало с уже переданной сессией, то она просто подкладывалась и все. Иначе - показ логин странички.

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

в теории - да, можно. Но на практике разработчики часто передают некие параметры с одного скрина/активити на следующий. Например, на скрине 1 получили некие данные с бэкэнда, затем юзер куда-то тапает и переходит на скрин 2, но там уже бэкэнд не участвует, а все данные передаются с прошлого скрина. Соответственно если вы стартанете скрин №2 из теста, то ничего хорошего не получится.

На почитать

3 лайка

Спасибо большое за объяснение и за статьи, очень полезные!
Буду разговаривать с разработчиками о том что из этого можно использовать на проекте

1 лайк