← Назад к вопросам

Приведи пример кейсов мобильного тестирования с прерываниями

1.3 Junior🔥 251 комментариев
#Soft skills и карьера#Автоматизация тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Примеры тест-кейсов для мобильного тестирования с прерываниями

Тестирование прерываний (Interruption Testing) — это критически важная часть проверки мобильных приложений, особенно в реальных условиях использования. Цель — убедиться, что приложение корректно обрабатывает внешние события, не теряет данные, сохраняет состояние и продолжает работу без критических ошибок. Вот ключевые категории и примеры конкретных тест-кейсов.

1. Прерывания системными событиями и звонками

Эта категория проверяет реакцию приложения на базовые системные вызовы и коммуникации.

  • Тест-кейс 1: Входящий звонок во время активной сессии
    *   **Предусловие:** Приложение открыто и пользователь выполняет действие (например, заполняет форму, играет, просматривает видео).
    *   **Шаги:** Симулировать входящий звонок (через эмулятор или второе устройство). Принять звонок, провести короткую беседу, завершить вызов.
    *   **Ожидаемый результат:** После завершения звонка приложение должно вернуться на тот же экран и в **то же состояние** (форма с заполненными данными, игра на паузе, видео на месте остановки). Не должно быть утечки памяти или сбоя.

  • Тест-кейс 2: Отклонение входящего звонка или SMS
    *   **Предусловие:** Приложение находится в процессе выполнения сетевого запроса (например, загрузка контента).
    *   **Шаги:** Во время загрузки отправить на устройство SMS или звонок и немедленно его отклонить.
    *   **Ожидаемый результат:** Загрузка должна либо продолжиться без помех, либо корректно восстановиться после краткого прерывания. Интерфейс не должен "заморозиться".

2. Прерывания уведомлениями (Notifications)

Тестирует, как приложение взаимодействует с собственными и сторонними уведомлениями.

  • Тест-кейс 3: Push-уведомление от самого приложения во время критической операции
    *   **Предусловие:** Пользователь совершает покупку или отправляет важное сообщение внутри приложения.
    *   **Шаги:** В момент подтверждения платежа или отправки принудительно отправить на устройство push-уведомление от этого же приложения (например, "Новое сообщение от друга!").
    *   **Ожидаемый результат:** Операция (покупка, отправка) должна завершиться успешно. Уведомление может появиться, но не должно перекрывать или блокировать интерактивные элементы подтверждения. После тапа на уведомление приложение должно открыть соответствующий контекст (чат), а предыдущая операция считаться завершенной.

  • Тест-кейс 4: Входящее уведомление от другого приложения с переходом
    *   **Предусловие:** Приложение работает в режиме воспроизведения музыки или записи аудио.
    *   **Шаги:** Получить уведомление от мессенджера, тапнуть на него — система переключит пользователя в мессенджер.
    *   **Ожидаемый результат:** После возврата в тестируемое приложение (через launcher или recent apps) воспроизведение или запись должны **продолжиться** или иметь четкий UI элемент (кнопку "Resume") для продолжения. Данные записи не должны быть потеряны.

3. Прерывания изменениями состояния устройства

Проверка устойчивости к изменениям в конфигурации и ресурсах устройства.

  • Тест-кейс 5: Резкое изменение ориентации устройства (rotation)
    *   **Предусловие:** Приложение с сложной анимацией или активным таймером (например, онлайн-игра).
    *   **Шаги:** Быстро поворачивать устройство несколько раз между portrait и landscape режимами во время анимации.
    *   **Ожидаемый результат:** Приложение должно корректно перерисовывать layout, не падать. Анимация или таймер могут быть временно остановлены, но должны продолжиться после завершения изменения ориентации. **Контекст игры** (прогресс, очки) должен быть сохранен.

  • Тест-кейс 6: Имитация разрядки батареи и отключение питания (для эмуляторов)
    *   **Предусловие:** Приложение выполняет длительную задачу (синхронизация данных в фоне).
    *   **Шаги:** На эмуляторе (например, в Android Studio) через Extended controls резко снизить уровень батареи до 0% или сменить состояние питания.
    *   **Ожидаемый результат:** Приложение должно корректно сохранить промежуточные данные синхронизации и либо завершить процесс безопасно, либо иметь механизм **восстановления** при следующем запуске после "подзарядки".

4. Прерывания переключением между приложениями (App Switching)

Один из самых частых сценариев в реальной жизни пользователя.

  • Тест-кейс 7: Многократное переключение через Recent Apps
    *   **Предусловие:** Приложение загрузило большой объем данных в память (например, открыта галерея изображений).
    *   **Шаги:** Открыть несколько других "тяжелых" приложений (камера, браузер), затем многократно переключаться между ними через меню Recent Apps.
    *   **Ожидаемый результат:** После возврата в тестируемое приложение оно должно оставаться стабильным, без утечек памяти (можно отследить через **Android Profiler** или **Xcode Instruments**). Изображения в галерее должны оставаться на своих местах, без необходимости повторной загрузки.

5. Прерывания изменениями сетевого окружения

Критически важно для приложений, зависящих от сети.

  • Тест-кейс 8: Смена сети Wi-Fi -> 3G/4G во время потоковой передачи
    *   **Предусловие:** Приложение стримит видео через стабильный Wi-Fi.
    *   **Шаги:** Во время стрима отключить Wi-Fi, чтобы устройство автоматически переключилось на мобильную сеть (имитация в эмуляторе или реальном устройстве с двумя сетями).
    *   **Ожидаемый результат:** Приложение должно либо продолжить стрим с возможным изменением качества (адаптивный битрейт), либо вывести понятное сообщение о переподключении. Не должно возникнуть "вечной" загрузки или пустого черного экрана.

Пример кода для симуляции прерываний (на эмуляторе Android)

Для автоматизации некоторых тестов, особенно на эмуляторах, можно использовать командные инструменты.

# Пример через adb для симуляции входящего звонка на эмулятор Android
adb emu gsm call 123456789

# Пример для отправки SMS
adb emu gsm send 123456789 "Test SMS message"

# Пример для изменения состояния сети (отключение Wi-Fi, включение мобильной сети)
adb shell svc wifi disable
adb shell svc data enable

# Смена ориентации через adb (для автоматизации теста 5)
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1 # landscape
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0 # portrait

Важно комбинировать эти тесты с проверкой логов приложения (Logcat) и мониторингом ресурсов для обнаружения глубиннных проблем: сбоев в работе Activity Lifecycle, утечек в ViewModel или LiveData, некорректного сохранения состояния Fragment. Тестирование прерываний — это не только функциональная проверка, но и ключевой элемент оценки пользовательского опыта (UX) и стабильности приложения.