Автоматизация тестирования мобильных приложений с помощью фреймворка Calabash

Введение в Calabash

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

Введение в Calabash

Что такое Calabash?

По своей сути Calabash является драйвером, который управляет приложением на устройстве. В выбранном проекте используется связка Calabash+Cucumber.

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

Инструменты

Для использования Calabash необходимы:

  • Android SDK
  • Apache Ant
  • Ruby версии 1.9.3 (не 2.0.0 или выше)
  • Ruby DevKit
  • Calabash из Ruby gems
  • apk-файл тестируемого приложения

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

Тестовые сценарии

После установки всех необходимых компонентов можно подходить к написанию тестовых сценариев.

Одними из важнейших команд Calabash являются команды Query, Tap и performAction:

  • Query используется для поиска необходимых объектов и их свойств.
  • Tap – команда нажатия на объект.
  • performAction– исполнение определенных действий (нажатие на кнопку "назад", "меню", проскроллить и тому подобное).

Для работы с запросом Query необходимо задействовать Calabash консоль. К примеру, нам нужно указать в шаге нажатие на кнопку "Arhive". Для этого выясняем какой объект имеет текст "Arhive". Пишем в командной строке:

irb (main): 008: 0> query ("* text: 'Archive'")

В результате узнаём, что объект с текстом "Settings" имеет id "menuSettings". Теперь мы можем нажать на кнопку с соответствующим ID.

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

При написании тестов можно использовать уже готовые шаги, имеющиеся в Calabash - Canned steps. Если же этого не хватает, то можно использовать Rubi Api:

Пример описания тестового сценария:

Пример описания тестового сценария

В Calabash это будет выглядеть:

Заключение

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