Розробка через тестування (TDD)

Розділ: Інженерія систем і програмного забезпечення

📌 Про що ця тема

Розробка через тестування (TDD, Test-Driven Development) — це підхід до створення програм, у якому тести пишуть ПЕРЕД кодом. На іспиті перевіряють, чи розумієш ти послідовність дій у TDD, навіщо вона потрібна і чим відрізняється тест від звичайної перевірки програми. Ключове поняття — цикл «червоний — зелений — рефакторинг».


📖 Головне

• TDD — спосіб розробки, де спочатку створюють тест для майбутньої функції, а вже потім пишуть код, що цей тест проходить.

• Тест — це окрема невелика програма (або функція), яка автоматично перевіряє, чи дає код очікуваний результат на заданих вхідних даних.

• Цикл TDD складається з трьох кроків: Red → Green → Refactor (Червоний → Зелений → Рефакторинг).

• Red (червоний): пишемо тест на ще не існуючу функцію. Він НЕ проходить — це нормально й очікувано.

• Green (зелений): пишемо найпростіший код, який робить тест успішним. Краса коду тут не головне.

• Refactor (рефакторинг): покращуємо код (прибираємо дублювання, спрощуємо), не змінюючи його поведінки; тести мусять лишатися зеленими.

• Цикл повторюють для кожної нової маленької можливості програми.

• Переваги: менше помилок, код завжди покритий тестами, легше вносити зміни, тести є водночас документацією поведінки.

• Юніт-тест (модульний тест) перевіряє одну маленьку одиницю коду — окрему функцію чи метод.

• Відмінність від звичайного тестування: у TDD тест з’являється ДО коду і керує розробкою, а не перевіряє вже готовий продукт наприкінці.


🔢 Як це працює на прикладі

Завдання: написати функцію sum(a, b), що додає два числа.

Крок 1 (Red): пишемо тест — «sum(2, 3) має дорівнювати 5». Функції ще немає → тест падає (червоний).

Крок 2 (Green): пишемо найпростіший код: функція повертає a + b. Запускаємо тест → проходить (зелений).

Крок 3 (Refactor): дивимось, чи можна покращити код. Він уже простий — лишаємо. Тест досі зелений.

Далі додаємо новий тест, напр. «sum(-1, 1) = 0», і повторюємо цикл. Так крок за кроком нарощуємо функціональність, і кожна дрібниця одразу під контролем тесту.


⚠️ Типові помилки

• Плутають порядок: думають, що в TDD код пишуть перший, а тести потім. Насправді навпаки — спершу тест.

• Вважають «червоний» етап помилкою. Насправді провал першого тесту — обов’язковий і правильний крок.

• Плутають рефакторинг зі зміною поведінки: рефакторинг лише покращує структуру коду, результат роботи лишається тим самим.

• Думають, що тест = ручна перевірка людиною. У TDD тести автоматичні й запускаються знову й знову.

• На кроці Green намагаються одразу написати «ідеальний» код — за TDD спочатку потрібен найпростіший робочий варіант.


🎯 Що завчити напам’ять

• Абревіатура TDD = Test-Driven Development = розробка через тестування.

• Цикл: Red → Green → Refactor (Червоний → Зелений → Рефакторинг).

• Головний принцип: спочатку тест, потім код.

• Юніт-тест перевіряє одну одиницю коду (функцію/метод).


🧠 Перевір себе

1. Що пишуть першим у TDD — код чи тест?

2. Назви три етапи циклу TDD по порядку.

3. Що означає «червоний» етап і чи є це помилкою?

4. Чим рефакторинг відрізняється від додавання нової функції?


Відповіді: 1 — тест (перед кодом); 2 — Red (червоний) → Green (зелений) → Refactor (рефакторинг); 3 — тест на ще не написану функцію не проходить, це очікуваний і правильний крок, а не помилка; 4 — рефакторинг покращує структуру коду без зміни його поведінки, а нова функція змінює/додає поведінку.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.