Dlaczego testy funkcjonalne nie wystarczają? Co oferują testy jednostkowe?

Właśnie rozmawiałem z moim głównym programistą, który nie zgodził się z tym, że testy jednostkowe są niezbędne i ważne. Jego zdaniem testy funkcjonalne o wystarczającym pokryciu kodu powinny być wystarczające, ponieważ wszelkie wewnętrzne refaktoryzacje (zmiany interfejsu itp.) Nie doprowadzą do konieczności przepisania testów lub ponownego ich obejrzenia.

Próbowałem wyjaśnić, ale nie zaszedłem daleko i pomyślałem, że moglibyście zrobić lepiej. ;-) Więc...

Jakie są dobre powody, dla których kod testowy nie jest oferowany przez testy funkcjonalne? Jakie są zagrożenia, jeśli masz tylko testy funkcjonalne?

Edytuj # 1 Dzięki za wszystkie wspaniałe odpowiedzi. Chciałem dodać, że w testach funkcjonalnych nie mam na myśli tylko testów całego produktu, ale raczej testów modułów w produkcie, nie tylko na niskim poziomie testu jednostkowego z kpiną, jeśli jest to konieczne, itd. Należy również pamiętać, że nasze testy funkcjonalne są automatyczne i ciągle działają, ale trwają dłużej niż testy jednostkowe (co jest jedną z największych zalet testów jednostkowych).

Podoba mi się przykład cegła kontra dom. Domyślam się, że mój główny programista mówi, że wystarczy przetestować ściany domu, nie trzeba testować poszczególnych klocków ... :-)

questionAnswers(8)

yourAnswerToTheQuestion