> Что нового в последних версиях Android и iOS с точки зрения тестирования? (iOS, Swift, Android)
Уровень: senior · Роль: qa · Категория: Технические вопросы
Компании: Т-Банк
Стек: iOS, Swift, Android
> Пример ответа
Короткий ответ
В последних версиях Android и iOS появились значимые изменения для тестирования: Android 14+ усилил ограничения на background activity launches и добавил predictive back gesture, что требует обновления тестов. iOS 17+ ввёл новые возможности XCUITest, включая улучшенную работу с Dynamic Island и более строгие требования к permissions. Ключевой тренд - усиление приватности, что ломает старые подходы к тестированию push-уведомлений и доступа к фото/локации. Также обе платформы активно развивают инструменты для UI-тестирования на базе Compose (Android) и SwiftUI (iOS).
Подробное объяснение
Android 14/15:
- Запрет на запуск activity в фоне из-за ограничений на
startActivity()из background - тесты, которые полагались на это, требуют переработки. - Predictive back gesture (Android 14+) - системный back теперь генерирует
OnBackPressedCallbackи требует проверки анимаций и переходов. - Ужесточение разрешений: частичный доступ к фото и видео (Android 14) - тесты должны учитывать выбор конкретных медиафайлов.
- Compose UI testing - стабильный API для тестирования Compose-интерфейсов, включая
ComposeTestRuleи семантические деревья.
iOS 17/18:
- XCUITest: улучшенная поддержка SwiftUI -
XCUIElementтеперь корректно работает с новыми типами (например,scrollViewсcontentUnavailableView). - Dynamic Island и Live Activities - требуют новых проверок в UI-тестах (например, ожидание появления элемента в
XCUIApplication().otherElements). - Ужесточение privacy: системные диалоги разрешений теперь нельзя автоматически обойти без предварительной настройки
XCUIApplication().resetAuthorizationStatus(for:). - Xcode 15+ поддерживает параллельное выполнение UI-тестов на симуляторах с разными локалями.
Общие тренды:
- Переход от монолитных тестов к модульным с использованием
TestPlan(Xcode) иGradle Managed Devices(Android). - Усиление роли эмуляторов/симуляторов: поддержка ARM-архитектуры и ускорение запуска.
- Рост значимости тестирования accessibility - обе платформы добавили новые API для проверки VoiceOver/TalkBack.
На практике
- Для Android: обновите тесты, которые используют
ActivityScenario- теперь нужно явно управлять жизненным циклом с учётом ограничений на background. - Для iOS: используйте
XCUIApplication().launchArgumentsдля настройки состояния permissions до запуска теста, чтобы избежать системных диалогов. - Настройте CI: для Android -
Gradle Managed Devicesс профилями API 34+, для iOS -xcodebuild test-without-buildingс параллельными симуляторами. - Проверяйте совместимость: старые тесты, написанные для Android 12 и iOS 15, могут падать из-за изменений в жестах и permissions.
Пример кода
Android (Compose UI test с учётом predictive back):
@Test fun testBackGesture() { composeTestRule.setContent { MyApp() } composeTestRule.onNodeWithTag("detail_screen").assertIsDisplayed() // Имитация системного back gesture composeTestRule.activityRule.scenario.onActivity { activity -> activity.onBackPressedDispatcher.onBackPressed() } composeTestRule.onNodeWithTag("main_screen").assertIsDisplayed() }
iOS (XCUITest с permissions):
SWIFTfunc testLocationPermission() {let app = XCUIApplication()app.launchArguments += ["-AppleLanguages", "(ru)"]app.resetAuthorizationStatus(for: .location)app.launch()let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")let allowButton = springboard.buttons["Разрешить"]if allowButton.waitForExistence(timeout: 5) {allowButton.tap()}XCTAssertTrue(app.staticTexts["location_ready"].exists)}
Как отвечать на собеседовании
- Начните с конкретных версий ОС и их номеров - это покажет актуальность знаний.
- Свяжите изменения с практическими проблемами: например, "в Android 14 мы столкнулись с тем, что тесты на push-уведомления стали требовать явного разрешения на фоновую активность".
- Упомяните инструменты, которыми пользуетесь:
adb,xcrun simctl,Gradle Managed Devices,XCTestPlan. - Покажите понимание trade-off: например, ужесточение приватности усложняет тесты, но повышает безопасность пользователей.
- Если спросят про конкретную фичу - предложите написать тест-кейс или фрагмент кода.
Что проверяет интервьюер
- Актуальность знаний: знаете ли вы реальные изменения в Android 14/15 и iOS 17/18.
- Практический опыт: умеете ли вы адаптировать существующие тесты под новые ограничения.
- Понимание архитектуры тестов: как вы организуете тесты с учётом permissions, lifecycle и жестов.
- Способность к анализу: видите ли вы влияние изменений на стратегию тестирования в целом.
Типичные ошибки
- Перечисление всех фич ОС без привязки к тестированию - интервьюер ждёт конкретики.
- Игнорирование обратной совместимости: "мы тестируем только на последней версии" - плохой ответ.
- Утверждение, что изменения не влияют на тесты - это показывает отсутствие практики.
- Путаница между Android и iOS: например, приписывание
resetAuthorizationStatusAndroid. - Отсутствие примеров кода или тест-кейсов - ответ должен быть доказательным.
> Похожие задачи по qa
Почему iOS более закрытая система, а Android более открытая по доступности приложений
В чем разница универсальных и обычных диплинков и почему универсальные работают на iOS и Android
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью