Kaspresso tutorials. Часть 1. Запуск первого теста

image-loader.svg

Всем привет! Мы запускаем большую серию статей-туториалов о Kaspresso в частности и UI-тестах под Android в общем. Статьи планируются разного уровня сложности: первые материалы будут рассчитаны на людей, которые никогда не программировали и ничего не автоматизировали, в последних вы найдете хардовые детали реализаций разных сложных механизмов и инфраструктуру.

То есть в совокупности весь туториал будет полезен как для тех, кто лишь начинает поэтапное погружение в автоматизацию с Kaspresso, так и для опытных разработчиков, которые могут найти разные полезные детали реализаций или почерпнуть интересные практики.
Мы знаем, что вы долго просили подобный туториал. И наконец-то мы нашли время и энергию, чтобы претворить это в жизнь. Если у вас есть предложения или желание помочь, пишите в комментарии к статье или в телеграм-группу.

Для тех, кто слышит/читает про Kaspresso первый раз: если вы собираетесь писать UI-тесты под Android, то смело выбирайте данный инструмент. Почему именно Kaspresso? На этот вопрос мы подробно отвечаем в русской статье, английской статье, видео с Mobius, видео на английском и статье про сравнение текущих фреймворков для UI-тестов. Также, чтобы немного погрузиться в то, что собой представляют автотесты целиком в Android, мы написали отдельную статью. Если в приведенных выше материалах вам что-то непонятно, это вполне нормально, не переживайте. Благодаря туториалу у вас все окончательно станет по местам.

Автором первой статьи является Иван Федянин. Пару слов от Вани:

Всем привет! Меня зовут Иван Федянин, я работаю в компании wowworks.ru тестировщиком, в круг моих обязанностей входит ручное тестирование сайта и мобильного приложения компании. В последние полгода я начал интересоваться автоматизацией тестирования мобильных приложений, и после недолгих поисков и долгих раздумий решил разобраться с написанием автотестов на Kaspresso. Для большего погружения начал помогать с написанием туториала команде Kaspresso.

Итак, в первой статье мы очень подробно рассмотрим, как подготовить рабочее окружение для работы с Kaspresso, как скачать и запустить первые тесты на эмуляторах и реальных девайсах, а также как посмотреть результаты первых прогонов. Статья идеально подойдет тем, кто не имеет никакого опыта в разработке или автоматизации.

Оглавление

  1. Скачиваем проект

  2. Настройка и запуск эмулятора

  3. Запускаем тест на эмуляторе

  4. Запускаем тест на реальном устройстве

  5. Запуск теста/тестов — несколько вариантов

  6. Анализ результатов прогона тестов. Просмотр логов

Скачиваем проект

На вашей рабочей машине должен быть установлен Git. Ознакомиться с тем как Git работает и как его установить на свой компьютер, можно по ссылке.

Заходим на страницу https://github.com/KasperskyLab/Kaspresso, нажимаем кнопку (1):

image-loader.svg

Нам нужна строка (2), чтобы ее скопировать, нажимаем (3).

Далее нам нужен терминал (для Mac OS и Linux) или консоль (Windows). Переходим в папку, где хотим разместить проект, введя команду
cd <путь к вашему проекту>

Для Linux и MacOS путь может быть таким /Users/UserName/Desktop/MyProject
Для Windows — например, С://MyProject.

У меня Mac, так что это выглядит так:

image-loader.svg

(1) — команда
(2) — указывает на то, что мы находимся в нужной папке

Следующий шаг — клонируем репозиторий, за это отвечает команда
git clone https://github.com/KasperskyLab/Kaspresso.git

image-loader.svg

В результате выполнения команды создается копия удаленного репозитория на вашей машине. Как открыть проект, рассмотрим в следующем разделе.

Рассмотрим вариант получения проекта без использования Git

Так же переходим по ссылке https://github.com/KasperskyLab/Kaspresso, нажимаем зеленую кнопку Code:

image-loader.svg

Выбираем в выпадающем меню Download ZIP:

image-loader.svg

Скачиваем проект, распаковываем архив. Обратите внимание: название папки Kaspresso-master получается из-за того, что к названию добавляется название дефолтной ветки, однако при желании ее можно переименовать. Переносим папку с проектом в удобное место, в папке «Загрузки» оставлять не рекомендую:

image-loader.svg

