Что такое тестирование на отказ и восстановление (Failover and Recovery Testing)?

«Что такое тестирование на отказ и восстановление (Failover and Recovery Testing)?» — вопрос из категории Тестирование производительности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование на отказ и восстановление — это вид нефункционального тестирования, который проверяет, как система обрабатывает сбои аппаратного или программного обеспечения и восстанавливает свою работоспособность и данные после устранения неисправности.

Что именно проверяется:

  • Отказоустойчивость (Failover): Способность системы автоматически переключаться на резервный компонент (сервер, базу данных, сетевой канал) при отказе основного.
  • Восстановление (Recovery): Корректное возвращение к нормальной работе после устранения причины сбоя, включая целостность данных и транзакций.

Типичные сценарии для тестирования:

  • Аварийное отключение сервера приложения или базы данных.
  • Обрыв сетевого соединения.
  • Заполнение дискового пространства.
  • Сбой процесса или службы.

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

try:
    data = query_primary_database()
except DatabaseConnectionError:
    # 1. Зафиксировать сбой в логах и метриках
    log_critical("Primary DB failed. Initiating failover.")
    # 2. Автоматически переключиться на резервную реплику
    data = query_backup_database()
    # 3. (Опционально) Уведомить администратора
    send_alert_to_ops_team()

Критерии успеха: Минимальное время простоя, отсутствие потери данных, корректные логи для анализа инцидента. Критично для высоконагруженных и отказоустойчивых систем (финансы, телеком).