Что общего у функционального тестирования и тестирования, связанного с изменениями?

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

Ответ

Оба вида тестирования проверяют корректность работы функциональности программного обеспечения, но с разными акцентами в рамках жизненного цикла изменений.

Общая цель: Убедиться, что система ведёт себя ожидаемо и соответствует требованиям.

Связь и отличия:

Вид тестирования Фокус Контекст Пример проверки
Функциональное Проверка нового или существующего функционала на соответствие требованиям (спецификациям, user stories). Может выполняться на новой функции или на старой (приёмочное тестирование). «Новая кнопка «Экспорт в PDF» корректно генерирует документ из текущих данных таблицы».
Связанное с изменениями (Регрессионное, Дымовое, Санитарное) Проверка, что после внесения изменений (новый код, фикс) не сломался существующий, критически важный функционал. Всегда выполняется после изменений в коде или окружении. «После добавления кнопки «Экспорт в PDF» по-прежнему работает кнопка «Экспорт в Excel» и сохранение формы».

Практический пример (в коде): Допустим, в форму входа добавили функцию «Запомнить меня».

# 1. Функциональный тест для НОВОЙ функции
def test_new_remember_me_functionality():
    login(remember_me=True)
    assert session.is_persistent() == True  # Проверяем новое требование

# 2. Регрессионный тест (связанный с изменениями) для СТАРОГО функционала
def test_regression_login_basic():
    # Проверяем, что базовая логика входа не сломалась
    result = login(username="valid_user", password="valid_pass")
    assert result.success == True
    assert result.redirect == "/dashboard"
    # Проверяем, что не появился побочный эффект
    assert not has_unexpected_cookie("test_cookie")

Вывод: Функциональное тестирование отвечает на вопрос «Работает ли функция как задумано?», а тестирование, связанное с изменениями, — «Не сломали ли мы что-то работавшее, добавляя эту функцию?». Они взаимодополняют друг друга в процессе контроля качества.