Czy słyszeliście kiedyś o TDD, czyli Test-driven development?  Jest to jeden ze sposobów tworzenia oprogramowania. Składa się z 3 faz które są wielokrotnie powtarzane: pisanie testu, pisanie kodu, refactor. Nie jest to błąd że testowanie znajduje się przed kodem a jest to zabieg celowy który charakteryzuje tą technikę tworzenia oprogramowania

Jak pisać w TDD?

Tak jak napisałem we wstępie tworzenie programu odbywa się w 3 krokach. Dla lepszego zobrazowania załóżmy, że musimy napisać funkcję do liczenia potęgi danej liczby. Jak powinny wyglądać kolejne etapy tworzenia tej funkcji?

  1. Piszemy zbiór testów, które będzie musiał przejść nasz program. W naszym przypadku będą wartości jakie podamy na wejście funkcji oraz jaki powinien być oczekiwany wynik. Najlepiej by było aby nasze przypadki testowe pokrywały miejsca krytyczne np. liczba do potęgi 0 lub 0 do dowolnej potęgi. Bardzo ważne jest aby w tym kroku nasze testy nie przechodziły. Jeśli okazałoby się, że testy przechodzą to znaczy, że należy je wyrzucić i napisać od nowa bo są bezużyteczne.
  2. W drugim kroku piszemy funkcję dzięki której mają przejść napisane przez nas testy.  Nie jest w tym kroku istotne czy napiszemy naszą funkcję do liczenia potęgi w sposób iteracyjny czy rekurencyjnie. Kod nie musi być idealny jednak ważne jest aby nasze testy przeszły.
  3. Trzeci krok to refactor istniejącego już kodu. Możemy zmieniać, ulepszać, przyśpieszać nasz kod a testy będą pilnowały czy nie psujemy naszej funkcji.

Następnie dla każdej nowej funkcjonalności, klasy, funkcji powtarzamy kroki 1-3.

Jak wygląda praca w TDD?

Nie będę ukrywał, że jest to dość ciężkie. Potrzeba dużo samodyscypliny i wytrwałości by pisać aplikacje w ten sposób. Jednak wysiłek w niego włożony opłaca się i szybko zwraca w postaci czystego kodu. Ja sam w ostatnim czasie staram się pisać w technice TDD. Na początku było trudno zmienić sposób myślenia ale z każdym kolejnym testem przychodzi mi to już coraz łatwiej. Zauważyłem, że od kiedy piszę nowe funkcjonalności zaczynając od testów kod się stał się dużo prostszy i łatwiej przeprowadzać w nim zmiany. Chyba warto się pomęczyć by osiągnąć taki efekt 😉

A jak to wygląda u was. Pisaliście/ piszecie w TDD? Co o tym uważacie? Bez sensu czy warto korzystać? Zapraszam do dyskusji.