Чем отличается тестирование по критическому пути (Critical Path) от регрессионного тестирования?

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

Ответ

Это два взаимосвязанных, но разных по цели вида тестирования.

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

    • Примеры: Вход в систему, создание заказа в интернет-магазине, отправка сообщения в мессенджере.
  • Регрессионное тестирование (Regression Testing): Это повторное выполнение тестов после любых изменений в коде (новый функционал, исправление багов, рефакторинг). Цель — убедиться, что существующий функционал не сломан (не возник регресс). Охватывает как критический путь, так и другие области.

Сравнительная таблица: Аспект Critical Path Testing Регрессионное тестирование
Цель Проверить работоспособность ядра системы. Убедиться, что изменения не сломали существующий функционал.
Объем Узкий, только ключевые сценарии. Широкий, включает Critical Path и другие тесты.
Когда выполняется При каждом запуске тестовой сборки (smoke-тесты). После каждого значимого изменения кода.
Зависимость Является подмножеством регрессионных тестов. Включает в себя тестирование критического пути.

Пример на Python:

# Critical Path Test: проверяет только самый главный сценарий
def test_critical_login():
    assert login("valid_user", "correct_password") == True

# Regression Test Suite: проверяет логин и связанный с ним функционал после изменений
def test_regression_after_auth_update():
    # 1. Критический путь
    assert login("valid_user", "correct_password") == True
    # 2. Связанные функции (могли сломаться из-за изменений в auth-модуле)
    assert password_reset("valid_user") == True
    assert logout() == True
    # 3. Проверка на старые, известные баги (регрессия)
    assert login("", "") == False  # Пустые credentials

Ключевое отличие: Critical Path — это стратегия выбора тестов (что тестировать в первую очередь), а Regression — это стратегия выполнения тестов (когда и зачем их запускать снова).