Запуск проекта в Android Studio

Если на компьютере не установлена программа Android Studio, то идем по ссылке, смотрим, как ее установить и как настроить эмулятор устройства.

Далее запускаем Android Studio и на первом экране выбираем Import Project (Gradle, Eclipse ADT, etc.):

image-loader.svg

Открываем папку на диске, куда были распакованы (или скачены через Git) файлы Kaspresso:

image-loader.svg

После того как открыли проект, нужно подождать некоторое время, чтобы Android Studio проиндексировала файлы проекта.

Настройка и запуск эмулятора устройства

Первоначально нам необходимо в Android Studio создать эмулятор устройства, на котором мы будем запускать тесты.

Порядок действий описан ниже.

В верхнем меню выбираем Tools → AVD Manager:

image-loader.svg

Откроется окно управления виртуальными устройствами. Если вы его запускаете первый раз, устройств там не будет, а у меня уже есть три:

image-loader.svg

Нажимаем на кнопку Create Virtual Device…

Выбираем тип устройства, которое мы хотим эмулировать. Есть выбор: TV, Смартфон, Часы, и так далее. Нас интересует Смартфон, выбираем Phone:

image-loader.svg

После этого выбираем модель смартфона, например Nexus 6. После выбора модели нажимаем Next и попадаем на окно выбора образа операционной системы:

image-loader.svg

Если есть ссылка Download, то образ нужно скачать. Мы будем создавать эмулятор с Android 8.1, так что нажимаем Download и ждем, пока образ скачается:

image-loader.svg

Когда загрузка закончится, нажимаем Finish:

image-loader.svg

Выбираем скачанный образ и нажимаем Next:

image-loader.svg

На следующем экране ничего не меняем, нажимаем Finish:

image-loader.svg

Создается новое виртуальное устройство, мы его можем увидеть в следующем окне:

image-loader.svg

Запустить его можно кнопкой Action. И это лучше сделать до того, как мы на новом устройстве начнем запускать тесты. Первый запуск виртуального устройства достаточно долгий.

Также устройство стало доступно в выпадающем меню, где его можно выбрать для сборки и запуска тестов — об этом поговорим в следующем разделе:

image-loader.svg

Запускаем тест на эмуляторе

Давайте поговорим немного о том, где какие тесты лежат.

Есть две папки, где находятся примеры тестов:

image-loader.svg

Первая — это Kaspresso/samples, здесь находится сразу несколько модулей, каждый из которых является отдельным приложением-примером. В самом начале нас будут интересовать наиболее базовые тесты, которые расположены в модуле: Kaspresso/samples/kaspresso-sample.

Вторая — это Kaspresso/tutorial, где находятся сложные примеры и примеры лучших практик, к которым мы обратимся позже.

Для примера разберемся, как запускать тесты из Kaspresso/samples, по такому же принципу запускаются все остальные тесты.

Сначала выбираем отображение файлов проекта как Project.
Далеепереходим в samples → kaspresso-sample →src → androidTest:

image-loader.svg

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

Перед запуском тестов давайте посмотрим, как работает приложение. Для этого приложение нужно установить на эмулятор. Порядок действий такой:

Выбираем из выпадающего меню samples.kaspresso-sample:

image-loader.svg

Выбираем эмулятор, на который будем приложение устанавливать:

image-loader.svg

Далее нажимаем кнопку Run:

image-loader.svg

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

image-loader.svg

После ознакомления с тем, как приложение работает, переходим к запуску тестов. Будем запускать SimpleTest.

Для этого выбираем файл SimpleTest.kt, открываем его:

image-loader.svg

Есть несколько вариантов запуска теста, об этом есть отдельный раздел в данной статье. Мы запустим следующим образом.

Находим значок «красно-зеленая стрелочка» напротив строки кода:

class SimpleTest : TestCase()

image-loader.svg

При клике появляется выпадающее меню, в нем выбираем Run «SimpleTest»:

image-loader.svg

Тест запускается не моментально, нужно подождать некоторое время.
Если все прошло успешно, поздравляю, вы запустили свой первый автотест на Kaspresso!

Запуск на реальном устройстве

Для того чтобы запустить тесты на реальном устройстве, его нужно подключить кабелем к компьютеру, на нем должен быть включен режим разработчика и отладка по USB. Как это сделать на примере устройства Xiaomi, можно прочитать вот здесь.
Рассмотрим общие принципы, как включить режим разработчика, — они похожи на разных устройствах с ОС Android.

