Розробка через тестування (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 — рефакторинг покращує структуру коду без зміни його поведінки, а нова функція змінює/додає поведінку.