728 x 90

Najpierw testy! Potem programowanie.

Najpierw testy! Potem programowanie.

Test Driven Development (w skrócie TDD) jest to technika wytwarzania oprogramowania zaliczana do metodyk zwinnych. Programowanie w niej jest ściśle powiązane ze zautomatyzowanymi testami a jej celem jest tworzenie kodu, który Kent Beck w “Sztuce tworzenia dobrego kodu” określa jako „przejrzysty kod, który działa”.

Stosowanie tej metodyki wiąże się z tworzeniem kodu w pętli składającej się z trzech kroków widocznych na poniższym rysunku

 

Kroki TDD, źródło: opracowanie własne

Pierwszym krokiem jest utworzenie zautomatyzowanego testu, którego zadaniem jest sprawdzenie poprawności wytwarzanej funkcjonalności. Z uwagi na to, że test jest tworzony gdy funkcjonalność nie jest jeszcze zaimplementowana, powinien on zakończyć się porażką. Kolejnym krokiem jest napisanie kodu odpowiedzialnego za funkcjonalność. Po każdych wprowadzonych zmianach powinny być uruchamiane przynajmniej te testy utworzone w pierwszym kroku. Gdy uruchomienie utworzonych testów zakończy się sukcesem, drugi krok uznaje się za zakończony. Ostatni krok polega na refaktoryzacji kodu realizującego funkcjonalność, przede wszystkim na usuwaniu duplikacji. Jest on modyfikowany tak długo aż będzie spełniał oczekiwane wymogi dotyczące jakości kodu. W ostatnim kroku testy również uruchamiane są po każdej zmianie w celu sprawdzenia czy po refaktoryzacji kod nadal realizuje tą samą funkcjonalność. Wymusza to istotną cechę dobrze napisanych testów – test musi sprawdzać zachowanie a nie implementację.

Zalety

Stosowanie Test Driven Development ma wiele zalet. Dzięki tworzeniu testów przed właściwym kodem możliwe jest stworzenie kodu, który będzie w pełni testowalny. Dodatkowo jeśli każda funkcjonalność tworzona jest wraz z testami, mogą one służyć jako jej dokumentacja. Eliminuje to potrzebę przechowywania dokumentacji w osobnym miejscu lub w postaci javadoców. Taka dokumentacja jest też na bieżącą aktualizowana. Opisywana metodyka wpływa bardzo pozytywnie na komfort pracy dewelopera. Dzięki utworzonym wcześniej testom programista wie kiedy realizowana przez niego funkcjonalność może być uznana za zakończoną. Oprócz tego wysokie pokrycie kodu testami zmniejsza u programistów strach przed wprowadzaniem zmian do istniejącego kodu. Jeśli modyfikowany fragment kodu nieoczekiwanie zmienia zachowanie istniejącej już funkcjonalności, powinno to zostać wykryte na etapie uruchomienia testów. Duża ilość testów zwiększa niezawodność tworzonego oprogramowania i redukuje ryzyko wystąpień awarii w środowiskach produkcyjnych.

Źródło obrazu tytułowego: http://www.freeimages.com/photo/i-0-lost-bits-5-1243478

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

Inne artykuły