Blog
Gdy myślimy o testach łatwo jest wpaść w pułapkę lekceważenia jakości ich kodu. „To tylko test” można by pomyśleć, „nie wymaga trzymania się standardów kodu”. Jest to jednak złudne, standardy tworzenia kodu testów tak samo jak w przypadku kodu produkcyjnego, powinny być przestrzegane.
Kod testów będziemy zmieniać równie często jak kod produkcyjny. Dlatego kod testów musi być łatwo modyfikowalny. Łatwość modyfikacji oznacza nie tylko łatwość znalezienia miejsca w którym należy dokonać zamian, ale także fakt że drobne zmiany założeń nie powinny wymagać dużych zmian w kodzie testowym. Oprócz łatwości modyfikacji kod musi być tak napisany aby wprowadzanie zmian nie wpływało, pośrednio, na stabilność systemu. Aby wprowadzanie zmian było łatwe i bezpieczne należy dbać zarówno o usuwanie duplikacji, prawidłową izolację kodu, jak i o wszelkie inne dobre praktyki które stosujemy również podczas tworzenia produkcyjnego kodu.
Najprostszym sposobem jest przyjęcie, że kod testów obowiązują dokładnie te same zasady co kod produkcyjny. Czasem jednak warto zmienić standardy kody dla celów kodu testowego. Jednakże zawsze ta zmiana powinna być spowodowana tym, by kod testowy był jeszcze lepszej jakości – nigdy odwrotnie. Przykładem może być inny standard nazewnictwa metod testowych, niż metod kodu produkcyjnego – mające jednak na celu zwiększenie jakości kodu testowego.
Wprowadzanie zmian w kodzie testowym musi być bezpieczne i nie zaburzać stabilności systemu. Zazwyczaj kod testu i produkcyjny wzajemnie się walidują, weryfikując wprowadzoną zmianę (dlatego zawsze należy pamiętać o zasadzie odpalania testów w fazie „red”). Jednakże czasem ta auto walidacja może nie wystąpić (zwłaszcza jeśli kod produkcyjny korzystający z danej zmiany dopiero powstanie) a błąd w kodzie testu pociąga za sobą błąd w tworzonym na jego podstawie kodzie produkcyjnym.
Na koniec wisienka na torcie, fakt który jest jeszcze bardziej marginalizowany niż konieczność zachowania dobrej jakości kodu testów. Często zapominamy że kod testów nawet jeśli początkowo utworzony jest prawidłowo, z biegiem czasu degraduje się tak samo jak kod produkcyjny. I w tym przypadku należy dokładnie tak samo jak w przypadku kodu produkcyjnego dbać o jego utrzymanie refaktoryzację. Więc gdy myślimy o refaktoringu pamiętajmy że refaktoryzujemy nie tylko kod produkcyjny ale i kod testowy.
Podsumowując: Nigdy nie należy bagatelizować kodu testowego. Należy go traktować i o niego dbać z taką samą, a może nawet większą, starannością, jak o kod produkcyjny.
A jak wygląda to w Twoim przypadku? Czy dbasz o kod testowy?