Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest Test-Driven Development (TDD)?

Ostatnia aktualizacja:

TDD (Test-Driven Development, programowanie sterowane testami) to metoda pracy, w której programista najpierw pisze test opisujący oczekiwane zachowanie, a dopiero potem kod, który ten test spełnia. Metodę spopularyzował Kent Beck.

Cykl red, green, refactor

  • red: piszesz test, który na razie się nie powodzi,
  • green: piszesz najprostszy kod, który sprawia, że test przechodzi,
  • refactor: porządkujesz kod, pilnując, aby testy nadal były zielone.

Zalety i wady

TDD wymusza przemyślenie wymagań przed pisaniem kodu i daje zestaw testów chroniący przed regresją. Jest jednak mniej wygodne przy eksploracji, prototypach i interfejsach, których wygląd się zmienia. Wymaga też dyscypliny i doświadczenia.

Czy TDD jest potrzebne?

Nie zawsze. Najlepiej sprawdza się przy logice biznesowej, bibliotekach i naprawianiu błędów: najpierw test odtwarzający błąd, potem poprawka. W projektach wizualnych często wystarcza pisanie testów po wprowadzeniu zmian.

Przykład cyklu

Chcesz napisać funkcję liczącą rabat. Najpierw test: dla koszyka o wartości 200 zł rabat 10% ma dać 180 zł. Test się nie powodzi, więc piszesz najprostszy kod, który go spełnia. Potem dodajesz kolejny przypadek, np. brak rabatu dla małych kwoty, i znów kod. Na końcu upraszczasz implementację, a testy pilnują, aby nic się nie zepsuło.

Ma to bezpośredni związek z praktykami, na których opiera się pisanie czytelnego i zrozumiałego kodu.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe