Что такое тестирование критического пути?

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

Ответ

Тестирование критического пути (Critical Path Testing) — это техника тест-дизайна, фокусирующаяся на проверке наиболее важного, сквозного сценария использования приложения, который реализует его основную бизнес-ценность. Это минимальная последовательность шагов, необходимая для выполнения ключевой задачи пользователя.

Зачем это нужно?

  • Приоритизация: Обеспечивает работоспособность самого важного функционала в первую очередь.
  • Раннее обнаружение блокирующих дефектов: Позволяет быстро выявить ошибки, которые делают продукт непригодным для использования.
  • Основа для смоук-тестов: Часто критический путь составляет ядро набора смоук-тестов.

Пример для интернет-магазина:

  1. Открытие главной страницы.
  2. Поиск товара через строку поиска.
  3. Добавление товара в корзину.
  4. Переход в корзину и начало оформления заказа.
  5. Заполнение данных доставки и выбор способа оплаты.
  6. Подтверждение и завершение заказа.

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

# Псевдокод/структура теста критического пути для магазина
def test_e2e_critical_path():
    # 1. Инициализация (открытие сайта)
    driver.get(HOMEPAGE_URL)
    assert is_page_loaded("Homepage")

    # 2. Поиск товара
    search_box = driver.find_element(By.ID, "search")
    search_box.send_keys("iPhone 15" + Keys.RETURN)
    assert "Результаты поиска" in driver.page_source

    # 3. Добавление первого товара в корзину
    first_product = driver.find_element(By.CSS_SELECTOR, ".product-list .item:first-child")
    first_product.find_element(By.CLASS_NAME, "add-to-cart-btn").click()
    assert "Товар добавлен" in get_toast_message()

    # 4. Оформление заказа...
    go_to_cart()
    proceed_to_checkout()
    fill_shipping_details(TEST_USER_DATA)
    select_payment_method("card")
    place_order()

    # 5. Верификация успеха
    assert "Заказ подтвержден" in driver.title
    order_id = get_order_confirmation_number()
    assert order_id is not None