Автоматизация: Есть ли шанс у Maestro для тестирования мобильных приложений?. appium.. appium. maestro фреймворк.. appium. maestro фреймворк. maestroqa.. appium. maestro фреймворк. maestroqa. software testing.. appium. maestro фреймворк. maestroqa. software testing. карьера тестировщика.. appium. maestro фреймворк. maestroqa. software testing. карьера тестировщика. мобильное тестирование.. appium. maestro фреймворк. maestroqa. software testing. карьера тестировщика. мобильное тестирование. Разработка мобильных приложений.. appium. maestro фреймворк. maestroqa. software testing. карьера тестировщика. мобильное тестирование. Разработка мобильных приложений. тестирование.. appium. maestro фреймворк. maestroqa. software testing. карьера тестировщика. мобильное тестирование. Разработка мобильных приложений. тестирование. Тестирование мобильных приложений.

Итак, автоматизация тестирования мобильных приложений — это тема, которая остается актуальной и востребованной. За последние годы наблюдается тенденция к упрощению разработки и снижению объема написания кода. “No code” решения только способствуют этому.

Более того, технологии искусственного интеллекта (ИИ) все чаще применяются для создания тестов, что значительно ускоряет процессы. Например, Testim или Applitools Eyeys.

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

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

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

Appium

Универсальное решение для тестирования iOS и Android. Основное преимущество — возможность работы без доступа к исходному коду приложения. Интуитивно понятный Selenium-синтаксис, позволяет разработчикам писать тесты на множестве языков программирования: Java, Python, JavaScript, C#, Ruby и других.

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

XCUITest

Стандартный инструмент для тестирования приложений на iOS, интегрированный в Xcode. Поддерживает только языки Objective-C и Swift, что ограничивает его использование.

Подходит для разработки быстрых и надежных тестов, но работает исключительно с экосистемой Apple.

Jetpack Compose Testing

Новый фреймворк Jetpack Compose позволяет тестировать приложения, которые разработаны с декларативным подходом.

У меня есть видео про автоматизацию с помощью этого инструмента, включая описание работы тестового приложения ToDoSlav, которое мы будем рассматривать далее в статье.

Espresso

Инструмент от Google для тестирования Android-приложений. Отличается простотой использования, высокой стабильностью и встроенной поддержкой Java и Kotlin. Espresso идеально подходит для написания тестов, интегрированных в процессы разработки.

Также можно упомянуть KIF, Robotium и другие инструменты для мобильного тестирования. Однако, Appium является основным инструментом в индустрии мобильного тестирования.

Maestro: новый “игрок” в мобильном тестировании?

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

Что еще интересно: судя по поддерживаемым платформам, возможно также и веб-тестирование.

Особенности Maestro

  • Поддержка iOS и Android: универсальное решение для обеих платформ. В случае с iOS на данный момент есть ограничение, что фреймворк не работает с реальными устройствами – только с эмуляторами.

  • Возможность использования Page Object Model. Можно писать простые YAML скрипты, а можно использовать POM и прописать локаторы js в отдельном файле.

  • Простота настройки: не требует сложных конфигураций и интеграций. По сути, это даже не столько программирование, а написание простых команд в YAML файле.

  • Интуитивно понятный интерфейс: тесты создаются буквально за пару кликов, что особенно удобно для тестировщиков без опыта программирования.

  • Гибкость: возможность интеграции с CI/CD процессами.

  • Работа с локаторами: Локаторы определяются через атрибуты ID, текст или позиции. Это упрощает их создание и обслуживание по сравнению с Appium, где часто требуется сложная XPath-навигация (что является отдельной “болью”). Также есть “maestro studio” – веб-интерфейс, который позволяет легко найти необходимые локаторы.

  • Стабильность: фреймворк минимизирует количество ложных срабатываний (“flaky tests”), обеспечивая более надежные результаты. Однако надо учитывать, что он находится в стадии активной разработки и далеко не весь функционал реализован. Нет необходимости управлять ожиданиями элементов, в отличие от Appium и подобных ему фреймворков.

Как установить Maestro?

Не будем слишком долго фокусироваться на установке, так как есть довольно обширный документ об этом на официальном сайте. Для Windows необходима установка WSL компонента в систему.

Далее Maestro можно установить на любой системе с помощью команды:

curl -fsSL "https://get.maestro.mobile.dev" | bash

Либо (если у вас установлен пакетный менеджер HomeBrew), то можно использовать команду:

brew tap mobile-dev-inc/tap brew install maestro

Основные команды для запуска Maestro

Все довольно просто. В основном вы будете использовать следующие команды:

  • Запуск теста: maestro test <test_file.yaml>. Позволяет выполнить сценарий тестирования.

  • Просмотр логов: maestro cloud. Позволяет запускать тесты в “облаке”. Для этого у разработчика есть отдельный сайт.

  • Интерактивный режим: maestro studio. Запускает графический интерфейс для создания и редактирования тестов.

  • Проверка конфигурации: maestro record. Запись видео-тестов исполнения тестов. Удобно, когда такое средство встроено непосредственно в сам фреймворк

Пример использования Maestro

Мы будем тестировать простое приложение для создания списка задач “ToDoSlav”. Его я написал как шаблон для тестирования с использованием различных фреймворков. У меня есть видео-урок по автоматизации этого приложения с использованием Jetpack Compose.

