Calabash Android Учебное пособие по инструменту тестирования

⚡ Умное резюме

Calabash Это фреймворк для приемочного тестирования с открытым исходным кодом, который имитирует реальные действия пользовательского интерфейса. Android и iOS-приложения, написанные простым и понятным языком. Cucumber сценарии, поддерживаемые определениями шагов на языке Ruby и сервером тестирования на стороне устройства.

  • 🔸 Определение: Calabash Автоматизирует касания, ввод текста и проверки подлинности в нативных и гибридных мобильных приложениях на реальных устройствах и эмуляторах.
  • ☑️ Языковой стек: Сценарии описываются в файлах функций Gherkin, а методы сопоставления находятся в файлах Ruby внутри блока step_definitions.
  • Фонд BDD: Разработка, основанная на поведении (Behavior Driven Development), позволяет владельцам бизнеса, разработчикам и тестировщикам согласовывать поведение еще до создания какого-либо скрипта.
  • 🧪 Порядок установки: Java JDK, затем Ruby, затем Android StudioЗатем был установлен гем calabash-android, версия которого была проверена с помощью команды version.
  • 🇧🇷 Ход выполнения: Переподпишите APK-файл, соберите тестовый сервер, подключите устройство, запросите локаторы, а затем запустите файлы функций.
  • 📊 Текущий статус: Calabash архивируется и не поддерживается, поэтому для новых проектов обычно выбирают другой вариант. Appium, Espresso или используйте XCUITest.

Calabash Учебное пособие по инструменту тестирования для Android показ Cucumber Функциональные файлы, лежащие в основе мобильного приложения

Что такое Calabash?

Calabash является проектом с открытым исходным кодом Acceptance Тестирование фреймворк, позволяющий писать и выполнять тесты для iOS и Android Программы.

Это автоматизированная платформа для создания пользовательского интерфейса, позволяющая писать тесты на Ruby. Cucumber.

Calabash Работает за счет автоматического взаимодействия с пользовательским интерфейсом в мобильном приложении, например, нажатия кнопок, ввода текста, проверки ответов и т. д. Может быть настроен для работы на различных платформах. Android и устройства iOS, которые обеспечивают обратную связь и проверки в режиме реального времени.

⚠️ Примечание к версии: Microsoft прекратил свои взносы в Calabash после финальной версии iOS 11 и Android 8 релизов, и репозиторий calabash-android Теперь проект позиционирует себя как ищущий сопровождающего. Приведённое ниже пошаговое руководство сохранено в том виде, в котором оно написано, а современные замены описаны в последнем разделе.

Почему Calabash Автоматизация?

Перед установкой чего-либо полезно сопоставить преимущества предлагаемой платформы с затратами на её обслуживание.

Преимущества Недостатки
Это помогает увеличить пропускную способность/производительность. Для написания сценариев автоматизированного тестирования необходимы навыки.
Улучшенное качество или повышенная предсказуемость качества Отладка тестового сценария является серьезной проблемой.
Повышенная надежность (согласованность) процессов или продуктов. В случае методов воспроизведения обслуживание тестирования обходится дорого.
Увеличение стабильности производства и снижение затрат на рабочую силу и затрат. Сопровождение файлов тестовых данных затруднено, если тестовый сценарий проверяет больше экранов.

Calabash и BDD

  • Calabash is Разработка, управляемая поведением (BDD)Это то же самое, что и... Разработка через тестирование (TDD)Однако вместо создания тестов для описания структуры API, задается поведение приложения.
  • BDD — это процесс, в котором участвуют несколько заинтересованных сторон, чтобы прийти к общему пониманию того, что необходимо построить.
  • BDD помогает в создании правильного программного обеспечения и проектировании с точки зрения владельца бизнеса.

На приведенной ниже диаграмме показано, как Calabash Комплекс решений имеет многоуровневую структуру: от понятного для бизнеса файла описания функций на верхнем уровне до описания взаимодействия с устройством на нижнем.

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

Как установить Calabash

Calabash on Windows Для работы требуется установить четыре необходимых компонента в указанном порядке. Полностью выполните каждую часть перед началом следующей, поскольку гем calabash-android проверяет наличие Ruby и... Android SDK во время установки.

Часть I) Установка Java JDK – обратитесь к этому руководству – /install-java.html

Часть II) Загрузите и установите Ruby.

Шаг 1) Загрузите Ruby из... URL https://rubyinstaller.org/downloads

На странице загрузки RubyInstaller указан список доступных версий Ruby. Windows

Шаг 2) Откройте исполняемый файл (.exe) и следуйте инструкциям на экране. После завершения установки вы увидите следующий экран. Нажмите «Готово».

