С какими библиотеками для тестирования вы работали
Что проверяют
Есть ли за словом «тестирую» реальная практика на iOS или одно упоминание XCTest в резюме. Интервьюер слушает, какие слои вы покрываете, как делаете код тестируемым и что происходит в тестах с сетью и асинхронностью.
Как отвечать
Идите по слоям и называйте инструмент под каждый:
- XCTest: юнит-тесты в
XCTestCase, ожидания черезXCTestExpectationили async-тесты, замеры черезmeasure; - XCUITest: сквозные сценарии по экранам, поиск элементов по
accessibilityIdentifier, запуск приложения с тестовыми аргументами; - Swift Testing: макросы
@Testи#expect, параметризованные наборы аргументов; - Quick и Nimble: спецификации в стиле BDD и выразительные сопоставители, если так принято в команде;
- SnapshotTesting: сравнение отрендеренного экрана с эталонной картинкой;
- сеть: подмена ответов своим
URLProtocolлибо готовыми заглушками вроде OHHTTPStubs.
Список сам по себе слабый ответ. Сильный добавляет, за счёт чего код вообще поддаётся тестам: зависимости спрятаны за протоколы и приходят через инициализатор, а не берутся из синглтона, время и генератор случайных чисел тоже подменяемы. Скажите, что у вас крутится в CI на каждый пул-реквест: быстрые юнит-тесты на каждый коммит, прогон интерфейса по расписанию.
Где спотыкаются
Перечисляют библиотеки, но не могут показать, как подменить зависимость. Если сетевой клиент создаётся внутри вью-модели, тест пойдёт в настоящий бэкенд, и никакая библиотека это не спасёт.
Снимки записывают на одном симуляторе, а гоняют на другом. Масштаб экрана, системный шрифт, тёмная тема и локаль меняют картинку, и тест падает не из-за регрессии. Эталоны фиксируют на одной конфигурации, режим записи в ветку не уезжает.
Проверяют результат асинхронного вызова сразу после запуска. Такой тест зелёный всегда, потому что проверка выполняется до колбэка. Нужен XCTestExpectation с ожиданием либо async-тест с await.