O ile nie napiszesz kodu bez testowania go, zawsze poniesiesz koszty testowania.
Różnica między posiadaniem testów jednostkowych a ich brakiem to różnica między kosztem napisania testu a kosztem jego przeprowadzenia w porównaniu z kosztem ręcznego testowania.
Jeśli koszt napisania testu jednostkowego wynosi 2 minuty, a koszt przeprowadzenia testu jednostkowego wynosi praktycznie 0, ale koszt ręcznego przetestowania kodu wynosi 1 minutę, to łamiesz się nawet po dwukrotnym uruchomieniu testu.
Przez wiele lat nie rozumiałem, że nie mam wystarczająco dużo czasu na napisanie testów jednostkowych dla mojego kodu. Kiedy pisałem testy, były rozdęte, ciężkie rzeczy, które tylko zachęciły mnie do myślenia, że powinienem pisać testy jednostkowe tylko wtedy, gdy wiedziałem, że są potrzebne.
Ostatnio zachęciłem mnie do korzystania z Test Driven Development i uznałem, że jest to kompletna rewelacja. Jestem teraz głęboko przekonany, że nie mam czasu, aby nie pisać testów jednostkowych .
Z mojego doświadczenia wynika, że rozwijając się z myślą o testowaniu, otrzymujesz czystsze interfejsy, bardziej skoncentrowane klasy i moduły oraz ogólnie bardziej SOLIDNY , testowalny kod.
Za każdym razem, gdy pracuję ze starszym kodem, który nie ma testów jednostkowych i muszę coś ręcznie przetestować, ciągle myślę „byłoby to o wiele szybsze, gdyby ten kod miał już testy jednostkowe”. Za każdym razem, gdy próbuję dodać funkcjonalność testu jednostkowego do kodu z wysokim sprzężeniem, ciągle myślę „byłoby to o wiele łatwiejsze, gdyby zostało napisane w sposób oddzielony”.
Wersja TL; DR :
Napisz test, gdy koszt napisania testu plus koszt jego przeprowadzenia tyle razy, ile potrzebujesz, będzie prawdopodobnie mniejszy niż koszt ręcznego przetestowania go tyle razy, ile potrzebujesz.
Pamiętaj jednak, że jeśli korzystasz z TDD, koszty pisania testów prawdopodobnie spadną, gdy będziesz w tym lepszy, i chyba że kod jest absolutnie trywialny, prawdopodobnie skończysz przeprowadzanie testów częściej niż się spodziewasz.