Czytałem ten blog Joela Spolsky'ego o 12 krokach do lepszego kodu . Nieobecność Test Driven Development naprawdę mnie zaskoczyła. Chcę więc zadać pytanie guru. Czy TDD nie jest naprawdę warte wysiłku?
23
Czytałem ten blog Joela Spolsky'ego o 12 krokach do lepszego kodu . Nieobecność Test Driven Development naprawdę mnie zaskoczyła. Chcę więc zadać pytanie guru. Czy TDD nie jest naprawdę warte wysiłku?
Odpowiedzi:
Rozwój oparty na testach był praktycznie nieznany, zanim książka Kenta Becka ukazała się w 2002 roku, dwa lata po tym, jak Joel napisał ten post. Powstaje zatem pytanie, dlaczego Joel nie zaktualizował swojego testu, czy gdyby TDD był lepiej znany w 2000 r., Czy uwzględniłby go wśród swoich kryteriów?
Sądzę, że nie zrobiłby tego z tego prostego powodu, że ważną rzeczą jest to, że masz dobrze zdefiniowany proces, a nie konkretne szczegóły tego procesu. Z tego samego powodu zaleca kontrolę wersji bez określania konkretnego systemu kontroli wersji lub zaleca bazę danych błędów bez rekomendowania konkretnej marki. Dobre zespoły stale ulepszają i dostosowują się, a także używają narzędzi i procesów, które są dobrze dopasowane do ich konkretnej sytuacji w danym czasie. Dla niektórych zespołów oznacza to zdecydowanie TDD. Dla innych zespołów nie tak bardzo. Jeśli przyjmiesz TDD, upewnij się, że nie jest to mentalność kultu ładunku .
źródło
Joel zajął się tym konkretnie w kilku miejscach.
Wyjaśnił, że testy rzeczy nie są w stanie wychwycić wielu ważnych problemów, szczególnie subiektywnych, takich jak „czy interfejs użytkownika tego oprogramowania jest do bani?” Według niego, nadmierne poleganie na automatycznych testach w Microsoft jest tym, jak skończyliśmy z Windows Vista.
Napisał, że według jego doświadczenia rodzaje błędów, które faktycznie znajdują użytkownicy, dzielą się na dwie kategorie: 1) te, które pojawiają się w powszechnym użyciu, które programiści znaleźliby, gdyby uruchomili własny kod przed jego użyciem lub 2) przypadki na krawędzi są tak niejasne, że nikt nie pomyślałby o napisaniu testów, aby je w ogóle uwzględnić. Stwierdził, że tylko bardzo niewielki odsetek błędów, które naprawił wraz z zespołem w FogBugz, jest czymś, co złapałyby testy jednostkowe. (Nie mogę teraz znaleźć tego artykułu, ale jeśli ktoś wie, który mam na myśli, nie krępuj się edytować link tutaj).
I napisał, że może to być więcej kłopotów niż jest to warte, szczególnie gdy twój projekt przeradza się w bardzo duży projekt z wieloma testami jednostkowymi, a następnie zmieniasz coś (celowo) i kończysz się bardzo dużą liczbą uszkodzonych testów jednostkowych. W szczególności wykorzystuje problemy, które mogą powodować testy jednostkowe, jako powód, dla którego nie dodał go jako 13 punktu do testu Joela, nawet gdy ludzie sugerują, że powinien to zrobić.
źródło
Sam Joel Spolsky odpowiedział na to pytanie w 2009 roku :
źródło
Nikt oprócz Joela nie był w stanie na to odpowiedzieć. Ale możemy wypróbować kilka powodów / obserwacji.
Po pierwsze, testy nie są nieobecne w teście Joela
Po drugie, cała idea testu Joela (jak rozumiem) polega na szybkim zadawaniu pytań typu „tak-nie”. „Czy robisz TDD?” nie pasuje dokładnie (odpowiedź może brzmieć: „niektórzy z nas”, „dla tej części kodu” lub „wykonujemy test jednostkowy”).
Po trzecie, myślę, że nikt nie powiedział (nawet Joel), że te punkty, w których nie ma „jedynych wartych czasu” (nawiasem mówiąc, „czy programujesz”), po prostu są to dobre, szybkie pytania, które należy zadać, kiedy przyjdą w kontakcie z zespołem programistów, czy to jako przyszły członek zespołu, czy nawet jako klient - oto lista, którą przekazałem niektórym nietechnicznym osobom wokół mnie, które szukały wskazówek na temat tego, jak dobry / zły jest ich własny dział IT. To nie wszystko, ale naprawdę źle jest pokonać w trzy minuty.
źródło