W czwartek i piątek mieliśmy warsztaty z TDD - Test Driven Development [lub jak kto woli Test Driven Design].
Spodobało mi się bo jest genialne.... i trudne ;-)
Dlatego w ramach treningu postanowiłem napisać sobie jakiś prosty program używając TDD. Wybór padł na grę w życia. Prosta, ale nie trywialna
I jak na razie utknąłem ;-)
Zacząłem od testu na to, że pole gry jest puste. "Sfailowałem" go, a później naprawiłem kod tak by go przechodził [czyli w rzeczywistości by metoda isFieldEmpty() zwracała zawsze false].
Następny był test podawania rozmiaru [raczej nie najlepszy, ale innego pomysłu nie miałem]. "Sfailwoałem" i naprawiłem.
Kolejny był test ilości żywych komórek. Dodałem w międzyczasie metodę put(x,y) i znowu test nie przechodził, naprawiłem go.
I znowu test, tym razem ilości żywych komórek po dodaniu 2. I znowu nie przeszedł [wbrew pozorom o to właśnie chodzi :-)], naprawiłem.
I tak dalej i dalej.
Do teraz mam 12 testów i leżą mi testy dla ilości żywych sąsiadów dla 2 sąsiednich komórek oraz testy na pierwszy warunek "żywości" i "nieżywości" komórek.
Chyba wiem w czym tkwi problem - nie testuje tego co trzeba :-) ale nie wiem co powinienem przetestować.........
W tym tkwi właśnie trudność - zamiast myśleć o tym jak rozwiązać problem muszę myśleć jak przetestować rozwiązanie problemu. Wydaje się, że najzdrowiej byłoby w tym celu w trakcie pisania testu w ogóle porzucić myśli o implementacji testowanego kodu. Ale to trudne. To wbrew temu czego się uczyłem. Nie myśleć o algorytmie, ale co najwyżej o zewnętrznym zachowaniu. Trudne.
Ale się nauczę ;-)
Podobne postybeta
Delete Driven Development ;-)
assertEquals > assertThat ;-)
Życie
Piszemy serwis społecznościowy w Google App Engine
Jak to rzeczy proste okazują się trudnymi ;-)
niedziela, października 21, 2007
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz