Obsah

¨

TDD (Test-Driven Development)

TDD není technika testování, ale technika návrhu softwaru. Nutí vývojáře přemýšlet o zadání a rozhraní (jak se bude kód používat) dříve, než začne řešit samotnou implementaci (jak to bude fungovat uvnitř).


Cyklus Red – Green – Refactor

TDD probíhá v neustále se opakujícím krátkém cyklu tří fází, který trvá obvykle jednotky minut:

1. **RED (Červená):** Napíšete malý [[unit_testing|jednotkový test]] pro funkci, která ještě neexistuje. Spustíte testy – tento nový test musí selhat (svítit červeně). Tím ověříte, že test skutečně něco testuje a neprochází jen náhodou.
2. **GREEN (Zelená):** Napíšete nejjednodušší možný kód (klidně i "špinavý" nebo s napevno zadanou hodnotou), aby test prošel (svítil zeleně). Cílem je mít funkční kód co nejrychleji.
3. **REFACTOR (Refaktorování):** Nyní, když máte jistotu, že kód funguje (test je zelený), jej vyčistíte. Odstraníte duplicity ([[dry_princip|DRY]]), zlepšíte názvy a strukturu. Testy po každé změně znovu spustíte, aby byla jistota, že jste nic nerozbili.

Výhody TDD


Nevýhody a mýty


Srovnání: Tradiční vývoj vs. TDD

Fáze Tradiční vývoj TDD (Vývoj řízený testy)
1. Krok Návrh a psaní kódu. Psaní selhávajícího testu.
2. Krok Ruční zkoušení / Psaní testů. Psaní kódu pro splnění testu.
3. Krok Oprava chyb. Refaktorování pod dohledem testů.
Důraz Na rychlost prvního dodání. Na kvalitu a dlouhodobou udržitelnost.

Související pojmy: Unit Testing, Refaktorování, SOLID principy, DRY princip, Technický dluh.