Pracowałem na bardzo dużej bazie kodu, która początkowo nie miała testów jednostkowych. Postępując zgodnie z kilkoma praktykami, teraz (po kilku latach) większość bazy kodu objęta jest testami.
Cały nowy kod musi mieć testy jednostkowe.
Wszystkie zmienione kody muszą mieć dodane testy jednostkowe.
Sposób, w jaki bezpiecznie dodaliśmy testy do starego kodu bez jego uszkodzenia, polega przede wszystkim na zastosowaniu następującego podstawowego podejścia:
Wybierz małą sekcję kodu, której potrzebujesz, aby zmienić funkcjonalność.
- Spróbuj utworzyć testy integracji na poziomie systemu, aby otoczyć kod. Ze względu na kombinatoryczną złożoność testów na tym poziomie, testy te utworzą jedynie test „zadymienia” w celu wykrycia poważnych błędów.
Przedstaw interfejsy, których potrzebujesz, aby móc przetestować zmieniany kod. Stosuj techniki refaktoryzacji składające się z sekwencji bardzo małych zmian, które z dużym prawdopodobieństwem są poprawne. W miarę możliwości staraj się korzystać z pomocy narzędzi. Możesz to zrobić, na przykład, przenosząc / rozpakowując zmienianą metodę na własny obiekt. Regularnie sprawdzaj zmiany, aby móc przywrócić. Regularnie sprawdzaj, jak dokonałeś zmian, przeglądając historię kontroli wersji.
Postaraj się ograniczyć do minimum wymagane zmiany, aby przełamać zależności uniemożliwiające dodanie testów.
- Napisz testy, o ile to możliwe, obejmujące funkcjonalność kodu, który zamierzasz zmienić. Regularnie melduj się i sprawdzaj wszystkie zmiany.
- Napisz testy nowej funkcjonalności / zmiany funkcjonalności.
- Zaimplementuj funkcjonalność (jest to twój normalny cykl TDD)
- Pamiętaj o przefakturowaniu obszarów objętych testami (refaktor czerwono-zielony).
Odkryliśmy, że im więcej to robimy, tym łatwiej. Ponieważ za każdym razem, gdy wracasz do bazy kodu, jest to trochę lepsze.
Zauważyliśmy ogromny spadek liczby błędów, które docierają do naszych testerów kontroli jakości. Obecnie regresje funkcjonalności są prawie niespotykane, więc uważam, że było to dla nas warte wysiłku.
Możesz zacząć pokrywać swój obecny kod, a jeśli masz trochę czasu, zacznij obejmować podstawową funkcjonalność starego kodu. Możesz też poprosić swojego premiera o dodatkowy czas =)
źródło
Absolutnie nie! Rozpocznij testowanie dodawanego kodu. Zobaczysz ogromne korzyści z tego, nawet jeśli niektóre starsze komponenty nie mają testów. Ponieważ musisz poradzić sobie z jednym z tych elementów lub znaleźć w nim błąd, napisz test. Z czasem pojawi się więcej testowanego starszego kodu.
źródło