Экран завершения мастера установки Ruby с выделенной кнопкой «Готово».

Запустите командную строку с включенным Ruby Windows 10 и введите команду ниже.

ruby -v

В консоли отображается установленная версия интерпретатора, как показано ниже.

Командная строка с Ruby, отображающая номер установленной версии Ruby.

Часть III) Загрузите и установите Android

Шаг 1) Скачать Android Studio at https://developer.android.com/studio

Android Studio Мастер установки запущен Windows во время установки

Шаг 2) Откройте исполняемый файл (.exe), следуйте инструкциям на экране и завершите установку. После завершения нажмите кнопку «Готово».

Android Studio Экран завершения установки с кнопкой "Завершить".

Часть IV) Установка Calabash Android

Шаг 1) В консоли введите команду `gem install calabash-android`. Начнётся установка, которая займёт некоторое время.

Вывод консоли во время установки гема calabash-android и его зависимостей.

Шаг 2) После завершения установки введите команду `calabash-android version`.

Консоль подтверждает установленную версию гема calabash-android.

Работая с Calabash

После установки гема следующая задача — найти папку framework и понять, с какой структурой он поставляется.

Откройте папку «calabash-android-0.9.0». Он находится по пути C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Имена папок будут меняться синхронно с версией Ruby/Calabash, которую вы устанавливаете на свой компьютер.

Откройте папку скелета объекта. Обратите внимание на эту базовую структуру.

Calabash Папка с шаблонами функций, содержащая каталоги поддержки и определений шагов.

  • Файл *.feature содержит сценарии, которые мы собираемся автоматизировать.
  • Метод, используемый файлом функций, записан в файле *.rb внутри папки «step_definitions».
  • Общие методы, настройки среды, установка приложений и перехватчики должны быть помещены в папку «Поддержка».

Уйти в отставку и создать приложение

  • Calabash-android resign *.apk
  • Calabash-android build *.apk

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

Вывод в консоль команд resign и build пакета calabash-android, создавших тестовый сервер.

Подключите устройство к системе/Откройте эмулятор

Проверьте подключенное устройство. Введите команду

adb devices

Должен отобразиться список подключенных устройств. Если устройство отсутствует, выполните шаги отладки и сопряжения по USB, описанные в соответствующем разделе. Руководство по подключению ADB Решает большинство случаев.

Список команд adb devices, один из которых прилагается. Android устройство по серийному номеру

Как найти локатор элемента

  • Откройте консоль. Введите команду.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Приведенная выше команда запустит приложение на устройстве. Чтобы найти локатор элемента, используйте следующую команду.
    query "*"

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

Calabash Вывод в консоль дерева запрошенных элементов для текущего экрана приложения.

Calabash Структура проекта и предопределенные этапы

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

calabash-android gen

Сгенерированное дерево разделяет три основных аспекта набора инструментов BDD:

  • функции/ — один из сценариев с «Огурцом» .особенность Файл для каждого пользовательского пути.
  • features/step_definitions/ — методы Ruby, соответствующие каждой строке Gherkin, включая входящий в комплект файл calabash_steps.rb.
  • функции/поддержка/ — конфигурация среды и механизмы установки, запуска и завершения работы приложения в каждом конкретном случае.

Входящий в комплект файл calabash_steps.rb имеет большее значение, чем кажется на первый взгляд. Он содержит большой набор готовых шагов на английском языке, поэтому в первом сценарии можно нажимать кнопки, вводить текст и проверять видимые строки, прежде чем будет написан хотя бы один пользовательский метод. Пользовательские шаги понадобятся только тогда, когда сценарий выйдет за рамки этих готовых фраз.

На начальном этапе стоит ознакомиться с двумя настройками на уровне проекта. Скриншоты по умолчанию сохраняются в текущем рабочем каталоге, а переменная среды SCREENSHOT_PATH перенаправляет их в другое место, что обеспечивает упорядоченность артефактов сборки на общем компьютере. Для взаимодействия с системными диалогами или другим приложением требуется бэкенд UIAutomator2, запускаемый с помощью команды start_test_server_in_background(with_uiautomator: true).

Создание новых сценариев

Откройте файл объекта и следующие строки

Файл с описанием функций авторизации, открытый в редакторе, демонстрирует шаги сценария Gherkin.

Feature: Login feature
  Scenario: As a valid user I can log into my app
    When I press "Login"
    And I enter my username
    And I enter my password
    Then I see "Welcome to coolest app ever"

Откройте файл определения шага и определите метод в файле *.rb.

