Автоматизация тестирования iOS приложений с использованием Appium

Я Ruby on Rails-разработчик. Как и другие RoR-разработчики, я люблю автоматизированные тесты. Наибольшее предпочтение я отдаю acceptance-тестам с использованием Capybara. С момента, когда я перешел на iOS-разработку, для меня остро встал вопрос использования инструмента для легкого и удобного написания приемочных тестов, как  Apple’s UI Automation, Calabash или Appium. Последний из них оказался фреймворком для создания тестов как для iOS, так и для Android, а также гибридных приложений. Appium поддерживает множество языков, в том числе и Ruby.

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

Для начала, нам нужны 3 вещи:

  • Сервер Appium
  • Наше приложение
  • Тестовые сценарии

УСТАНОВКА APPIUM

Сущетвует 2 вида установки Appium: скачать архив с приложением и установка через npm. Первая попытка установить через npm оказалось неудачной, поэтому я решил просто скачать готовый архив. Однако мне удалось установить Appium из терминала после полной переустановки Node и после того, как я вручную очистил папку /usr/local/share/npm.

 

СБОРКА ПРОЕКТА

Ниже приведен простой скрипт для сборки приложения и перемещения его в отдельную папку для быстрого доступа.

Не забудьте поставить «Shared» в «Manage Schemes» проекта, иначе вы можете наткнуться на следующую ошибку:

 

ПИШЕМ СЦЕНАРИЙ ТЕСТА

Вот небольшой шаблон, нам необходимо его дополнить своими сценариями.

 

ПОИСК ЭЛЕМЕНТОВ

Selenium обращается с элементами приожения точно так же, как и с HTML DOM:

Угадайте, как найти элемент tableCell? Правильно:

Чтобы найти все элементы:

Найти все видимые кнопки:

Выглядит неплохо.

Для клика по кнопке с названием «Done», вы можете сделать следующее:

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

Например, iOS разработчик прописал для кнопки accessibilityIdentifier со значением «Done», тогда в тесте это будет выглядеть:

 

Дополнительная информация:

Github Wiki

Finding-and-interacting-with-elements

Примеры:

examples/ruby/u_i_catalog.rb

 

ОТЛАДКА

Я использую byebug for Ruby 2.0 для манипуляций с UI элементами.

Можно сделать вывод, что Appium очень полезен, особенно тем, что нет никакой необходимости внедрять код в тестируемое приложение.
С другой стороны, процесс подготовки к работе достаточно трудоемок. Поэтому, для быстрого старта, я подготовил простой gem: appium-rspec-bootstrap

Надеюсь, что вам он пригодится!

Перевод статьи  iOS Integration Tests With Appium

Запишитесь прямо сейчас или закажите звонок с бесплатной консультацией!

Записаться сейчас / Бесплатная консультация





Ваше имя (обязательно)

Ваш телефон (обязательно). В формате +375XXXXXXXXX