Ответ
Re-test (повторное тестирование) — проверка исправленного дефекта для подтверждения его устранения. Regression Testing (регрессионное тестирование) — проверка того, что изменения не нарушили существующий функционал.
Сравнение:
| Критерий | Re-test | Regression Testing |
|---|---|---|
| Цель | Подтвердить фикс конкретного бага | Обнаружить новые баги в старом функционале |
| Объем | Узкий (только исправленный кейс) | Широкий (затронутые и смежные области) |
| Тест-кейсы | Те же, что выявили баг | Набор существующих тестов (регрессионная пачка) |
| Автоматизация | Часто ручное | Высокий приоритет автоматизации |
| Когда выполнять | Сразу после фикса бага | После любых изменений (фиксы, новая функциональность) |
Пример на Python с pytest:
# Исходная функция с багом
def calculate_discount(price, discount_percent):
# БАГ: не проверяет отрицательную скидку
return price * (1 - discount_percent / 100)
# Re-test после фикса
def test_fixed_discount_calculation():
"""Re-test: проверяем исправленный баг с отрицательной скидкой"""
# Фикс: добавили валидацию
def fixed_calculate_discount(price, discount_percent):
if discount_percent < 0:
raise ValueError("Discount cannot be negative")
return price * (1 - discount_percent / 100)
with pytest.raises(ValueError):
fixed_calculate_discount(100, -10) # Теперь должно вызывать ошибку
# Regression test suite
def test_regression_after_discount_fix():
"""Regression: проверяем, не сломал ли фикс другой функционал"""
# 1. Проверяем корректные скидки
assert fixed_calculate_discount(100, 20) == 80.0
# 2. Проверяем связанный функционал — итоговая цена в корзине
cart_total = fixed_calculate_discount(200, 15) + 50 # + доставка
assert cart_total == 220.0
# 3. Проверяем edge cases
assert fixed_calculate_discount(100, 0) == 100.0
assert fixed_calculate_discount(100, 100) == 0.0
Практика: Re-test обычно выполняет разработчик или тестировщик, обнаруживший баг. Regression testing часто автоматизирован и запускается в CI/CD.