Sugeruję napisanie pełnego zestawu testów w obszarach, w których jest to rozsądne i praktyczne. W mniej praktycznych obszarach pisz kontrole poczytalności.
Z mojego doświadczenia wynika, że narzut związany z pełnym zestawem przypadków testowych jest z pewnością tego wart w większości przypadków, ale realistycznie pokrycie kodu ma coraz mniejsze zyski. W pewnym momencie pisanie kolejnych testów w celu zwiększenia zasięgu kodu nie ma sensu.
Na przykład, w zależności od języka / technologii, testowanie interfejsu użytkownika może nie być praktyczne, a nawet wykonalne. Wiele testów prawdopodobnie będzie polegało na tym, co widzi użytkownik i nie może być zautomatyzowane. Jak przetestowałbyś, że metoda generowania captcha tworzy obraz, który może być odczytany na przykład przez człowieka?
Jeśli napisanie pełnego zestawu testów zajmie ci trzy dni, prawdopodobieństwo wystąpienia błędu w tym elemencie jest bardzo niskie, a sama funkcja zajmuje tylko pół godziny, więc powinieneś dobrze przemyśleć o tym, czy ten czas jest tego wart. Może samo napisanie podstawowej kontroli poczytalności dla tej funkcji zapewniłoby wartość?
Moja ogólna rada jest taka, że powinieneś w pełni przetestować komponenty tam, gdzie testy można stosunkowo łatwo napisać. Jednak jeśli jest to obszar, który jest bardzo trudny do przetestowania, narysuj linię w piasku i napisz testy, które przetestują obszar na wyższym poziomie, zamiast go w pełni przetestować.
W poprzednim przykładzie captcha może napisać testy, które sprawdzają, czy obraz o prawidłowym rozmiarze i formacie jest zwracany i czy nie są zgłaszane żadne wyjątki. To daje pewien poziom pewności bez przesadzania.