Карта файлов определения шагов Rubyping линия «Огурец» к Calabash запрос элемента

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Выполнить тестовый проект

Чтобы выполнить тестовый проект, используйте команду ниже

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Программа выводит информацию о каждом шаге по мере его выполнения, и при успешном завершении отображает итоговые данные по сценарию и шагам.

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

Calabash В консоли отображается сводная информация о пройденных сценариях и количестве шагов после выполнения.

Общие Calabash Ошибки и способы их исправления

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

Симптом Вероятная причина и способ устранения проблемы
Приложение аварийно завершает работу в тот же момент, когда начинается тестирование. В APK-файле отсутствует разрешение android.permission.INTERNET, необходимое тестовому серверу для приема команд. Объявите это разрешение в файле. AndroidПересобрать файл Manifest.xml.
Кнопки и текст не реагируют на нажатия. Параметр targetSdkVersion не указан. Добавьте запись uses-sdk, указывающую уровень SDK, для которого было собрано приложение.
Тестовый сервер не может подключиться к приложению. APK-файл не был переподписан с использованием отладочного ключа. Выполните команду переподписи, затем выполните сборку заново перед запуском.
В момент выполнения программы устройства не отображаются. Отладка по USB отключена или отсутствует драйвер. Убедитесь, что серийный номер отображается в выводе команды adb devices.
Выполнение шагов завершается с ошибкой "неопределенный шаг". Формулировка Gherkin не соответствует ни одному регулярному выражению в step_definitions. Скопируйте предложенный фрагмент. Cucumber распечатывает и внедряет его.

Две записи в манифесте исправляют первые две строки. Добавьте их перед повторной подписью APK-файла.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

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

Is Calabash Поддерживается ли еще? Альтернативы для современного тестирования мобильных приложений.

Calabash Активная разработка прекращена. Microsoft прекратил вносить свой вклад после начала поддержки финальной версии iOS 11. Android После 8 релизов проект превратился в архивированную базу кода с открытым исходным кодом без сопровождающего. Существующие пакеты тестов по-прежнему работают на старых устройствах, но планируется начать работу над поддерживаемой платформой.

Рамки Платформа Наиболее подходит для
Appium Android и iOS Кроссплатформенные пакеты программ в Java, PythonРуби или JavaСценарий, и ближайшая замена для Calabash .
Espresso Android Важно Быстрые внутрипроцессные тесты, написанные на Kotlin или Java самими разработчиками приложения.
XCUITest только iOS Родной Xcode апартаменты, поддерживаемый преемник вышедшего на пенсию UIAutomation framework.
Маэстро и Детокс Android и iOS Более новые проекты с открытым исходным кодом, направленные на повышение устойчивости к отслаиванию графена и разработку приложений на React Native.

Сама концепция BDD легко переносится. Файлы функций Gherkin остаются точно такими же, как есть, и меняются только тела определения шагов, потому что Cucumber располагается над драйвером, а не внутри него. Команды, осуществляющие миграцию, обычно сохраняют файлы функций, но переписывают шаги Ruby в соответствии с ними. Appiumи использовать тот же самый мобильное тестирование матрица устройств и автоматизация тестирования Они уже запущены по этому конвейеру.

Часто задаваемые вопросы (FAQ)

Да. Отдельный гем calabash-ios позволял запускать iOS-приложения через тот же Ruby и Cucumber слой. Он имеет статус устаревания, аналогичный статусу устаревания слоя. Android gem, поэтому для текущей работы с iOS лучше использовать XCUITest или Appium.

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

Copilot хорошо справляется с повторяющимися элементами, такими как обертка блока wait_for.ping Это запрос к элементу. Он не может знать идентификаторы элементов вашего приложения, поэтому рассматривайте каждый сгенерированный шаг как черновик для проверки по результатам реального запроса.

Cucumber Это универсальный BDD-инструмент, который считывает данные из Gherkin и вызывает методы Ruby. Calabash Это библиотека автоматизации мобильных приложений, которую вызывают эти методы. Cucumber решает, что будет работать; Calabash Выполняет касание, ввод текста и проверку.

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

№ Calabash Инструментарий используется для скомпилированного APK-файла, поэтому и существует этап переподписания. Доступ к исходному коду помогает добавлять стабильные идентификаторы элементов, но самому фреймворку достаточно иметь сборку, которую он может переподписать и инструментировать.

Да. Поскольку выполнение представляет собой единый вызов командной строки, любой сервер сборки может запустить его после создания APK-файла. Jenkins Как правило, задача переподписывает APK-файл, запускает эмулятор, выполняет отмеченные тегами функции и архивирует отчеты.

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

Подведем итог этой публикации следующим образом: