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

Приведи примеры кейсов прерывания

1.0 Junior🔥 142 комментариев
#Мобильное тестирование#Теория тестирования

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

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

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

Примеры кейсов прерывания (Interruption Test Cases) в тестировании программного обеспечения

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

Ниже приведены категории и конкретные примеры кейсов для различных типов приложений.

1. Прерывания, связанные с оборудованием и ОС (для мобильных и десктоп-приложений)

Мобильные приложения:

  • Входящий/исходящий звонок: Проверка поведения приложения во время совершения или получения звонка.
    *   **Кейс:** Пользователь заполняет длинную форму в приложении. В это время поступает входящий звонок. После разговора приложение должно либо:
        *   Сохранить заполненные данные в форме и отобразить их после возврата.
        *   Предупредить о возможной потере данных перед переходом на звонок.
  • Уведомления (SMS, Push, других приложений): Появление уведомления поверх активного приложения.
    *   **Кейс:** Во время онлайн-видеоконференции приходит важное SMS. Тап по уведомлению открывает мессенджер. После возврата в приложение конференция должна продолжиться без разрыва соединения, либо должно быть предложено переподключиться.
  • Изменение ориентации устройства: Поворот экрана.
    *   **Кейс:** Пользователь просматривает ленту новостей в социальной сети. Поворот устройства с портретной на альбомную ориентацию (и обратно) не должен приводить к сбросу позиции прокрутки, потере введенного текста в поле комментария или крашу.
  • Потеря/восстановление подключения к сети: Самый частый и важный кейс.
    *   **Кейс:** Приложение загружает большой файл (например, обновление). В середине процесса Wi-Fi отключается.
    ```gherkin
    Feature: Устойчивость к потере сети при загрузке
      Scenario: Загрузка файла прерывается потерей соединения
        Given Пользователь начал загрузку файла размером 100 МБ
        When Соединение с интернетом пропадает на 30 секунд
        Then Приложение отображает сообщение "Соединение потеряно"
        And Загрузка приостанавливается (таймер останавливается)
        When Соединение восстанавливается
        Then Приложение автоматически возобновляет загрузку с точки останова (если поддерживается докачка)
        Or Запрос на повторную загрузку отображается пользователю
    ```
  • Разрядка батареи / переход в режим энергосбережения.
  • Подключение/отключение периферии (наушники, зарядное устройство, внешний дисплей).

Десктоп-приложения:

  • Переход ПК в спящий режим/гибернацию и выход из него.
  • Отключение/переподключение к сети.
  • Внезапное извлечение USB-носителя, если приложение с ним работает.
  • Срабатывание системного брандмауэра/антивируса, блокирующего доступ приложения к сети или файлам.

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

  • Запуск другого ресурсоемкого приложения, вызывающего нехватку памяти (Out of Memory).
    *   **Кейс:** Графический редактор обрабатывает тяжелое изображение. Пользователь запускает видеоигру. Система выгружает фоновые процессы. Приложение редактора должно либо сохранить временный файл и корректно завершиться, либо, при возврате к нему, восстановить сессию.
  • Всплывающие системные диалоги (обновление ОС, запрос разрешений UAC в Windows).
  • Переключение на другое приложение (Alt+Tab / App Switcher) и возврат.
  • Блокировка устройства (экран блокировки на мобильном или ПК).

3. Прерывания в веб-приложениях

  • Потеря и восстановление сетевого соединения во время AJAX-запроса или работы с WebSocket.
  • Закрытие/обновление вкладки браузера (event beforeunload).
    *   **Кейс:** Пользователь редактирует документ в веб-интерфейсе и случайно закрывает вкладку. Браузер должен показать стандартное предупреждение "Вы уверены, что хотите уйти?" или приложение должно автоматически сохранить черновик.
    ```javascript
    // Пример кода, который может быть протестирован
    window.addEventListener('beforeunload', function (event) {
        if (formDataHasUnsavedChanges()) {
            event.preventDefault();
            event.returnValue = 'У вас есть несохраненные изменения. Вы уверены, что хотите уйти?';
        }
    });
    ```
  • Нажатие кнопок "Назад"/"Вперед" в браузере во время выполнения операции.
  • Истечение срока жизни сессии (Session Timeout) во время активной работы пользователя.
    *   **Кейс:** Пользователь готовится отправить форму, но сессия истекает из-за бездействия. После отправки система должна перенаправить на страницу логина, а после аутентификации — восстановить контекст (например, вернуть к заполненной форме).

4. Прерывания, специфичные для бизнес-логики

  • Изменение данных извне во время их редактирования (конфликт изменений).
    *   **Кейс (система бронирования):** Агент A и агент B одновременно смотрят один и тот же номер в отеле. Агент A начинает процесс бронирования. В это время агент B (через API или другой интерфейс) помечает этот номер как "недоступный". Система агента A должна получить актуальный статус и уведомить его, что бронирование невозможно, до завершения транзакции.
  • Отзыв/изменение прав доступа пользователя в реальном времени.
  • Внеплановое обслуживание или перезагрузка серверной части (бэкенда) во время активности на клиенте.

Общий шаблон тест-кейса на прерывание

  1. Предусловие: Приложение находится в определенном, часто "небезопасном", состоянии (процесс выполнения, ввод данных, загрузка).
  2. Действие: Имитация события-прерывания (например, отключение сети, входящий звонок, системный диалог).
  3. Ожидаемый результат (Postconditions):
    *   **Безопасность:** Приложение не падает, не зависает окончательно.
    *   **Управление состоянием:** Данные либо сохранены, либо утеряны предсказуемо (с уведомлением пользователя).
    *   **Восстановление:** После устранения причины прерывания (возврат в приложение, восстановление сети) поведение приложения предсказуемо: продолжает работу, предлагает повторить или выходит в безопасное состояние.
    *   **Логирование:** Критическая ошибка или событие прерывания залогированы для последующего анализа.

Важность такого тестирования невозможно переоценить, так как в реальной жизни прерывания происходят постоянно. Устойчивое к ним приложение значительно выигрывает в надежности и пользовательском доверии.