TDD to zwrot "zapłać mi teraz lub zapłać później". Jeśli tylko odliczasz czas od rozpoczęcia kodowania do sprawdzania kodu, TDD często zajmuje więcej czasu, szczególnie przy pierwszym uczeniu się TDD. Wypłata pojawia się później w fazie testów, a także w przyszłych rundach kodowania.
W fazie badań stwierdziliśmy, że z TDD:
- I miały znacząco mniej błędów. Mój ostatni kod TDD miałem błędy tylko z powodu nieporozumień wymagań (lub zmian) lub w obszarach, w których nie byłem w stanie doprowadzić testowanego kodu (w tym przypadku kod PHP).
- Błędy, które miałem, były na ogół łatwiejsze do odtworzenia w teście, ponieważ miałem już testowany system.
- Naprawianie błędów było szybsze, a dzięki testom mogłem mieć większe przekonanie, że nie wprowadziłem nowych błędów.
Sam kod miał następujące właściwości:
Jak zacząłem myśleć jak klient kodu, kod tendencję do być łatwiejsze w użyciu. (Jest to jedna z zalet pisania testów w pierwszej kolejności).
Kod łatwiej przetestować.
Pisanie testów jednostkowych jest łatwiejsze (i w wielu przypadkach bardziej zabawne) tuż przed, niż po, więc napisano więcej testów.
Kod łatwiej refactor i oczyścić. Było to szczególnie prawdziwe w przypadku Pythona, w którym narzędzia do automatycznego refaktoryzacji mają trudniejszy czas.
Z tego powodu, kiedy przyszedł czas na przegląd kodu, łatwiej było zrozumieć i łatwiej zmienić, plus mieliśmy przynajmniej kilka testów regresji już na miejscu.
Co oznacza, że zwrot z tytułu czasu TDD może być późniejszy: miesięcy. Ponadto uruchamianie TDD ze starszym kodem jest szczególnie trudne. Potem jest czas, aby nauczyć się pisać dobre testy (zły zestaw testowy może być albo niewystarczający, albo gorszy, być kruchym, co utrudnia, nie jest łatwiejsze do zrobienia refaktoryzacji) i jak uzyskać złożony testowany system.
Muszę przyznać, że nie byłem w stanie zdobyć zbyt wielu innych osób, aby przejść na TDD.Myślę, że zmieniłem się głównie dlatego, że chciałem łatwiejszy sposób testowania, a także miałem okazję dowiedzieć się, jak z małą bazą kodu i osobistym projektem.
możesz chcieć użyć pełnej frazy "rozwój oparty na teście" gdzieś w pytaniu. – Jherico
lub w rzeczywistości projekt testowany ... –
Należy zwrócić uwagę, że pytanie dotyczy projektowania/projektowania opartego na testach, a nie tylko testów jednostkowych. Odpowiedzi, które odnoszą się jedynie do testów jednostkowych, są w pewnym sensie pozbawione sensu. Wiele osób (prawdopodobnie większość), których test jednostkowy nie kupuje w TDD. – Chuck