Открыть список
Как стать автором
Обновить

Комментарии 13

чем это лучше роботиума?
С роботиумом я почти не работал. Я слышал, что в роботиуме есть баги и тесты выполняются медленно, лично не сталкивался с этим, поэтому информация может быть уже устаревшей. В процессе работы с UIAutomator я не нашёл никаких проблем. Я думаю, что плюс в том, что он разрабатывается корпорацией Google вместе с Android и лучше интегрируется с ОС. Удобно, что не приходится настраивать и дополнительно устанавливать на компьютер какие-либо фреймворки, так как UIAutomator идет в составе c Android SDK. Минусом UIAutomator является только то, что он работает начиная с API Level 16+.
Кстати, UI Automator уже года полтора как не разрабатывается. Ну то есть формально он есть в сорцах SDK и андроида, но коммитов по UI Automator не делают.
UI Automator существенно отличается. Если robotium/expresso работают с View как с классами, то тут все проще. Вначале видимая область экрана на телефоне сохраняется в XML где каждый элемент представлен тегом — классом, текстом, описанием и прямоугольником. Тесты затем работают с этими тегами и прямоугольниками, а не с классами. Потому нельзя скажем узнать ID view, или скажем её цвет. Это кажется конечно костылем, но в этом есть и свой шарм. Например, можно тестировать прошивку и стандартные приложения.

Я вот начал делать альтернативу автоматору — Lemur: bitbucket.org/zserge/lemur/overview
Тоже использую дамп вьюх экрана в XML, но тесты пишу на Lua и запускаю значительно проще — «lemur.sh <имя теста.lua>». Где-то секунда уходит на запуск. Даже компилировать ничего не надо. И глюков меньше (напр., скролл в андроидах 4.1-4.2). Впереди еще долгий путь, но если кому подобный инструмент интересен — пишите, говорите какие фичи нужны и все такое.
А мне Espresso больше нравится. Он более понятен и проще на мой взгляд. Я работал только с ним, если есть кто работал более чем с одним фреймворком то напиши пожалуйста плюсы и минусы каждого.
Работал и работаю с calabash.
Из плюсов — Ruby и кросс-платформенность. Cucumber и BDD тоже можно отнести к плюсам. Тесная интеграция с Xamarin, в будущем calabash станет плагином к Frank. Ну и конечно же активное сообщество, частые коммиты и релизы.

Минусы свои тоже есть, например некоторые вещи сломались с выходом iOS 7, но со временем фиксят или находят обходные пути.

Не могу напрямую сравнивать с UIAutomation для iOS или Android, не достаточно опыта работы с этими фреймворками. Пробовали сначала MonkeyTalk — calabash гораздо лучше.
Можно еще глянуть на appium, его проще с iOS интегрировать. И если есть тесты на calabsh, то на апиум их портировать можно мгновенно.
По весне сам озаботился вопросом автоматизации тестирования под Андроид. Жаль, что не нашел этйо статьи раньше.
Документация Гугла весьма своеобразна: пропущена важные шаги. К примеру, какой проект вобще создавать надо и как?
Коллега копал Robotium. Мне UIAutomator понравился тем, что не нужен доступ к исходному коду приложения, написание кода теста достаточно просто и очевидно, работает быстро.

Одна трудность — отчет о работе. В статье об этом ни слова.
Так как тест запускается из консоли, в код теста добавил функцию
private void log(String message) {
System.out.println(«TEST > » + message);
}
Она просто выводит в консоль нужное сообщение. Так хоть как-то можно знать, чем сейчас тест занят. Наверняка есть возможность писать в текстовый файл, но я над этим еще не думал.
Как это не написанно? Я написал про то, как собирать логи с теста, только вместа потока stdout я использую стандартный буфер Android. Я не стал подробно описывать, как именно вставлять это в код, лишь описал саму функцию и то, как читать логи с Android, но если вы посмотрите конечный код, что можете заметить, что были добавлены вызовы методов, которые логируют начало и конец запуска теста:

Log.i("SendMessageTest", "Start SendMessage");
findAndRunApp();
sendMessage(toNumber, text);
exitToMainWindow();
Log.i("SendMessageTest", "End SendMessage");

C таким же успехом мы можем добавить подробное логирование во все фукции скрипта, а потом, распарсив логи полученные с устройства, мы можем получить подробный отчет о всех действиях теста.
Начал использовать Espresso. Всё таки решил перейти на UIAutomator. В Espresso меньше функционала, и это не удивительно, ведь она вышла только пол года назад. А так же мало документации и примеров.
Спасибо за статью, очень интересно!
Только есть один вопрос! Есть ли решения для тестинга приложений типа чата? Т.е. чтобы сценарий запускался сразу на двух телефонах, но проверял разные действия. На одном телефоне тест набирает сообщение, на другом ждет и проверяет, действительно ли оно пришло, ну все в таком роде
Спасибо!
Честно говоря, не вставала подобная задача, но думаю, что это реально и делать надо примерно так:
Для решения надо написать 2 сценария UIAutomator, один который будет заниматься отправкой, другой — приемом сообщений и один скрипт, который будет одновременно запускать эти 2 скрипта на 2-х телефонах.
Думаю, что это не сложно реализовать.
Спасибо, буду копать )
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.