Wiesz, co jest najtrudniejszą częścią oswajania się z TDD? Czerwone testy. Dla wielu osób to jest najgorsze. Lubimy, kiedy wszystko się kompiluje i zazielenia. Ale wiesz jaka jest najbardziej bezużyteczna rzecz w projekcie? Test, który nigdy nie jest czerwony.


Kiedy prowadzę warsztaty lub wyzwania TDD uczestnicy często mówią, że ten proces ich denerwuje. Bo oni wiedzą, jak napisać implementację, ale muszą przejść przez krok, który wygląda jakby nie wiedzieli. To ciekawe, że w ciągle rozwijającej się branży lubimy sytuacje, w których wszystko wiemy najlepiej. No i chętnie otaczamy się ludźmi, z którymi możemy godzinami dyskutować, jak bardzo się ze sobą zgadzamy 😉 Potem słyszę argumenty w stylu „przecież wszyscy to wiedzą”, „
wszyscy tak robią”, „to jest znana praktyka”. Mój kolega kiedyś świetnie uzupełnił dalszą część takich zdań „wszyscy, czyli ja i mój kolega, z którym we wszystkim się zgadzamy”.

Czerwony test może być dla nas niekomfortowy, bo lubimy mieć rację. Lubimy stawiać na swoim i mieć ostatnie zdanie. Wielu programistów w zielonych raportach testów szuka potwierdzenia swojej nieomylności. Olga Maciaszek-Sharma mówiła nawet ostatnio w Rozmowach o Jakości, że programiści piszą testy głównie po to, żeby potwierdzić, że napisali dobry kod, nie po to, żeby znaleźć własne błędy. Potem przychodzi „upierdliwy” tester, albo „ten głupi biznes” i mówi, że coś jest nie tak. Im częściej dobrowolnie widzimy czerwone testy, tym szybciej przyzwyczajamy się do swojej omylności. Nie boimy się przyznać do błędu i pytać „dlaczego?”.

Moim ulubionymi czerwonymi testami są te napisane po znalezieniu błędu. Piszę test, który nie przechodzi i kiedy naprawiam kod i zazieleniam ten test, satysfakcja jest ogromna. W dodatku zapobiegam przyszłej regresji i potwierdzam, że faktycznie naprawiłam implementację, a nie wydaje mi się, że naprawiłam.

Kolejnym krokiem wychodzenia ze swojej strefy komfortu jest usuwanie zbędnych, ale to temat na inny wpis. Rozmawialiśmy o tym ostatnio z Grześkiem Koftisem w podcaście Devsession. Cała rozmowa jest o trzech wrogach jakości, w tym o przerośniętym ego 😉