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 не удобный для создания тестов, но более гибкий
- благодаря интеграции в проект приложения, сами разработчики будут иметь возможность легко запускать эти тесты.
Интересные и полезные статьи:
- сравнение UI Automation и UI Testing: //www.bricepollock.com/difference-xcode-ui-testing-ui-automation-instrument/
- новые возможности UI Testing: //masilotti.com/ui-testing-xcode-7/
- автор предыдущей скомпилировал документацию по классам, собранную из комментариев в заголовочных файлах, чего Apple почему-то еще не сделала (на момент нашего исследования): //masilotti.com/xctest-documentation/index.html
- его же статья с примером написания тестов: //masilotti.com/ui-testing-cheat-sheet/
Выводы, сделанные нами для наших проектов.
UIT технология еще новая, не доделанная, есть баги. Но с хорошим потенциалом. Наш, ранее разработанный фреймворк перенести не удастся. Вариант только один – вручную переписывать на новом языке, учитывая особенности и различия UIA и UIT. На данный момент имеющиеся UIA тесты показывают себя более производительными (и более надежными из-за сырости UIT).
К тому же ввиду того, что мы поддерживаем iOS7+, ограничение в UIT поддержки iOS9+ является блокирующим для нас. Сейчас решили не переходить на UIT.