Репозиторий с приложением здесь. Можно собрать готовый APK файл с помощью Android Studio, а можно использовать готовый файл здесь.

После того как APK файл скачан или собран вами самостоятельно – можно приступать к созданию и настройке эмулятора, либо использованием вашего физического Android устройства. Видео-инструкцию по тому как это сделать в Android Studio я создал здесь.

Конфигурация теста Maestro

Эмулятор с запущенным приложением ToDoSlav

Эмулятор с запущенным приложением ToDoSlav

После установки приложения на эмулятор или физическое устройство – можно приступать к написанию тестов.

Кстати, установить приложение можно просто “перетягиванием” apk файла в эмулятор или использованием команды “adb install <название>.apk”. После этого оно появится в списке установленных приложений на устройстве.

Напишем простой Android тест для нашего приложени ToDoSlav с использованием следующих команд и назовем его main_activity_test.yml:

appId: com.deemoun.todoapp
---
# Commands section
- launchApp

# Test 01: Add Task
- tapOn: "EnterTaskField"
- inputText:
    text: "TestTask1"
    id: "EnterTaskField"
- tapOn: "Add"
- assertVisible: "TestTask1"
- tapOn: "Delete"

# Test 02: Verify UI Components
- assertVisible: "EnterTaskField"
- assertVisible: "AddButton"
- assertVisible: "LinksButton"

Разберем каждую команду:

1) appId: У каждого установленного приложения на Android есть определенный идентификатор. В нашем случае это “com.deemoun.todoapp“.

2) Команда “launchApp“. Запускаем приложение по этому идентификатору. Если указан неверно – приложение не запустится.

3) Указываем комментарий, что это первый тест “Test 01” и пишем шаги.

4) Первый шаг: Установить фокус на элементе “EnterTaskField” – это поле ввода в нашей программе. Используется команда “tapOn

5) Далее пишем, что мы производим ввод в поле с названием “EnterTaskField” с содержанием “TestTask1”. Используется команда “inputText” с параметрами “text” и “id” нужного элемента.

6) Далее мы нажимаем кнопку “Add” с помощью уже известной нам команды “tapOn”.

7) С помощью команды “assertVisible” проверяем, что такой элемент имеется на экране.

8) Удаляем добавленное задание с помощью команды “tapOn” по названию элемента: “Delete”.

Запуск тестов Maestro

Успешно запущенный тест Maestro

Успешно запущенный тест Maestro

Запуск тестов осуществляем с помощью команды “maestro test main_activity_test.yml” в терминале вашей операционной системы.

Как мы видим на скриншоте выше – все тесты здесь прошли успешно, но так бывает не всегда. В случае когда тест “провалился” – формируется скриншот с окном приложения в момент “провала” теста.

Maestro Studio: поиск элементов и локаторов

Maestro Studio - открывается локально в браузере при запуске команды "maestro studio" в терминале

Maestro Studio – открывается локально в браузере при запуске команды “maestro studio” в терминале

Возникает вопрос. Каким же образом находить элементы на экране и взаимодействовать с ними? Так вот, Maestro Studio — это инструмент с графическим интерфейсом, который упрощает создание тестов.

Можно записать готовый сценарий и потом просто вставить его в YAML файл, а можно найти локаторы и использовать их в нужных случаях.

Утилита запускается с помощью команды «maestro studio» и открывается в вашем веб‑браузере. Важно, чтобы был запущен эмулятор, так как утилита подключается к эмулятору. В левой части утилиты доступные элементы приложения, а в правой окно запуска команд и поиска элементов.

Основные возможности Maestro Studio

  • Запись действий пользователя для автоматической генерации сценария.

  • Поиск локаторов для элементов

  • Визуальная отладка тестов в реальном времени.

  • Быстрая модификация уже созданных тестов.

Какие у Maestro основные команды для выполнения тестов?

Команда

Применение

tapOn

Нажатие на элемент интерфейса по его ID или тексту элемента

inputText

Ввод текста в поле ввода

assertVisible

Проверка наличия элемента на экране

scroll

Прокрутка до определенного элемента

longPress

Длительное нажатие на элемент

capture

Сохранение снимка экрана

swipe

Проведение по экране в указанном направлении

waitFor

Ожидание появления элемента

Appium: лучше или нет?

Appium это инструмент с большой историей разработки и применения. В больших компания уже выработалась культура вокруг Selenium-подобного синтаксиса и это не так быстро изменить.

Несмотря на проблемы в Appium (например, самая очевидная – управление ожиданиями элементов) – Appium активно развивающийся инструмент, который себя уже зарекомендовал на рынке.

Но это не значит, что его позиции нельзя потеснить. Более того, это уже происходит.

Выводы

Maestro — это интересное решение для тех, кто ищет простоту и доступность в автоматизации тестирования мобильных приложений.

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

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

  • Расширение поддержки сложных сценариев: добавление возможностей для тестирования более специфических пользовательских взаимодействий.

  • Улучшение документации Maestro

  • Интеграции: больше готовых решений для CI/CD, а также IDE.

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

Все таки, это новое решение и имеет вышеперечисленные недостатки. C другой стороны, если приложение простое и имеет всего 2-3 страницы, то имеет смысл рассмотреть Maestro (можно в течение пары часов написать необходимые тесты).

Будем наблюдать как будет развиваться этот фреймворк в дальнейшем и сможет ли он конкурировать с другими инструментами.

Автор: DeemounUS

Источник

Rambler's Top100