Skratka TDD znamená “Test-Driven Development”, čo v preklade znamená „vývoj riadený testovaním“. TDD je metodológia vývoja softvéru, pri ktorej sa najskôr píšu automatizované testy, ktoré definujú požadované správanie kódu, a až potom sa píše samotný kód.
Kľúčové kroky TDD:
1.Napíš test (Write a Test):
•Pred napísaním funkcie vytvoríte test, ktorý určí požadované správanie.
•Test musí spočiatku zlyhať, pretože implementácia funkcie ešte neexistuje.
Príklad (Python, pytest):
def test_add():
assert add(2, 3) == 5
2.Napíš kód (Write Just Enough Code):
•Implementujte len toľko kódu, aby test prešiel.
Príklad:
def add(a, b):
return a + b
3.Refaktoruj (Refactor):
•Optimalizujte kód bez toho, aby ste zmenili jeho správanie, a zabezpečte, že všetky testy stále prechádzajú.
Príklad:
•Ak sa počas implementácie objavia duplikácie, odstráňte ich.
Cyklický proces TDD:
TDD funguje v troch fázach:
1.Red: Napíš test, ktorý zlyhá.
2.Green: Napíš kód, aby test prešiel.
3.Refactor: Upraviť a optimalizovať kód, pričom test stále musí prejsť.
Výhody TDD:
1.Lepšia kvalita kódu:
•Kód je čistejší a lepšie navrhnutý, pretože je písaný s ohľadom na testovateľnosť.
2.Bezpečné zmeny:
•Každá zmena je okamžite overená existujúcimi testami, čo minimalizuje riziko zavedenia nových chýb.
3.Dokumentácia:
•Testy slúžia ako živá dokumentácia aplikácie.
4.Lepšie pochopenie požiadaviek:
•Písanie testov vás núti dôkladne pochopiť požiadavky a správanie kódu.
Nevýhody TDD:
1.Počiatočná investícia času:
•Vyžaduje viac času na začiatku vývoja.
2.Náročné pre začiatočníkov:
•Môže byť náročné správne identifikovať, čo testovať.
3.Zbytočné testy pri rýchlych prototypoch:
•TDD nemusí byť ideálne pri rýchlom vytváraní konceptov, ktoré sa často menia.
Príklad použitia TDD v praxi:
Ak vyvíjate funkciu na výpočet faktoriálu:
1.Napíšte test:
def test_factorial():
assert factorial(5) == 120
2.Napíšte kód, aby test prešiel:
def factorial(n):
if n == 0:
return 1
return n * factorial(n – 1)
3.Refaktorujte kód, ak je to potrebné.
Kedy použiť TDD:
•Pri vývoji kritických systémov (bankovníctvo, zdravotníctvo).
•Pri dlhodobých projektoch, kde je dôležitá udržiavateľnosť.
•Pri práci v tímoch, kde testy zvyšujú dôveru v zmeny.
TDD je efektívny spôsob, ako zabezpečiť vysokú kvalitu kódu, minimalizovať chyby a vytvárať dobre testovateľné aplikácie.