Приведи пример кейсов мобильного тестирования с прерываниями
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Примеры тест-кейсов для мобильного тестирования с прерываниями
Тестирование прерываний (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) и стабильности приложения.