Про то зачем и какие подходы использовать для тестирования верстки снапшотами экранов:
Зачем тестировать iOS вёрстку – Екатерина Батеева
Очень наглядный доклад про то как стоит и как не надо размечать интерфейс с использованием UIKit Accessibility:
Константин Мордань – Settings ➙ General ➙ Accessibility
UI тестов на осноове UIKit Accessibility не слишком удобный инструмент и их производительнось очень сильно зависит от количества элементов на экране.
Артем подробно рассказал какие твики надо использовать при UI тестировании приложения с использованием UIKit Accessibility:
Нативные UI тесты, которые работают – Артём Разинов
Писать коробочные тесты для приложения с большим количеством экранов черевато усложненние тестов и большим количеством стабов.
Пара докладов о том как можно разбить приложение на мини приложения по потокам экранов:
Модуляризация большого iOS приложения
Навигация в большом iOS приложении
Статья про инструментарий для тестирования отдельных UI элементов:
Snapshot testing self-sizing table view cells
Для тестирования экранов и элементов снапшотами:
iOSSnapshotTestCase (previously FBSnapshotTestCase)
Для стаббинга HTTP API сервисов:
SBTUITestTunnel
* Откровенно говоря, у меня есть вопросы к качеству библиотеки.
** Она имеет архитектурный недостаток выражающийся в том, что зарегистрировать стабы можно только после запуска приложения. Таким образом нельзя гарантированно застабать респонсы стартующие при запуске приложения. В приложении YouDo, благодаря архитектурным решениям заложенным ранее, удалось избежать этой проблемы. Но мы планируем перейти на что то типа swifter
*** Для того что бы не нарушить безопасность приложения при подключении SBTUITestTunnel к приложению важно отключить его из сборки для AppStore. При использовании CocoaPods это можно сделать следующим образом: pod 'SBTUITestTunnelServer', :configurations => ["Debug"]
.
Дополнительно можно написать скрипт для CI, проверяющий отсутсвие этого фреймворка в сборки приложения.