Pracuję w małej firmie jako programista solo. W rzeczywistości jestem jedynym programistą w firmie. Mam kilka (stosunkowo) dużych projektów, które regularnie napisałem i prowadzę, i żaden z nich nie ma testów na ich wsparcie. Kiedy rozpoczynam nowe projekty, często zastanawiam się, czy powinienem spróbować podejścia TDD. Brzmi jak dobry pomysł, ale szczerze mówiąc, nigdy nie usprawiedliwiam dodatkowej pracy.
Ciężko pracuję, by myśleć przyszłościowo w swoim projekcie. Zdaję sobie sprawę, że z pewnością pewnego dnia inny programista będzie musiał zachować mój kod lub przynajmniej go rozwiązać. Utrzymuję rzeczy tak proste, jak to możliwe, komentuję i dokumentuję rzeczy, które trudno byłoby pojąć. A faktem jest, że projekty te nie są tak duże ani skomplikowane, że przyzwoity programista miałby problemy z ich zrozumieniem.
Wiele przykładów testów, które widziałem, sprowadza się do najdrobniejszych szczegółów, obejmujących wszystkie aspekty kodu. Ponieważ jestem jedynym programistą i jestem bardzo blisko kodu w całym projekcie, znacznie bardziej efektywne jest stosowanie wzorca testowego zapisu i ręcznego zapisu. Uważam również, że wymagania i funkcje zmieniają się na tyle często, że utrzymywanie testów spowodowałoby znaczne obciążenie projektu. Czas, który można by poświęcić na zaspokojenie potrzeb biznesowych.
Tak więc za każdym razem dochodzę do tego samego wniosku. Zwrot z inwestycji jest zbyt niski.
Od czasu do czasu konfiguruję kilka testów, aby upewnić się, że poprawnie napisałem algorytm, na przykład obliczanie liczby lat, które ktoś spędził w firmie na podstawie daty zatrudnienia. Ale z punktu widzenia pokrycia kodu pokryłem około 1% mojego kodu.
Czy w mojej sytuacji nadal znajdowałbyś sposób na regularne przeprowadzanie testów jednostkowych, czy czy mam uzasadnione podstawy, by unikać tego narzutu?
AKTUALIZACJA: Kilka rzeczy o mojej sytuacji, które pominąłem: wszystkie moje projekty to aplikacje internetowe. Aby pokryć cały mój kod, musiałbym użyć automatycznych testów interfejsu użytkownika, i to jest obszar, w którym nadal nie widzę wielkiej przewagi nad testowaniem ręcznym.