В чем заключается методология разработки через тестирование (TDD)

Ответ

TDD (Test-Driven Development) — это методология разработки, при которой цикл написания кода строится вокруг тестов. Вместо того чтобы сначала писать код, а потом тесты, разработчик следует короткому итеративному циклу «Красный – Зеленый – Рефакторинг».

Основной цикл TDD:

  1. Красный (Red): Написать заведомо провальный автоматизированный тест для новой, еще не реализованной функциональности. Тест не должен проходить, потому что код еще не написан.
  2. Зеленый (Green): Написать минимально необходимый код, чтобы тест прошел. На этом этапе главная цель — заставить тест работать, даже если код не идеален.
  3. Рефакторинг (Refactor): Улучшить написанный код (удалить дублирование, повысить читаемость, оптимизировать), убеждаясь, что все тесты по-прежнему проходят. Это гарантирует, что изменения не сломали существующую функциональность.

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

Пример на Python с использованием pytest

Предположим, мы создаем простую функцию-калькулятор.

Шаг 1: Красный (пишем тест)

Создаем файл test_calculator.py:

# test_calculator.py
from calculator import add

def test_add_positive_numbers():
    assert add(2, 3) == 5

# Запуск `pytest` сейчас вызовет ошибку, так как `calculator.py` и функция `add` не существуют.

Шаг 2: Зеленый (пишем минимальный код)

Создаем файл calculator.py и реализуем функцию:

# calculator.py
def add(a, b):
    return a + b

# Теперь запуск `pytest` покажет, что тест успешно пройден.

Шаг 3: Рефакторинг

В данном простом случае код уже оптимален. Но если бы реализация была сложнее, на этом этапе мы бы улучшали ее, например, добавляя обработку ошибок или оптимизируя алгоритм, при этом сохраняя прохождение теста.