Podoba mi się to pytanie. Jeśli nie powinieneś o to pytać tutaj, gdzie możesz zadawać pytania dotyczące rekomendacji książek programistycznych?
guettli
Odpowiedzi:
18
Osobiście przekonałem się, że przeczytanie jednego lub dwóch esejów JUnit podkreślających, że „piszesz test przed kodem” wystarczyło, aby zacząć.
Najważniejszą częścią nauki tej technologii jest napisanie DUŻO kodu testowego , ponieważ musisz zmienić niektóre z najbardziej podstawowych sposobów myślenia o pisaniu kodu. Rzeczy jak:
Napisanie testu przed kodem powoduje, że zastanawiasz się, jak wywołać kod i odzyskać wynik. Oznacza to, że zaprojektowanie API pierwszy opiera się na jak będziesz go używać. Często skutkuje to lepszym interfejsem API.
Twój styl kodowania zmieni się, ponieważ POTRZEBUJESZ myśleć bardziej modułowo, aby móc testować części kodu zamiast całej rzeczy.
Dotrzesz również do punktu, w którym będziesz mógł z ufnością wyciągnąć dużą porcję i wstawić nową, zachowując to samo, ponieważ zdałeś test. Zrobiłem to niedawno z biblioteką analizującą datę, ponieważ oryginał był zbyt łagodny.
Najlepszym miejscem na rozpoczęcie od małego są procedury użytkowe. Następnym razem potrzebujesz jednego, a potem po prostu zaprojektuj, że najpierw z testami, napisz wiele testów obejmujących wszystkie twoje oficjalne przypadki użycia (w tym, co powinno się stać z przekazanymi wartościami zerowymi itp.), A kiedy wszystkie przypadki użycia zostaną zaimplementowane, powinieneś być w stanie użyć bezpośrednio w kodzie i bądź pewny, że działa zgodnie z oczekiwaniami.
Z mojego doświadczenia wynika również, że dobre testy mogą wykonać dodatkową pracę jako dokumentacja, ponieważ masz bardzo zwięzły kod, który dokładnie mówi, jak zachowuje się kod w różnych sytuacjach, co można łatwo udowodnić, że jest poprawne (zielony pasek). Dzięki uważnym komentarzom nie uzyskasz nic lepszego.
Moim zdaniem TDD polega bardziej na testowaniu kodu niż na pisaniu testów.
Jasne, że możesz napisać test przed kodowaniem, ale jedynym powodem, dla którego napisano test, jest kodowanie - co nie powstrzyma Cię przed napisaniem trudnego do przetestowania kodu.
Jeśli jesteś zainteresowany tą koncepcją i chcesz dowiedzieć się więcej, po prostu skomentuj - a skieruję cię w kierunku nagranej prezentacji na ten temat od Google.
Śmiało i dodaj link do prezentacji Google. Myślę, że przedstawiciel Erica nie pozwala jeszcze na komentowanie.
ocodo
+1 @ Slomojo: Prawda, więc głosuj pytanie ... aby popchnąć go ponad 15 powtórzeń, jeśli dobrze pamiętam. Rozejrzę się za filmem.
pogrąża się
1
@blunders ... Mam go do 11!
ocodo
+1 @Slomojo: Aby uzyskać więcej głosów, znalazłem i dodałem link do Google Tech Talk w mojej odpowiedzi. Twoje zdrowie!
pogrąża się w marcu
8
Oprócz niektórych już wspomnianych książek, mogę polecić Growing Object-Oriented Software Guided by Tests . Nie skończyłem go jeszcze czytać, ale jest to warte przeczytania, w tym historia całego, realistycznego projektu TDD, a nie tylko uproszczonych przykładów kodu.
Myślę, że to moja ulubiona książka, która najbardziej wpłynęła na mój sposób pracy, nie tylko na temat TDD, ale ogólnie na temat Software Dev. Muszę też przyznać, że nie czytałem wielu książek TDD, więc może nie ufam mi tak bardzo.
Książka Becka jest dobrze oceniana, ale nie zacząłem od testów jednostkowych, dopóki nie przeczytałem „Ram testów jednostkowych”. Robię trochę TDD, ale dodaję również testy do starszego kodu, który muszę utrzymywać (kiedy mogę).
Edycja: Ponadto, gdy już go opanujesz, polecam od razu użyć go w bieżącym projekcie. Dla mnie to kiedy nastąpiła prawdziwa nauka, i myślę, że książka „Unit ramowa Test” było lepsze odniesienie książka na ten cel. (Używałem nunit z C #).
Chociaż nie chodzi przede wszystkim o TDD (choć się z tym wiąże, a także projektowanie pod kątem testowalności), Art of Unit Testing to książka, którą poleciłbym, ponieważ uczy, jak pisać dobre testy.
Mówiąc dokładniej, uczy, jak tworzyć wiarygodne, łatwe w utrzymaniu i czytelne testy. Myślę, że jest to najważniejsza część książki, poza być może podstawami testów jednostkowych i ram izolacji. Oczywiste jest, że jeśli testy jednostkowe staną się bolesne lub zwiększą tarcie w pracy dewelopera, to wszelkie sukcesy lub korzyści z nich ograniczone. Jeśli ktoś zainwestuje czas i wysiłek w stworzenie testów, to powinien być w stanie uzyskać jak największy zwrot z tej inwestycji.
Odpowiedzi:
Osobiście przekonałem się, że przeczytanie jednego lub dwóch esejów JUnit podkreślających, że „piszesz test przed kodem” wystarczyło, aby zacząć.
Najważniejszą częścią nauki tej technologii jest napisanie DUŻO kodu testowego , ponieważ musisz zmienić niektóre z najbardziej podstawowych sposobów myślenia o pisaniu kodu. Rzeczy jak:
Najlepszym miejscem na rozpoczęcie od małego są procedury użytkowe. Następnym razem potrzebujesz jednego, a potem po prostu zaprojektuj, że najpierw z testami, napisz wiele testów obejmujących wszystkie twoje oficjalne przypadki użycia (w tym, co powinno się stać z przekazanymi wartościami zerowymi itp.), A kiedy wszystkie przypadki użycia zostaną zaimplementowane, powinieneś być w stanie użyć bezpośrednio w kodzie i bądź pewny, że działa zgodnie z oczekiwaniami.
Z mojego doświadczenia wynika również, że dobre testy mogą wykonać dodatkową pracę jako dokumentacja, ponieważ masz bardzo zwięzły kod, który dokładnie mówi, jak zachowuje się kod w różnych sytuacjach, co można łatwo udowodnić, że jest poprawne (zielony pasek). Dzięki uważnym komentarzom nie uzyskasz nic lepszego.
Dla JUnita wersja 4 jest naprawdę fajna.
źródło
Moim zdaniem TDD polega bardziej na testowaniu kodu niż na pisaniu testów.
Jasne, że możesz napisać test przed kodowaniem, ale jedynym powodem, dla którego napisano test, jest kodowanie - co nie powstrzyma Cię przed napisaniem trudnego do przetestowania kodu.
Spójrz na to, aby lepiej zrozumieć, co mam na myśli: My Unified Theory of Bugs
Jeśli jesteś zainteresowany tą koncepcją i chcesz dowiedzieć się więcej, po prostu skomentuj - a skieruję cię w kierunku nagranej prezentacji na ten temat od Google.
AKTUALIZACJA:
Jak pisać czysty, testowalny kod
Miško Hevery Presenting (autor: GoogleTechTalks ) W Google w Nowym Jorku sponsorowany przez grupę inżynierii produktywności Google
źródło
Oprócz niektórych już wspomnianych książek, mogę polecić Growing Object-Oriented Software Guided by Tests . Nie skończyłem go jeszcze czytać, ale jest to warte przeczytania, w tym historia całego, realistycznego projektu TDD, a nie tylko uproszczonych przykładów kodu.
źródło
Przeczytałem dwie książki:
Rozwój oparty na testach: na przykład : Kent Beck i
Ramy testów jednostkowych autorstwa Paula Hamila
Książka Becka jest dobrze oceniana, ale nie zacząłem od testów jednostkowych, dopóki nie przeczytałem „Ram testów jednostkowych”. Robię trochę TDD, ale dodaję również testy do starszego kodu, który muszę utrzymywać (kiedy mogę).
Edycja: Ponadto, gdy już go opanujesz, polecam od razu użyć go w bieżącym projekcie. Dla mnie to kiedy nastąpiła prawdziwa nauka, i myślę, że książka „Unit ramowa Test” było lepsze odniesienie książka na ten cel. (Używałem nunit z C #).
źródło
Chociaż nie chodzi przede wszystkim o TDD (choć się z tym wiąże, a także projektowanie pod kątem testowalności), Art of Unit Testing to książka, którą poleciłbym, ponieważ uczy, jak pisać dobre testy.
Mówiąc dokładniej, uczy, jak tworzyć wiarygodne, łatwe w utrzymaniu i czytelne testy. Myślę, że jest to najważniejsza część książki, poza być może podstawami testów jednostkowych i ram izolacji. Oczywiste jest, że jeśli testy jednostkowe staną się bolesne lub zwiększą tarcie w pracy dewelopera, to wszelkie sukcesy lub korzyści z nich ograniczone. Jeśli ktoś zainwestuje czas i wysiłek w stworzenie testów, to powinien być w stanie uzyskać jak największy zwrot z tej inwestycji.
źródło