W mojej firmie staram się uzasadnić, dlaczego powinniśmy robić TDD. Obecnie większość programistów robi wszystko, co w ich mocy, aby wykonać projekt, a następnie dodaje testy jednostkowe po fakcie, aby spełnić kryteria menedżera. Wszelkie przykłady renomowanych firm wykonujących TDD i widzących korzyści byłyby bardzo mile widziane.
14
Odpowiedzi:
Studium 4 projektów w IBM i Microsoft. Opublikowano w czasopiśmie Emperical Software Engineering .
Badania empiryczne pokazują, że rozwój oparty na testach poprawia jakość
źródło
W niedawnej książce „Making Software: Co działa i dlaczego w to wierzymy” jest rozdział o TDD. Ale możesz być rozczarowany, ponieważ jeśli dobrze pamiętam, badanie nie ujawniło żadnych rzeczywistych korzyści dla TDD. Studium przypadku i tak było interesujące, a książka jest ogólnie jedną z najlepszych książek o oprogramowaniu, jakie ostatnio czytałem. Zawiera wiele studiów przypadków takich jak programowanie par, przegląd kodu itp.
źródło
Zdecydowanie sprawdź to: Udowodniono skuteczność TDD! Albo to jest?
Autor ma wiele dobrych argumentów na temat tego, że TDD nie jest aż tak skuteczne (imo pomimo hipnotyzowania na śmierć)
źródło
sprawdź, ile czasu ty i klient spędziliście ręcznie testując oprogramowanie; porównaj to z oszacowaniem, jak długo zajęłyby automatyczne testy w stylu TDD. Zrób różnicę
z mojego doświadczenia wynika, że zautomatyzowane testy TDD są złote, ponieważ zapewniają ubezpieczenie i eliminują ogromne ilości ręcznych testów
jak zauważył Andres F, te korzyści można uzyskać jedynie dzięki automatycznym testom, niekoniecznie TDD - jednak TDD wymaga automatycznych testów, zamiast być późniejszym lub przyjemnym w użyciu
Zmuszenie do myślenia o testowaniu najpierw zmusza do myślenia o kwestiach związanych z jakością - takich jak modułowość, projektowanie interfejsu itp. - przed rozpoczęciem pisania kodu.
Osobiście uważam, że jedną z największych zalet TDD jest to, że pisanie testu najpierw zachowuje specyfikację tego, co kod ma do zrobienia na świeżo, gdy piszesz kod, a nie w pewnym sensie -as-you-code.
źródło
chcesz to uzasadnić: zasugeruj, aby zrobić to dla następnego projektu, a następnie uczyć się na nim. Jeśli okaże się, że działa świetnie dla ciebie, mam nadzieję, że będziesz nadal go używać, a jeśli zajęło to więcej czasu na wykonanie projektu i / lub poświęcenie całego czasu na pisanie testów zamiast kodowania, z pewnością zrzucisz go jako porażka.
Myślę, że prawdziwym rozwiązaniem jest (jak większość rzeczy) w połowie drogi, chcesz testów, ale nie chcesz, żeby testy były ważniejsze niż projekt.
(osobiście uważam, że TDD to moda, brzmi dobrze w teorii, ale w praktyce ... nie tak dobrze. Uważam, że testy integracyjne są o wiele ważniejsze, ale mogą to być właśnie takie złożone projekty, nad którymi pracuję).
źródło
Używam TDD od 2 lat i tam, gdzie wtedy pracowałem, wszyscy niechętnie korzystali z nich, w tym menedżerowie, jednak wkrótce okazało się to właściwe. Korzyści, które wkrótce zauważyliśmy, to:
Menedżerowie nie wiedzieliby, ponieważ wszyscy są zainteresowani jedną rzeczą: „Skończyłeś”. Ale narzekają, gdy oprogramowanie ciągle się psuje, nie zdając sobie z tego sprawy. Z dobrym zasięgiem i rozsądnymi testami. Nie chodzi o ilość, ale o jakość, którą naprawdę widać, gdy ktoś psuje funkcjonalność. Niestety, jest to trudne, jeśli jesteś sam. Miałem ten sam problem, ponieważ może być konieczna zmiana kodu, np. Klas podstawowych itp., Aby umożliwić testowanie części oprogramowania.
Podaję przykład. Chciałem wyśmiewać repozytorium, ale nie było interfejsu i muszę wstrzyknąć repozytorium do mojej warstwy usług, a zatem dodać / zmodyfikować konstruktor w całym sklepie, okazało się, że to wielka sprawa, ale w na koniec mam ponad 200 testów testujących tylko jeden obszar systemu i byli pod wrażeniem.
Zazwyczaj wykonuję następujące czynności:
Jeśli chodzi o studia przypadków, obawiam się, nie jestem pewien, czy je widziałem. Musisz zbudować swój projekt i stać się studium przypadku, może też być pod wrażeniem.
Mam nadzieję, że to pomoże
źródło