To, co opisujesz jako przepływ pracy, nie jest moim zdaniem duchem TDD.
Streszczenie książki Kent Becks na Amazon mówi:
Po prostu rozwój oparty na testach ma na celu wyeliminowanie obaw związanych z tworzeniem aplikacji.Podczas gdy strach jest zdrowy (często postrzegany jako sumienie, które prosi programistów, by „uważali!”), Autor uważa, że produktami ubocznymi strachu są niepewni, zrzędliwi i niekomunikatywni programiści, którzy nie są w stanie przyjąć konstruktywnej krytyki. Kiedy zespoły programistyczne kupują TDD, natychmiast widzą pozytywne wyniki. Eliminują strach związany z ich pracą i są lepiej przygotowani do stawienia czoła trudnym wyzwaniom, przed którymi stają. TDD eliminuje niepewne cechy, uczy programistów komunikowania się i zachęca członków zespołu do szukania krytyki. Jednak nawet autor przyznaje, że zrzędliwość musi być wypracowana indywidualnie! Krótko mówiąc, założeniem TDD jest to, że kod powinien być ciągle testowany i refaktoryzowany.
Praktyczny TDD
Formalne zautomatyzowane testowanie, zwłaszcza testowanie jednostkowe, każda metoda każdej klasy jest równie złym anty-wzorcem i niczego nie testuje. Należy zachować równowagę. Czy piszesz testy jednostkowe dla każdej setXXX/getXXX
metody, one również są metodami!
Testy mogą również pomóc zaoszczędzić czas i pieniądze, ale nie zapominaj, że ich opracowanie i opracowanie kosztuje dużo czasu i pieniędzy. Są one kodem, więc utrzymują czas i pieniądze. Jeśli zanikną z powodu braku utrzymania, stają się zobowiązaniem bardziej niż korzyścią.
Podobnie jak wszystko inne, istnieje równowaga, której nikt inny nie może zdefiniować. Wszelkie dogmaty w obu kierunkach są prawdopodobnie bardziej błędne niż poprawne.
Dobrą miarą jest kod, który ma kluczowe znaczenie dla logiki biznesowej i podlega częstym modyfikacjom w zależności od zmieniających się wymagań. Te rzeczy wymagają zautomatyzowanych testów formalnych, które byłyby dużym zwrotem z inwestycji.
Będziesz bardzo ciężko znaleźć wiele profesjonalnych sklepów, które działają w ten sposób. Po prostu nie ma sensu wydawanie pieniędzy na testowanie rzeczy, które we wszystkich praktycznych celach nigdy się nie zmienią po wykonaniu prostego testu dymu. Pisanie formalnych automatycznych testów jednostkowych dla .getXXX/.setXXX
metod jest doskonałym przykładem tego, kompletnego marnowania czasu.
Minęły dwie dekady, odkąd wskazano, że testy programu mogą w przekonujący sposób wykazać obecność błędów, ale nigdy nie mogą wykazać ich braku. Po zacytowaniu tej dobrze nagłośnionej uwagi inżynier oprogramowania wraca do porządku dnia i nadal udoskonala swoje strategie testowe, podobnie jak dotychczasowy alchemik, który nadal udoskonalał swoje chryzokosmiczne oczyszczenia.
- Edsger W. Djikstra . (Napisany w 1988 roku, więc teraz jest bliżej 4,5 dekad)
Zobacz także tę odpowiedź .