TDD
TDD (test-driven development, programowanie sterowane testami) to technika wytwarzania oprogramowania, w której najpierw pisze się test opisujący oczekiwane zachowanie kodu, a dopiero potem sam kod, który ten test spełnia. Odwraca to typową kolejność pracy — testy nie powstają po zaimplementowaniu funkcji, lecz ją poprzedzają i kierują całym procesem. TDD spopularyzował Kent Beck jako element metodyk zwinnych.
Na czym polega TDD
Sercem TDD jest krótki, powtarzalny cykl nazywany red-green-refactor:
- Red — programista pisze test dla jeszcze nieistniejącej funkcji; test się nie powodzi, bo kodu brak;
- Green — powstaje najprostszy możliwy kod, który sprawia, że test przechodzi;
- Refactor — kod jest porządkowany i upraszczany, a testy pilnują, by nic się nie zepsuło.
Cykl powtarza się dla kolejnych, drobnych fragmentów funkcjonalności. Testy pisane w TDD to najczęściej testy jednostkowe, sprawdzające pojedyncze funkcje w izolacji. Dzięki temu programista nieustannie ma pewność, że dodawany kod działa zgodnie z założeniami, a wprowadzone zmiany nie psują istniejących funkcji.
Zastosowanie w praktyce
TDD stosuje się przy tworzeniu bibliotek, logiki biznesowej, API oraz wszędzie tam, gdzie zależy na wysokiej niezawodności i łatwości utrzymania kodu. Zestaw testów powstających w tym procesie staje się siatką bezpieczeństwa, która umożliwia śmiałą refaktoryzację bez obawy o regresję. Testy pełnią też funkcję dokumentacji — pokazują, jak dany fragment kodu ma być używany i jak się zachowuje w różnych sytuacjach.
W nowoczesnym cyklu wytwarzania oprogramowania TDD dobrze łączy się z automatyzacją w potokach CI/CD, gdzie testy uruchamiane są automatycznie przy każdej zmianie kodu. Choć konsekwentne stosowanie tej techniki wymaga dyscypliny i początkowo wydłuża pracę, w dłuższej perspektywie ogranicza liczbę błędów i obniża koszt rozwoju projektu. TDD bywa uzupełniany o testy integracyjne, które sprawdzają współdziałanie większych fragmentów systemu.
Powiązane pojęcia
Najczęstsze pytania
Na czym polega cykl red-green-refactor?
To trzy etapy powtarzane w TDD. Red to napisanie testu, który początkowo nie przechodzi, bo funkcja jeszcze nie istnieje. Green to napisanie najprostszego kodu, który sprawia, że test przechodzi. Refactor to poprawienie struktury kodu przy zachowaniu zielonych testów. Cykl powtarza się dla kolejnych fragmentów funkcjonalności.
Czy TDD spowalnia pracę programisty?
Na początku pisanie testów przed kodem wydłuża pracę, ale zwrot przychodzi później: mniej błędów trafia na produkcję, refaktoryzacja jest bezpieczniejsza, a testy pełnią rolę żywej dokumentacji. W dłuższej perspektywie TDD zwykle obniża koszt utrzymania i rozwoju oprogramowania.
