Какие основные сценарии (кейсы) мобильных прерываний нужно тестировать?

Ответ

Тестирование прерываний проверяет, как мобильное приложение реагирует на внешние события, временно перехватывающие фокус или ресурсы. Ключевые сценарии:

  1. Входящий/исходящий звонок — приложение должно корректно приостановиться (пауза в медиа, играх) и восстановить состояние после завершения звонка.
  2. Уведомления (SMS, push, др. приложений) — проверка, что уведомление отображается корректно, не ломает UI, а его тап ведёт в нужное место.
  3. Переключение сети (Wi-Fi ↔ 4G/5G, потеря связи) — приложение должно обрабатывать изменения, возможно, показывать сообщение об ошибке или переподключаться.
  4. Разряд батареи и режим энергосбережения — проверка работы при низком заряде и при активации системного режима энергосбережения (может ограничивать фоновую активность).
  5. Переход в фоновый режим (кнопка Home, переключение приложений) — приложение должно сохранить своё состояние (данные на форме, позиция в игре) для последующего восстановления.
  6. Прерывания от системы (алерт низкой памяти, обновление ОС).

Что проверять:

  • Сохранность данных и состояния UI.
  • Корректность жизненного цикла (пауза/возобновление).
  • Отсутствие утечек памяти и крешей.

Ответ 18+ 🔞

А, слушай, вот эта вся хуйня с прерываниями — это же просто праздник какой-то! Сидит твой юзер, тыкает в приложении, и тут ему бац — звонок. И вся твоя, блядь, идеально спроектированная логика летит в пизду, если ты не предусмотрел.

Вот смотри, основные сценарии, где всё обычно накрывается медным тазом:

  1. Звонок, сука, входящий или исходящий. Представь: чел решает головоломку или видео смотрит. Раздаётся звонок — приложение должно, как штирлиц, заморозиться. Музыка/видео на паузу, игра остановилась. А после того, как он насобачился с тёщей, всё должно вернуться ровно в то же состояние. Если после звонка игра стартует заново или видео начинает с рекламы — это пиздец, чувак. Пользователь просто удалит это говно.

  2. Уведомления, ёпта. Прилетает смска или пуш. Оно должно всплыть аккуратно, не разъебав твой интерфейс в хлам. А самое главное — тап по этому уведомлению должен вести именно туда, куда обещал. Если рекламировал скидку на кроссовки, а открывается главный экран — это пидарас шерстяной поступил, а не разработчик.

  3. Сеть туда-сюда. Сидел на Wi-Fi, вышел на улицу — переключилось на 4G. Или вообще связь пропала. Приложение не должно просто взять и вылететь с крешем, как последняя мартышлюшка. Должно или переподключиться молча, или вежливо сказать: «Э, сабака сука, интернета нет!». Данные не должны потеряться. Заполнял анкету на 10 полей — всё должно сохраниться.

  4. Батарея сдохла или режим энергосбережения. Система начинает хуярить все фоновые процессы. Твоё фоновое обновление контента или синхронизация может просто сдохнуть. Надо проверить, что в этом режиме приложение не превращается в тыкву, а хотя бы сохраняет то, что было.

  5. Ушёл в фон (кнопка Home). Это, блядь, самый частый кейс! Нажал Home, через час вернулся. Всё должно быть на своих местах: несохранённый текст в поле ввода, позиция в ленте, уровень в игре. Если после этого юзер видит сплеш-скрин и заново логинится — доверия ебать ноль. Ты облажался.

  6. Системные пиздели. Алерт «памяти мало» или там обновление системы накатилось. Приложение должно это пережить, не истекая слезами и крешами.

На что смотреть, чтобы не оказаться мудаком?

  • Данные не потерялись? Это раз.
  • Жизненный цикл (onPause/onResume) не поехал? Это два.
  • Память не течёт и приложение не вылетает? Это три, и это овердохуища важно.

Короче, если это не тестировать, то в продакшене будет волнение ебать, когда начнут сыпаться багрепорты «ваше приложение — говно». А всё почему? Потому что какой-то звонок всё сломал.