Мы разберем, как это сделать, на примере смартфона «Самсунг».

Заходим в настройки и идем в пункт меню Сведения о телефоне:

image-loader.svg

Далее выбираем Сведения о ПО:

image-loader.svg

Далее начинаем нажимать на Номер Сборки, нажать нужно несколько раз:

image-loader.svgimage-loader.svg

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

image-loader.svg

Далее необходимо включить Отладка по USB:

image-loader.svg

При первом подключении к компьютеру вы увидите оповещение, в нем будет цифровой ключ и чек-бокс. Принимаем, и с этого момента отладка по USB у нас включена:

image-loader.svg

Запускаем Android Studio, и теперь наш смартфон можно выбрать для сборки проекта:

image-loader.svg

Устройство появилось в меню выбора и в Logcat (об этой вкладке речь пойдет чуть ниже).

Дальше делаем абсолютно все так же, как и при запуске тестов на эмуляторе — собираем проект на устройстве и запускаем тест.

Запуск теста — несколько вариантов

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

Также можно запустить тест следующим образом.

Если тест уже запускался на устройстве, он остается в выпадающем меню, и его можно запустить повторно. Например, мы запускаем тест SimpleTest:

image-loader.svg

Для этого переходим в выпадающее меню (1), выбираем SimpleTest (2) и нажимаем на зеленую кнопочку (3).

После прогона тестов их можно еще раз запустить из закладки RUN (1). Для этого нажимаем на кнопку (2):

image-loader.svg

Видим, что тест запустился:

image-loader.svg

И успешно отработал:

image-loader.svg

Также можно запустить тест через контекстное меню. Выбираем тест, который хотим запустить, нажимаем правой кнопкой и выбираем Run «Название теста»:

image-loader.svg

Таким же способом можно запустить все тесты, которые находятся в папке: выбираем папку также правой кнопкой и выбираем Run «Название папки с тестами», запускаются все тесты из папки:

image-loader.svg

Результаты работы тестов можно увидеть на закладке Run:

image-loader.svg

Запуск тестов в Android Studio на нескольких устройствах

В Android Studio 4.2.1 появилась возможность собирать проект сразу на нескольких устройствах, и соответственно можно также запустить тесты сразу, например на реальном устройстве, на эмуляторе или на нескольких эмуляторах.

Для примера рассмотрим, как выбрать один эмулятор и реальное устройство:

image-loader.svg

Открываем меню выбора устройств и нажимаем на кнопку Select Multiple Devices…
Открывается окно выбора, где чекбоксами выбираем необходимые устройства:

image-loader.svg

В итоге, видим обозначение о выборе нескольких устройств:

image-loader.svg

Собираем проект и запускаем тест. Результаты теста можно посмотреть на закладке RUN:

image-loader.svg

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

Анализ результатов прогона тестов. Просмотр логов

В Kaspresso встроена замечательная функция — модификация и дополнение логов теста для улучшения их читаемости. Для просмотра полученных логов нужно сделать некоторые приготовления.

Логи находятся в так называемом Logcat — это кнопка, одна из многих, в самом низу окна Android Studio:

image-loader.svg

Идем во вкладку Logcat (приведенная сверху), далее в нажимаем в правой части окна Show only selected application и выбираем в выпадающем списке Edit Filter Configuration:

image-loader.svg

Открывается вот такое окно:

image-loader.svg

В окне необходимо заполнить два поля:

  • Filter Name — тут можно ввести любое название, в моем случае это Kaspresso logs.

  • Log Tag — в этом поле обязательно большими буквами пишем \bKASPRESSO\b.

image-loader.svg

Нажимаем ОК, наш фильтр логов готов к работе. Далее запускаем тест еще раз:

image-loader.svg

После запуска теста вы можете наблюдать логи теста во вкладке Logcat:

image-loader.svg

Eсли не сделать фильтр, то логи теста можно искать по тегу I/KASPRESSO, просто добавив этот тег в окно поиска:

image-loader.svg

Ну и пример выдачи логов вообще без фильтра: строки Kaspresso теряются среди системных:

image-loader.svg

Вместо заключения

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

До скорой встречи!

© Habrahabr.ru