Załóżmy, że jeden miał stosunkowo duży program (powiedzmy 900k SLOC w C #), wszystkie skomentowane / udokumentowane dokładnie, dobrze zorganizowane i działające dobrze. Cała baza kodu została napisana przez jednego starszego programistę, który nie współpracuje już z firmą. Cały kod jest testowalny w obecnej postaci, a IoC jest używany przez cały czas - z jakiegoś dziwnego powodu nie napisali żadnych testów jednostkowych. Teraz Twoja firma chce rozgałęzić kod i chce dodać testy jednostkowe, aby wykryć, kiedy zmiany psują podstawową funkcjonalność.
- Czy dodawanie testów to dobry pomysł?
- Jeśli tak, to jak zacząć od czegoś takiego?
EDYTOWAĆ
OK, więc nie spodziewałem się, że odpowiedzi będą dobrym argumentem na przeciwne wnioski. W każdym razie problem może być poza moim zasięgiem. Przeczytałem również „duplikaty pytań” i ogólny konsensus jest taki, że „testy pisemne są dobre” ... tak, ale nie są zbyt pomocne w tym konkretnym przypadku.
Nie sądzę, że jestem tu sam, rozważając pisanie testów starszego systemu. Zamierzam zachować wskaźniki dotyczące tego, ile czasu spędza się i ile razy nowe testy wychwytują problemy (i ile razy nie). Wrócę i zaktualizuję to za około rok z moimi wynikami.
WNIOSEK
Okazuje się zatem, że w zasadzie niemożliwe jest po prostu dodanie testu jednostkowego do istniejącego kodu z jakimkolwiek pozorem ortodoksji. Gdy kod działa, oczywiście nie można na czerwono / zielono naświetlić swoich testów, zwykle nie jest jasne, które zachowania są ważne do przetestowania, nie jest jasne od czego zacząć i na pewno nie jest jasne, kiedy skończysz. Naprawdę nawet postawienie tego pytania pomija główny punkt pisania testów. W większości przypadków stwierdziłem, że łatwiej jest ponownie napisać kod przy użyciu TDD niż rozszyfrować zamierzone funkcje i dodać z mocą wsteczną testy jednostkowe. Naprawianie problemu lub dodawanie nowej funkcji to inna historia i uważam, że nadszedł czas na dodanie testów jednostkowych (jak niektórzy podkreślili poniżej). W końcu większość kodu zostaje przepisana, często wcześniej niż można by się spodziewać - przy takim podejściu „