Каков алгоритм первоначальной диагностики, если тестируемый сервер перестал отвечать?

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

Ответ

Диагностика выполняется по принципу "от простого к сложному", начиная с локальных проверок.

1. Проверка доступности сети и сервера:

  • Пинг (ICMP): Проверяет базовую сетевую доступность узла.
    ping example.com

    Результат: Request timed out или высокий time указывает на сетевые проблемы или блокировку ICMP.

  • Порт и протокол: Пинг не гарантирует работу HTTP. Проверяем конкретный порт (например, 80/443) с помощью telnet или curl.
    curl -I --connect-timeout 10 https://example.com

    Результат: Отсутствие ответа, таймаут или HTTP-код 5xx (502, 503, 504).

2. Анализ состояния сервера и приложения:

  • HTTP-коды ответа:
    • 502 Bad Gateway: Проблема upstream-сервера (например, упал бэкенд).
    • 503 Service Unavailable: Сервис временно недоступен (техработы, перегрузка).
    • 504 Gateway Timeout: Таймаут ожидания ответа от upstream-сервера.
  • Мониторинг: Если есть доступ (например, Grafana), проверяю метрики: загрузку CPU, память, дисковое пространство.
  • Логи приложения/веб-сервера: Ищу критические ошибки (error.log Nginx/Apache, логи приложения).

3. Проверка зависимостей:

  • Доступность баз данных, кэшей (Redis), очередей сообщений (RabbitMQ).

4. Действия в рамках процесса тестирования:

  • Локальная проблема: Если ошибка только на моей машине, проверяю VPN, прокси, файл hosts.
  • Проблема на стороне стенда: Уведомляю ответственных (DevOps, разработчиков) через чат команды или тикет-систему, прикладывая результаты проверок.
  • Для автотестов: Реализую стратегию повторных попыток (retry) для нестабильных операций или помечаю тест как @pytest.mark.flaky для последующего анализа.