Каков порядок действий при падении теста?

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

Ответ

Стандартная процедура анализа падения теста:

  1. Исключить ложное срабатывание:
    • Проверить актуальность тестовых данных.
    • Убедиться в стабильности тестового окружения (доступность сервисов, сети).
    • Запустить тест повторно для выявления флаки-поведения.
  2. Локализовать проблему:
    • Воспроизвести шаги вручную.
    • Изучить логи приложения и сервера.
    • Проанализировать скриншоты (для UI-тестов).
  3. Классифицировать и обработать результат:
    • Найден дефект: Создать четкий баг-репорт.
    • Флаки-тест: Добавить стабилизацию (retry, явные ожидания) или переписать нестабильную часть.
    • Устаревший тест: Актуализировать тест согласно текущим требованиям.

Пример обработки падения в UI-автотесте (Python + pytest):

import pytest
import logging
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def test_login(driver, logger):
    """Тест входа в систему."""
    try:
        # Явное ожидание для стабильности
        login_form = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, "login-form"))
        )
        assert login_form.is_displayed(), "Форма логина не отобразилась"
    except (TimeoutException, AssertionError) as e:
        # Логирование и сохранение артефакта для анализа
        driver.save_screenshot("test_login_failure.png")
        logger.error(f"Тест упал: {e}")
        raise  # Помечаем тест как упавший