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

Ответ

Тестирование критического пути (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

Ответ 18+ 🔞

Вот, представляешь, есть такая штука — тестирование критического пути. Это когда ты, как пользователь, делаешь самое главное, зачем этот сервис вообще создали. Не какие-то там настройки профиля или смена темы, а прям вот основную фишку, ради которой народ сюда и приходит. Если этот путь не работает — всё, пиздец, продукт — говно, можно выкидывать нахуй.

А нахуя это вообще надо, спросишь?

  • Чтобы не распыляться, как идиот. Сначала проверяешь, что главное работает. Остальное — потом, если время будет.
  • Чтобы сразу ловить пиздец. Найдёшь баг, который всё ломает, — уже не зря день прожил. Продукт хотя бы не полностью мёртвый.
  • Это основа для всех этих смоук-тестов, которые бегают по пять минут и говорят: «Да, вроде живой ещё, можно дальше ковырять».

Допустим, у нас магазин интернетный. Критический путь — это вот что:

  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 # Если номера нет — значит, где-то по пути нас наебали

Вот и вся магия. Сделал этот тест — и уже спокоен, что ядро системы не развалилось. А дальше уже можно и про дизайн кнопок подумать, ёпта.