На каком этапе жизненного цикла разработки (SDLC) следует начинать тестирование?

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

Ответ

Тестирование должно интегрироваться в процесс разработки как можно раньше, начиная с этапа анализа требований. Это подход, известный как сдвиг тестирования влево (Shift-Left Testing).

Почему это важно:

  • Стоимость исправления дефекта экспоненциально возрастает на поздних этапах (например, на этапе поддержки он может быть в 15-100 раз выше, чем на этапе проектирования).
  • Раннее выявление противоречий и неясностей в требованиях.
  • Влияние на тестируемость архитектуры на этапе проектирования.

Практический пример участия QA: На этапе проектирования API тестировщик может предложить добавить валидацию входных данных.

# Пример функции с валидацией, предложенной на этапе проектирования
def apply_discount(base_price: float, discount_percent: float) -> float:
    """Применяет скидку к цене."""
    if not 0 <= discount_percent <= 100:
        raise ValueError("Скидка должна быть в диапазоне от 0 до 100%.")
    if base_price < 0:
        raise ValueError("Базовая цена не может быть отрицательной.")
    return base_price * (1 - discount_percent / 100)

Таким образом, тестирование становится не отдельной фазой, а непрерывной деятельностью на протяжении всего SDLC.