Без категории

Автоматизация тестирования iOS приложений: наше маленькое исследование UI Tesing из Xcode 7

2015й год.

Менеджерам и тестировщикам iOS приложений, у кого в команде есть автоматизация, на заметку…

В XCode 7 инструмент для автоматизации тестирования UI Automaion был объявлен как устаревший. Он не удалён из набора инструментов… он просто устаревший. ?

На его замену Apple выпустила UI Testing и рассказала о нём на конференции WWDC //developer.apple.com/videos/play/wwdc2015-406/.

Чтобы понять возможности, пользу и опасность для нас UI Testing мой автоматизатор, Женя А., провел самостоятельное исследование, и познакомился с тем, что пишут в своих блогах автоматизаторы.

Важные мысли про UI Testing:

  • работает только на iOS 9+
  • необходим доступ к коду самого проекта, в нем создается новый Target “iOS UI Testing Bundle”
  • тесты пишутся прямо в Xcode (на Objective C или Swift). Они не попадают в сам билд приложения, а собираются в отдельный бандл (проект), который устанавливается на девайс
  • запуск тестов также происходит из Xcode. Но, похоже, можно сделать запуск и из командной строки – //krausefx.com/blog/run-xcode-7-ui-tests-from-the-command-line
  • пишут, будто UI Testing быстрее, но у нас получилось наоборот: тест, который выполнялся за 20 секунд с помощью UI Automation, UI Testing выполнял за 30 секунд.
    так же, как и для UI Automation, используются Accessibility свойства для идентификации и проверки состояния элементов UI
    в целом интерфейс написания тестов выглядит дружелюбнее, родной IDE (Xcode), код компилируется, в отличие от javascript в UI Automation, т.е. ошибки синтаксиса будут сразу выявляться
  • тесты, созданные по методу Record and Play, понятнее и выглядят более надежными
  • UIT не поддерживает комплексные жесты, такие как pinch, drag или tap по указанным координатам
  • UIA не удобный для создания тестов, но более гибкий
  • благодаря интеграции в проект приложения, сами разработчики будут иметь возможность легко запускать эти тесты.

Интересные и полезные статьи:

Выводы, сделанные нами для наших проектов.

UIT технология еще новая, не доделанная, есть баги. Но с хорошим потенциалом. Наш, ранее разработанный фреймворк перенести не удастся. Вариант только один – вручную переписывать на новом языке, учитывая особенности и различия UIA и UIT. На данный момент имеющиеся UIA тесты показывают себя более производительными (и более надежными из-за сырости UIT).

К тому же ввиду того, что мы поддерживаем iOS7+, ограничение в UIT поддержки iOS9+ является блокирующим для нас. Сейчас решили не переходить на UIT.