[Из песочницы] Автоматизация приемочного тестирования Android приложений с помощью Calabash

05d07a6790bfe88cb0d6a69f33a1a663.pngИсточник изображенияВ данной статье я хочу ознакомить вас с еще одним фреймворком для автоматизации тестирования мобильных приложений, а конткретно с Calabash — кроссплатформенным решении для приемочного тестирования Android и iOS приложений. Статья рассчитана на новичков.Calabash Calabash — это фреймворк для автоматизации функционального приемочного тестирование, тесты написанные на Calabash (Cucumber-подобные сценарии) позволяют тестировать как Android, так и iOS приложения. Calabash разрабатывается кампанией Xamarin.Чтобы использовать Calabash, необходимо установить следующие компоненты:

Calabash постоянно развивается, поэтому самую свежую версию документации можно найти на сайте: github.com/calabash/calabash-android.Преимущества Calabash для тестирования приложений:

Простота написания тестов Возможность написания кроссплатформенных тестов (для Android и iOS) Написания сценариев в стиле Cucumber Отличный Ruby API Возможноность запускать тесты в облаке Возможность запускать тесты на эмуляторе Недостатки: Порой, трудно идентифицировать объекты Не всегда хватает предписанных шагов для написания тестового сценария Необходим apk-файл тестируемого приложения Достаточно долгое прохождение тестов Разработка тестового сценария: Для ознакомления я буду писать простые тестовые сценарии на ОС Windows 7, чтобы показать принцип работы. В данном тесте будет реализована проверка голландской локализации меню приложения. Определим действия, которые будут реализованы в тесте: Проверка наличия всех необходимых опций в меню приложения Изменения языка приложения на голландский Проверка корректности перевода опций меню В качестве примера я взял Clean Master (Free) (apk доступен на сайте: www.androiddrawer.com/) — простую программу для очистки телефона.Анализ приложения Для анализа пользовательского интерфейса приложения будем использовать консольную интерективную среду Calabash. Ruby API (github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md) позволяет нам получить объекты и их свойства, которые присутствуют на экране. Наиболее нужнымы командами интерактивной среды calabash являются: query для поиска необходимых объектов и их свойств, tap — команда нажатия на объект, а также команда performAction — исполнение определенных действий (нажатие на кнопку «назад», «меню», проскроллить и тому подобное). Анализ UI приложения значительно упростит процесс написания тестового сценария. Убедитесь, что расположение Ant, Java SDK, Android SDK добавлены в системные переменные.Для удобства я использую интрективную командную строку с Ruby: 2f1aabddbd1994e20516702f0adc656f.png

Для начала работы необходимо:

Создать директорию, где будет храниться наш проект: > mkdir calabash_habr && cd calabash_habr Сгенерировать файловую структуру Cucumber, которая включает в себя директории с описанием фич (features), описанием шагов (step definitions), support: > calabash-android gen ac195f4100bddea9643f1eb4ecfb5dc3.png Поместим apk в корень директории с проектом После этого необходимо переподписать приложение: > calabash-android resign «Clean Master_3.8.1.apk» Подключите устройство Установим тестируемое приложение на устройство: > adb install «Clean Master_3.8.1.apk» Теперь можем приступить к анализу интрерфейса приложения: Запуск интерактивной консольной среды calabash-console > calabash-android console «Clean Master_3.8.1.apk» Запускаем тестовый сервер: irb (main):001:0> start_test_server_in_background Жмем на кнопку «Меню»: irb (main):007:0> performAction ('press_menu') И получаем: { «bonusInformation» => [], «message» => », «success» => true } Меню открылось. Нам нужно зайти в «Settings», для этого сперва выясняем какой объект имеет текст «Settings»: irb (main):008:0> query (»* text:'Settings'») В результе узнаем, что объект с текстом «Settings» имеет id «menuSettings»: [ [0] { «id» => «menuSettings», «enabled» => true, «contentDescription» => nil, «class» => «android.widget.Button», «text» => «Settings», «rect» => { «center_y» => 67.0, «center_x» => 720.0, «height» => 40, «y» => 47, «width» => 160, «x» => 640 }, «description» => «android.widget.Button@4280e6f8» } ] Жмем на кнопку с id «menuSettings»: irb (main):011:0> tap ('menuSettings') После этого открылись настройки приложения 22a61502b28de52d6c9738bc789fb016.png Этого достаточно, выходим из интрерактивной консоли: irb (main):003:0> exit Теперь приступим к написанию теста. Calabash имеет достаточное количество созданных шагов, которые практично использовать при описания фичи. С действиями, который присутствуют по умолчанию ознакомтесь на сайте: github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/canned_steps.md, а если же не хватает действий по умолчанию, то присутсвует описание красивого Ruby API доступное по сайту: github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md.Открываем файл my_first.feature, который находится в директории features и пишем наш тестовый сценарий. В данном примере воспользуемся шагами, которые предлагает Calabash.

Получаем следующий незамысловатый сценарий Feature: Menu localization

Scenario: As a user I can open menu and verify options When I press the menu key Then I see «Settings» Then I see «Update» Then I see «Like us» Then I see «Rate us» Then I see «Feedback» Then I see «FAQ» Then I see «Fast Clean» Then I see «About»

Scenario: As a user I can change language app to Nedelrands When I press the menu key When I press «Settings» Then I press «Language» When I press «Nederlands» Then I see «Taal» When I go back When I press the menu key Then I see «Instellingen» Then I see «Moderniseren» Then I see «Net als wij» Then I see «Beoordeel ons» Then I see «Terugcontact» Then I see «FAQ» Then I see «Snel schoonmaken» Then I see «Over ons» Как видите, все достаточно просто. Запускаем тест:

> calabash-android run «Clean Master_3.8.1.apk» В результате прохождения сценария получаем: fc3760380c1abde3b63de9bd0989067f.png Из двух сценариев один не прошел так как один из шагов не прошел проверку. В директории проекта calabash генерирует скришот с именем screenshot_х.png.Действительно, слово «Update» не переведено на голландский 74ef558bab13496526538300686117cd.png Вывод Использование Calabash framework очень удобен для качественного приемочного тестирования приложений. Вы можете писать тестовые сценарии, которые будут работать как для Android, так и для iOS приложений без больших усилий. Также присутствует возможность развертки тестирования в облаке компании Xamarin. Фреймворк активно развивается, прост в использовании и интеграции. Со временем я собираюсь написать небольшой пост о том, как программировать свои действия с помощью Calabash Ruby API.

© Habrahabr.ru