Доброго времени суток.
Ранее писал автотесты Selenium WebDriver под Web.
Сейчас в связи со сменой работы была поставлена следующая задача:
Необходимо написать автоматизированные тесты для тестирования apk под android.
Задача казалось бы тривиальна, но есть ряд ограничений:
Нет исходного кода, то есть есть только apk файл
Само приложение написано на Uniti3D, то есть определение идентификаторов невозможно, только картинки фактически.
В качестве возможных решений смотрел в сторону Robotium (инструмент возникший первоначально как кликер).
Но возникает ряд вопросов
как определять успешность теста, если доступен только функционал клика по координатам?
реально ли из Robotium поднять приложение, учитывая что у меня нет исходников?
Так же смотрел в сторону такого инструмента как Sikuli (пробовал в свое время для Web’а, не с целью решения реальной задачи, а с целью получения практического опыта)
Тут вопрос определения успешности теста отпадает, но вопрос запуска приложения по прежнему актуален.
В связи с чем прошу подсказать:
Реально ли протестировать apk не имея исходного кода?
Какой инструмент выбрать? Учитывая, что потенциально доступен только функционал клика по координатам (приложение на uniti3d)
Если смотреть в сторону Sikuli - каким образом можно из сикули поднять приложение?
Похоже, для этой задачи идеально подходит Appium. Он как раз умеет запустить apk на эмуляторе и прогнать на нём все тесты с помощью интерфейса WebDriver.
Им не нужен исходный код приложения и они предоставляют возможность писать тесты под мобильные платформы на WebDriver API, поддерживают достаточное количество современных языков.
Лучше посмотреть в сторону Appium, т.к. он интенсивнее развивается и также включает в себя Selendroid (как один из альтернативных компонентов).
Все перечисленные инструменты фактически распознают на экране те же самые элементы.
Рекомендую запустить uiautomatorviewer из Android SDK — и им захватить экран приложения. Если он распознаёт все нужные элементы, имеет смысл использовать Appium или подобный инструмент. А если нет — тогда смотреть в сторону Sikuli или ему подобных.
C Sikuli-подобным решением:
— чуть поразвлекаетесь, если нужно тестировать на реальных устройствах, но это реально
— сложнее организовать тестирование в параллель
@Mr_Nehoch отпишитесь пожалуйста в эту тему, помогли ли вам советы, после того как вы решите вашу проблему. После решения, поделитесь пожалуйста тем путем, который вы выбрали.
Вот еще видео по тестированию Unity3d игрушек, но тут нужен доступ к коду… и не знаю ли оно вообще к Android подходит
Благодарю всех за ответы, в ближайшее время еще раз посмотрю в сторону Appium. @asolntsev , @anym0us,
Честно говоря, почему-то исходил из того что Appium заточен больше под IOS, нежели под Android, и написание тестов на нем удобнее всего вести под Macom, и что в Windows Appium сильно порезан. Поэтому почти сразу его отбросил. Наверно стоит вернуться к этому инструменту и еще раз попробовать оценить его для решения данной задачи.
Сегодня попытался все таки довести дело с Robotium’ом до какой-то логической точки - удалось запустить приложение без исходника и покликать по координатам. (Спасибо @anym0us за помощь в получении package и activity из apk-файла. Его пост очень помог) Попытался соединить Robotium и Sikuli (роботиум кликает, сикули анализирует), однако пока никакого конечно результата получить не удалось.
@dzhariy , О результатах обязательно отпишусь. И спасибо за видео)
Не очень понимаю завязок на исходники. В большинстве случаев при тестировании исходники недоступны. (естественно речь идёт о нормальных - не web приложениях).