Всем привет! Мы запускаем большую серию статей-туториалов о Kaspresso в частности и UI-тестах под Android в общем. Статьи планируются разного уровня сложности: первые материалы будут рассчитаны на  людей, которые никогда не программировали и ничего не автоматизировали, в последних  вы найдете хардовые детали реализаций разных сложных механизмов и инфраструктуру.  То есть в совокупности весь туториал будет полезен как для тех, кто лишь начинает поэтапное погружение в автоматизацию с Kaspresso, так и для опытных разработчиков, которые могут найти разные полезные детали реализаций или почерпнуть интересные практики. Мы знаем, что вы долго просили подобный туториал. И наконец-то мы нашли время и энергию, чтобы претворить это в жизнь. Если у вас есть предложения или желание помочь, пишите в комментарии к статье или в телеграм-группу. Для тех, кто слышит/читает про Kaspresso первый раз: если вы собираетесь  писать UI-тесты под Android, то смело выбирайте данный инструмент. Почему именно Kaspresso? На этот вопрос мы подробно отвечаем в русской статье, английской статье, видео с Mobius, видео на английском и статье про сравнение текущих фреймворков для UI-тестов. Также, чтобы немного погрузиться в то, что  собой представляют автотесты целиком в Android, мы написали отдельную статью. Если в приведенных выше материалах вам что-то непонятно, это вполне нормально, не переживайте. Благодаря туториалу у вас все окончательно станет по местам. Автором первой статьи является Иван Федянин. Пару слов от Вани: Всем привет! Меня зовут Иван Федянин, я работаю в компании wowworks.ru тестировщиком, в круг моих обязанностей входит ручное тестирование сайта и мобильного приложения компании. В последние полгода я начал интересоваться автоматизацией тестирования мобильных приложений, и после недолгих поисков и долгих раздумий решил разобраться с написанием автотестов на Kaspresso. Для большего погружения начал помогать с написанием туториала команде Kaspresso.  Итак, в первой статье мы очень подробно рассмотрим, как подготовить рабочее окружение для работы с Kaspresso, как скачать и запустить первые тесты на эмуляторах и реальных девайсах, а также как посмотреть результаты первых прогонов. Статья идеально подойдет тем, кто не имеет никакого опыта в разработке или автоматизации. Скачиваем проект Настройка и запуск эмулятора Запускаем тест на эмуляторе Запускаем тест на реальном устройстве Запуск теста/тестов — несколько вариантов Анализ результатов прогона тестов. Просмотр логов На вашей рабочей машине должен быть установлен Git. Ознакомиться с тем как Git работает и как его установить на свой компьютер, можно по ссылке.  Заходим на страницу https://github.com/KasperskyLab/Kaspresso, нажимаем кнопку (1): Нам нужна строка (2), чтобы ее скопировать, нажимаем (3). Далее нам нужен терминал (для Mac OS и Linux) или консоль (Windows). Переходим в папку, где хотим разместить проект, введя командуcd <путь к вашему проекту> Для Linux и MacOS путь может быть таким /Users/UserName/Desktop/MyProjectДля Windows — например, С://MyProject. У меня Mac, так что это выглядит так: (1)   — команда(2)   — указывает на то, что мы находимся в нужной папке Следующий шаг — клонируем репозиторий, за это отвечает командаgit clone https://github.com/KasperskyLab/Kaspresso.git В результате выполнения команды создается копия удаленного репозитория на вашей машине. Как открыть проект, рассмотрим в следующем разделе. Рассмотрим вариант получения проекта без использования Git     Так же переходим по ссылке https://github.com/KasperskyLab/Kaspresso, нажимаем зеленую кнопку Code: Выбираем в выпадающем меню Download ZIP: Скачиваем проект, распаковываем архив. Обратите внимание: название папки Kaspresso-master получается из-за того, что к названию добавляется название дефолтной ветки, однако при желании ее можно переименовать. Переносим папку с проектом в удобное место, в папке «Загрузки» оставлять не рекомендую: Запуск проекта в Android Studio Если на компьютере не установлена программа Android Studio, то идем по ссылке, смотрим, как ее установить и как настроить эмулятор устройства. Далее запускаем Android Studio и на первом экране выбираем Import Project (Gradle, Eclipse ADT, etc.): Открываем папку на диске, куда были распакованы (или скачены через Git) файлы Kaspresso: После того как открыли проект, нужно подождать некоторое время, чтобы Android Studio проиндексировала файлы проекта.  Первоначально нам необходимо в Android Studio создать эмулятор устройства, на котором мы будем запускать тесты.  Порядок действий описан ниже. В верхнем меню выбираем Tools -> AVD Manager: Откроется окно управления виртуальными устройствами. Если вы его запускаете первый раз, устройств там не будет, а у меня уже есть три: Нажимаем на кнопку Create Virtual Device… Выбираем тип устройства, которое мы хотим эмулировать. Есть выбор: TV, Смартфон, Часы, и так далее. Нас  интересует Смартфон, выбираем Phone: После этого выбираем модель смартфона, например Nexus 6. После выбора модели нажимаем Next и попадаем на окно выбора образа операционной системы: Если есть ссылка Download, то образ нужно скачать. Мы будем создавать эмулятор с Android  8.1, так что нажимаем Download и ждем, пока образ скачается: Когда загрузка закончится, нажимаем Finish: Выбираем скачанный образ и нажимаем Next: На следующем экране ничего не меняем, нажимаем Finish: Создается новое виртуальное устройство, мы его можем увидеть в следующем окне: Запустить его можно кнопкой Action. И это лучше сделать до того, как мы на новом устройстве начнем запускать тесты. Первый запуск виртуального устройства достаточно долгий. Также устройство стало доступно в выпадающем меню, где его можно выбрать для сборки и запуска тестов — об этом поговорим в следующем разделе: Давайте поговорим немного о том, где какие тесты лежат. Есть две папки, где находятся примеры тестов: Первая — это Kaspresso/samples, здесь находится сразу несколько модулей, каждый из которых является отдельным приложением-примером. В самом начале нас будут интересовать наиболее базовые тесты, которые расположены в модуле: Kaspresso/samples/kaspresso-sample. Вторая — это Kaspresso/tutorial, где находятся сложные примеры и примеры лучших практик, к которым мы обратимся позже. Для примера разберемся, как запускать тесты из Kaspresso/samples, по такому же принципу запускаются все остальные тесты. Сначала выбираем отображение файлов проекта как Project.Далее переходим в samples -> kaspresso-sample ->src -> androidTest: Примеры UI-автотестов разложены по папкам согласно своему предназначению, которое понятно из названия. После ознакомления с примером рекомендую запустить их все для наглядного представления о возможностях проекта. Перед запуском тестов давайте посмотрим, как работает приложение. Для этого приложение нужно установить на эмулятор. Порядок действий такой: Выбираем из выпадающего меню samples.kaspresso-sample: Выбираем эмулятор, на который будем приложение устанавливать: Далее нажимаем кнопку Run: Если приложение установилось без ошибок, оно сразу запускается, в нашем случае это выглядит вот так: После ознакомления с тем, как приложение работает, переходим к запуску тестов. Будем запускать SimpleTest. Для этого выбираем файл SimpleTest.kt, открываем его: Есть несколько вариантов запуска теста, об этом есть отдельный раздел в данной статье. Мы запустим следующим образом. Находим значок «красно-зеленая стрелочка» напротив строки кода: При клике появляется выпадающее меню, в нем выбираем Run «SimpleTest»: Тест запускается не моментально, нужно подождать некоторое время.Если все прошло успешно, поздравляю, вы запустили свой первый автотест на Kaspresso! Для того чтобы запустить тесты на реальном устройстве, его нужно подключить кабелем к компьютеру, на нем должен быть включен режим разработчика и отладка по USB. Как это сделать на примере устройства Xiaomi, можно прочитать вот здесь.Рассмотрим общие принципы, как включить режим разработчика, — они похожи на разных устройствах с ОС Android. Мы разберем, как это сделать, на примере смартфона «Самсунг». Заходим в настройки и идем в пункт меню Сведения о телефоне: Далее выбираем Сведения о ПО: Далее начинаем нажимать на Номер Сборки, нажать нужно несколько раз: В процессе будут появляться сообщения, сколько вам осталось нажатий. После последнего нажатия будет сообщение, что вы стали разработчиком, и в настройках появится пункт меню Параметры разработчика: Далее необходимо включить Отладка по USB: При первом подключении к компьютеру вы увидите оповещение, в нем будет цифровой ключ и чек-бокс. Принимаем, и с этого момента отладка по USB у нас включена: Запускаем Android Studio, и теперь наш смартфон можно выбрать для сборки проекта: Устройство появилось в меню выбора и в Logcat (об этой вкладке речь пойдет чуть ниже). Дальше делаем абсолютно все так же, как и при запуске тестов на эмуляторе — собираем проект на устройстве и запускаем тест. Тесты можно запустить несколькими способами, давайте рассмотрим некоторые из них. Первый был описан в примере выше. Также можно запустить тест следующим образом. Если тест уже запускался на устройстве, он остается в выпадающем меню, и его можно запустить повторно. Например, мы запускаем тест SimpleTest: Для этого переходим в выпадающее меню (1), выбираем SimpleTest (2) и нажимаем на зеленую кнопочку (3). После прогона тестов их можно еще раз запустить из закладки RUN (1). Для этого нажимаем на кнопку (2): Видим, что тест запустился: И успешно отработал: Также можно запустить тест через контекстное меню. Выбираем тест, который хотим запустить, нажимаем правой кнопкой и выбираем Run «Название теста»: Таким же способом можно запустить все тесты, которые находятся в папке: выбираем папку также правой кнопкой и выбираем Run «Название папки с тестами», запускаются все тесты из папки: Результаты работы тестов можно увидеть на закладке Run: Запуск тестов в Android Studio на нескольких устройствах В Android Studio 4.2.1 появилась возможность собирать проект сразу на нескольких устройствах, и соответственно можно также запустить тесты сразу, например на реальном устройстве, на эмуляторе или на нескольких эмуляторах.  Для примера рассмотрим, как выбрать один эмулятор и реальное устройство: Открываем меню выбора устройств и нажимаем на кнопку Select Multiple Devices....Открывается окно выбора, где чекбоксами выбираем необходимые устройства: В итоге, видим обозначение о выборе нескольких устройств: Собираем проект и запускаем тест. Результаты теста можно посмотреть на закладке RUN: Тут отображаются результаты теста по устройствам, и также есть выдача технической информации о результатах теста. Как смотреть логи, мы рассмотрим ниже в соответствующем разделе. В Kaspresso встроена замечательная функция — модификация и дополнение логов теста для улучшения их читаемости. Для просмотра полученных логов нужно сделать некоторые приготовления. Логи находятся в так называемом Logcat — это кнопка, одна из многих, в самом низу окна Android Studio: Идем во вкладку Logcat (приведенная сверху), далее в нажимаем в правой части окна Show only selected application и выбираем в выпадающем списке Edit Filter Configuration: Открывается вот такое окно: В окне необходимо заполнить два поля: Filter Name — тут можно ввести любое название, в моем случае это Kaspresso logs. Log Tag — в этом поле обязательно большими буквами пишем \bKASPRESSO\b. Нажимаем ОК, наш фильтр логов готов к работе. Далее запускаем тест еще раз: После запуска теста вы можете наблюдать логи теста во вкладке Logcat: Eсли не сделать фильтр, то логи теста можно искать по тегу I/KASPRESSO, просто добавив этот тег в окно поиска: Ну и пример выдачи логов вообще без фильтра: строки Kaspresso теряются среди системных: В первой статье мы ознакомились с тем, как запускать примеры на Kaspresso. В следующей статье будет подробно рассмотрено, как самостоятельно написать первый тест, какие для этого нужны сущности и как их правильно использовать.  До скорой встречи! Software engineer