Что такое регрессионное тестирование в разработке ПО?

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

Ответ

Регрессионное тестирование — это тип тестирования, цель которого — убедиться, что новые изменения в коде (исправления, новые функции, обновления) не нарушили существующий, ранее работавший функционал.

Почему это важно: Без регрессионного тестирования исправление одного бага может незаметно создать другой, что снижает общую стабильность продукта.

Когда выполняется:

  • После исправления дефектов.
  • После добавления новой функциональности.
  • При рефакторинге кода.
  • После обновления библиотек или зависимостей.
  • В рамках CI/CD-пайплайна перед слиянием кода или релизом.

Пример на Python: Допустим, у нас есть протестированная функция:

def add(a, b):
    return a + b

После рефакторинга в неё случайно вкралась ошибка:

def add(a, b):
    return a - b  # Регрессия!

Автоматизированный регрессионный тест немедленно обнаружит проблему:

assert add(2, 2) == 4  # Этот тест упадёт после изменений

Практика: Регрессионное тестирование эффективно только при высокой степени автоматизации, интегрированной в процесс разработки.