Какие существуют типовые кейсы для тестирования прерываний в мобильных приложениях?

«Какие существуют типовые кейсы для тестирования прерываний в мобильных приложениях?» — вопрос из категории Мобильное тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

1. Прерывание по таймауту Проверка обработки долгих операций. Например, функция с бесконечным циклом должна быть прервана по истечении заданного времени.

import signal

def timeout_handler(signum, frame):
    raise TimeoutError("Operation timed out")

signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(5)  # Прервать через 5 секунд
try:
    long_running_task()
except TimeoutError:
    print("Task correctly interrupted")

2. Прерывание внешним событием Например, нажатие кнопки "Отмена" или системного уведомления во время загрузки.

// Эмуляция клика по кнопке "Stop" во время операции
const stopButton = document.getElementById('stopButton');
simulateClick(stopButton);
// Ожидаем остановки загрузки и корректного состояния UI

3. Прерывание из-за ошибки Проверка обработки исключительных ситуаций (например, деление на ноль).

@Test
public void testDivisionByZeroInterruption() {
    Calculator calc = new Calculator();
    assertThrows(ArithmeticException.class, () -> calc.divide(10, 0));
}

4. Прерывание по потере соединения Отключение сети во время передачи данных. Приложение должно корректно завершить сессию, сохранить состояние или уведомить пользователя.

5. Пользовательское прерывание (Ctrl+C) Для консольных приложений или фоновых процессов.

# Запуск и принудительная остановка
python long_script.py &
kill -SIGINT $!  # Отправка сигнала прерывания
# Проверка корректного завершения (очистка ресурсов)

Почему это важно: Неправильная обработка прерываний может привести к утечкам памяти, повреждению данных или "зависанию" приложения.