Podejdę do tego z drugiej strony. Co się stanie, gdy opracujesz nietrywialną aplikację bez testów jednostkowych? Jeśli masz dobry dział kontroli jakości, jedną z pierwszych rzeczy, które się wydarzy, jest to, że zauważysz dużą liczbę zgłoszonych problemów. Dlaczego, ponieważ nie przetestowałeś tego, co zrobiłeś i zakładałeś, że to zadziała, a ponieważ nie przywiązywałeś tak dużej uwagi do wymagań, a Twoja aplikacja ich nie spełnia. Ups z powrotem do tablicy kreślarskiej, aby przepisać i naprawić. Teraz wprowadziłeś poprawki i znalazłeś zupełnie nowy zestaw problemów, ponieważ nie miałeś sposobu, aby sprawdzić, czy Twoje poprawki nie wpłynęły na nic innego, zanim przeszedłeś do kontroli jakości. Upłynął termin, który minął, a zarząd jest zdenerwowany.
Sytuacja jest gorsza, jeśli nie masz dobrego działu kontroli jakości, ponieważ wtedy użytkownicy znajdą błędy i nie tylko sprawią, że twój szef będzie niezadowolony, może sprowadzić środowisko produkcyjne na kolana, a setki, a nawet tysiące ludzi będzie w stanie przestój podczas naprawy błędów, których zapobiegłoby testowanie jednostkowe. To NIE jest dobry wybór kariery.
Załóżmy teraz, że to podejście kowbojskie trwa przez lata? Teraz każda zmiana, nawet trywialna, wydaje się wywoływać nowe, nieoczekiwane problemy. Nie tylko to, ale wiele rzeczy, które chciałbyś zrobić, aby aplikacja działała lepiej, nie możesz tego zrobić, ponieważ są one zbyt ryzykowne, zbyt drogie lub oba. Więc nakładasz łaty na plastry, dzięki czemu system jest coraz bardziej zawiły, bugger i trudniejszy w użyciu.
Użytkownicy zaczynają kwestionować twoje oszacowania czasu, ponieważ stają się coraz większe i trudno im wytłumaczyć, że system stał się tak skomplikowanym bałaganem, trudno jest znaleźć miejsce, aby wprowadzić zmiany, a jeszcze trudniej upewnić się, że nie zepsuć coś innego.
Pracowałem w takim miejscu, w którym po dziesięciu latach rozwoju praktycznie nic nie chcieliśmy zrobić, aby naprawić prawdziwe problemy, ponieważ nie mogliśmy stwierdzić, która z setek niestandardowych aplikacji klienckich ulegnie awarii. Pierwotni programiści byli bardzo podobni do „testów jednostkowych, nie potrzebujemy żadnych śmierdzących testów jednostkowych”. Każdy, kto za nimi podążał, cierpiał z powodu krótkowzroczności.
Bez testów jednostkowych oprogramowanie jest wadliwe i zajmuje więcej czasu zarówno na początkowy rozwój, jak i na utrzymanie. Dlaczego, u licha, nie chcesz przeprowadzać testów jednostkowych? Czas poświęcony na napisanie testu będzie znacznie krótszy niż czas spędzony na naprawianiu problemów, które powinieneś znaleźć wcześniej (im wcześniej błąd zostanie znaleziony, tym mniej czasu zajmie naprawa) i problemów, których można by całkowicie uniknąć, pisząc testy po pierwsze, co pozwala lepiej zrozumieć wymagania przed rozpoczęciem kodowania.