W książkach poświęconych jakości kodu, testowaniu i metodykom zwinnym jako główną przyczynę braku testów wymienia się lenistwo programistów, olewactwo i niechcicę. Pozwolę sobie napisać kilka słów na ten temat.

Od pewnego czasu w związku ze zmianą płatnika ZUS przekazuję swoje obowiązki innym programistom. Przy okazji mam możliwość obserwowania tego jak pracują i w jaki sposób myślą o kodzie oraz projekcie. Niestety przy okazji tych obserwacji weryfikuję moje postrzeganie testów.

//offtopic
Zmiana płatnika ZUS związana jest z tym, że nowy płatnik przyszedł na spotkanie WJUG i zesponsorował nam pizzę. Zatem jeżeli potrzebujesz pracowników to warto pojawić się na spotkaniu JUGa jako sponsor. Na pewno ktoś chętny się znajdzie. Szczególnie w WJUG, który jest stosunkowo duży.
// koniec offtopu

Słaba znajomość języka

Pierwszą przyczyną niepisania testów jest moim zdaniem ogólna słaba znajomość języka w którym się pisze. Programista może być bardzo dobry, ale jeżeli jest na etapie poznawania języka programowania to w pierwszej kolejności chce by jego kod w ogóle zadziałał. Rozpoczęcie pisania testów jest znakiem, że dana osoba poznała język na tyle by nie poświęcać znacznej ilości czasu na walkę z kompilatorem, IDE czy konfiguracją.

Słaba znajomość narzędzi

Pierwsze testy to oczywiście proste „Dupa debug”. Bardzo szybko zniechęcają do pisania jakichkolwiek testów. Jednocześnie programiści nie poznają wyspecjalizowanych narzędzi. Tym samym doprowadza się do sytuacji, w której z jednej strony programista wie, że ma testować, ale z drugiej tego nie robi ponieważ brakuje mu warsztatu.

Kiepsko zaprojektowany kod

Nie ukrywam, że obecnie nie testuję całego kodu. Wynika to z tej prostej przyczyny, że nie da się w sensownym czasie przygotować testów. Architektura projektu jest niestety taka, a nie inna. Niektórych rzeczy nie da się przeskoczyć dlatego wolę odpuścić testy jednostkowe w niektórych przypadkach i opędzić przypadki w ramach testów integracyjnych. Jest to tańsze.

Brak czasu

Silnie związane z pojęciem deadline’u i „na wczoraj”. Zazwyczaj jeżeli goni nas czas i musimy wpuścić jakiś patch czy inny „hotfix” to odpuszczamy testy. Potem nie ma czasu, a jeszcze później sprawa się rozmywa.

Punkty 1 i 7

Czyli pycha i lenistwo. W pierwszym przypadku „mój kod jest tak zajebisty, że aż prawie jak ja jest zajebisty dlatego nie potrzebuje testów n00bie”. W drugim „nie chce mi się”… i to wyczerpuje temat.