TDD w pigułce

TDD - Oprogramowanie sterowane testami

Jakiś czas temu uczestniczyłam w Instagramowym wyzwaniu #30devstories. Podczas tego wyzwania ja i inni twórcy przygotowaliśmy mnóstwo przydatnych materiałów. Dzieliliśmy się swoją wiedzą na przeróżne tematy. Bardziej lub mniej programistyczne. Ponieważ treści te były tworzone w takim dość ulotnym formacie jakim jest Instagram Story, postanowiłam, że podzielę się nimi z Tobą w bardziej trwałej wersji. Rozpoczniemy od TDD, czyli Test Driven Development. Szczegółowo o tym jak wygląda praca z TDD pisałam w artykule TDD - Wprowadzenie. Dziś jednak chciałabym się podzielić krótką notatką o podstawach TDD.

Co to jest TDD?

TDD - Test Driven Development, czyli tworzenie oprogramowania sterowanego testami. Jest to nie tyle sposób pisania testów lub testowania, co sposób wytwarzania oprogramowania przy pomocy testów.

Jak wygląda proces TDD?

Proces ten składa się z trzech kroków, powtarzanych cyklicznie:

  1. Test - Każdy cykl TDD zaczynamy od testu. Po jego napisaniu, test uruchamiamy. Gdyby okazało się, że test jest spełniony bez konieczności dopisania jakiegokolwiek kodu oznaczyłoby to, że test jest bezużyteczny. Nie wnosi nic nowego do projektu.

  2. Kod - Test nie przechodzi, a my możemy skupić się na napisaniu kodu. Trzeba tu pamiętać o napisaniu tylko i wyłącznie minimalnej ilość kodu potrzebnej do spełnienia testu. Nic więcej. Teraz test powinien przechodzić.

  3. Refactor - Gdy mamy test i kod, to czas na refaktoryzację. Czy można coś poprawić, polepszyć, uprościć? Zmienić nazwę na bardziej czytelną? Uwaga tylko na jedną ważną rzecz. Trzeci krok w cyklu TDD nie jest po to by dopisywać nową funkcjonalność, lecz by poprawiać istniejącą.

Po zakończeniu całego cyklu możemy wrócić do kroku pierwszego i zacząć kolejny cykl. Cały proces powtarzamy aż uzyskamy satysfakcjonujące rozwiązanie - potrzebną logikę.


Potrzebujesz pomocy?

Jeśli szukasz doświadczonej programistki Ruby z ponad dziesięcioletnim stażem, śmiało skontaktuj się ze mną.

Mam doświadczenie w różnych domenach, a szczególną wagę przykładam do szybkiej reakcji na opinie użytkowników i pracy zespołowej. Pomogę Ci stworzyć świetny produkt.