Урок по треку Основы тестирования и тест-дизайн 6 мин

Тестирование мобильных приложений за 7 минут

Прерывания, сеть, разрешения, обновления, фрагментация устройств, сторы.

Мобильное тестирование включает всё, что есть в вебе, плюс то, чего в вебе почти нет: прерывания, нестабильная сеть, разрешения, батарея, тысячи моделей устройств и медленные релизы через магазины. На собеседовании ждут именно эту специфику.

Типы приложений

  • Нативные: Swift для iOS, Kotlin для Android. Прямой доступ к API платформы.
  • Кроссплатформенные: Flutter, React Native и подобные. Один код на две платформы, но поведение на них всё равно надо проверять отдельно.
  • Гибридные: веб-страницы внутри WebView.
  • PWA: сайт, который ставится на экран и работает офлайн, с ограничениями API, особенно на iOS.

Прерывания

Пользователя постоянно прерывают. Проверяй посреди важного сценария (оплата, заполнение формы, загрузка):

  • входящий звонок, SMS, уведомление;
  • сворачивание и возврат;
  • блокировка экрана;
  • низкий заряд и режим энергосбережения;
  • подключение наушников, смена ориентации.

Ожидание: данные не теряются, действия не задваиваются, экран корректно восстанавливается.

На Android полезна опция разработчика «Не сохранять действия» (Don't keep activities): экран уничтожается сразу при уходе, и так воспроизводится ситуация, когда система выгрузила приложение из памяти.

Сеть

  • Медленная сеть, потеря пакетов, офлайн.
  • Переход с Wi-Fi на мобильную сеть посреди запроса.
  • Авиарежим и возврат из него.

Главный вопрос: что будет с запросом, который ушёл, но ответ не пришёл? Для платежа повтор не должен создать второе списание, а клиент должен узнать итоговый статус у сервера.

Разрешения

Камера, геолокация, уведомления, фото, микрофон. Проверь все исходы:

  • разрешено;
  • запрещено;
  • «разрешить только сейчас» или «только во время использования»;
  • отозвано в настройках во время работы приложения.

На iOS системный запрос показывается один раз. После отказа приложение может только объяснить, зачем нужен доступ, и отправить в настройки.

Установка и обновление

  • Чистая установка.
  • Обновление поверх предыдущей версии: данные, авторизация и настройки сохраняются, миграция локальной базы проходит. Большинство пользователей обновляется, а не ставит заново.
  • Обновление через несколько версий.
  • Удаление и повторная установка.

Устройства

Эмуляторы и симуляторы удобны для быстрых проверок и CI, но не воспроизводят реальную производительность, нагрев, камеру, датчики, сотовую сеть и оболочки производителей. Набор реальных устройств выбирают по аналитике: популярные модели, самая старая поддерживаемая версия ОС, маленький экран, слабое железо, производители с агрессивным энергосбережением. Для широты используют облачные фермы.

Инструменты

  • Логи: Android adb logcat, iOS Console и Xcode. В проде креши собирают Firebase Crashlytics, AppMetrica и подобные.
  • Трафик: прокси-снифферы Charles, Proxyman, mitmproxy с установленным сертификатом. В релизной сборке может стоять закрепление сертификата, тогда перехват не сработает, и это нормально.
  • Бета-сборки: TestFlight для iOS, треки внутреннего и закрытого тестирования в Google Play Console, Firebase App Distribution.

Диплинки и уведомления

Диплинк на товар проверяют в разных состояниях: приложение закрыто, в фоне, не установлено, пользователь не вошёл, товара больше нет. Пуш-уведомления: приходят ли при закрытом приложении, куда ведёт нажатие, что если уведомления запрещены.

Почему релиз мобильного дороже

Хотфикс снова проходит ревью магазина, а пользователи обновляются когда захотят. Старые версии живут месяцами, и бэкенд должен с ними работать. Поэтому важны бета, поэтапная раскатка (1%, 10%, 50%), фича-флаги, мониторинг крешей в первые часы.

Частые ошибки

  • Тестировать только на эмуляторе и только на новом флагмане.
  • Забывать отказ в разрешении и отзыв разрешения.
  • Не проверять обновление поверх старой версии.
  • Прикладывать к багу падения только скриншот без лога.

Что спросят на собесе

  • Чем мобильное тестирование отличается от веба?
  • Как протестировать прерывания и работу с сетью?
  • Эмулятор или реальное устройство: когда что?
  • Как получить лог падения и посмотреть трафик приложения?
  • Что проверить при выпуске новой версии?

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.