Historycznie w długoterminowych projektach automatyzacja testowania często stawała się obciążeniem: testy były pisane "na kolanie", nie były utrzymywane, a po latach trzeba je było wyrzucać. Częsta rotacja zespołu prowadzi do utraty wiedzy, rozmycia architektury testów, a automatyzacja zamienia się w "nagromadzenie skryptów".
Problem: scenariusze testowe się starzeją, właściciele testów znikają, brak dokumentowanej architektury systemu testowego, nie stosuje się code review, powstaje dług techniczny. Nowym członkom zespołu trudno jest zrozumieć, co i jak jest pokryte testami, który test za co odpowiada.
Rozwiązanie — wdrażać praktyki GitFlow dla testów automatycznych, pisać czytelny i dobrze udokumentowany kod do testów, stosować wzorce projektowe (takie jak Modular Test Architecture), automatyzować utrzymanie dokumentacji (README, autogeneracja raportów o pokryciu i aktualności testów). Koniecznie przeprowadzać code review dla testów automatycznych, opisywać scenariusze testowe w dokumentacji, wprowadzać ownership poprzez rozdzielenie odpowiedzialności.
Kluczowe cechy:
Czy ma sens używanie statycznej analizy kodu testów automatycznych?
Tak! Analiza statyczna (linty, SonarQube itd.) pomaga utrzymać jakość i jednolitość kodu testów, zapobiega pojawianiu się "szybkiego i brudnego" kodu.
Jak często należy oczyszczać testy automatyczne z nieaktualnych scenariuszy?
Zaleca się przeprowadzanie przeglądów aktualności scenariuszy przy każdym cyklu wydania (np. raz w miesiącu), aby wykluczyć nieaktualną funkcjonalność i nie psuć metryk stabilności.
Czy 100% pokrycie testami automatycznymi pomaga uniknąć starzenia się testów?
Nie. Nawet przy "pełnym" pokryciu testy automatyczne mogą stać się nieaktualne z powodu zmian w wymaganiach i architekturze, jeśli nie będą utrzymywane w aktualnym stanie.
W dużej firmie wszystkie testy były umieszczone w jednym repozytorium, pisane przez kogoś i jak popadnie. Po roku prawie nikt nie mógł wyjaśnić, co jest pokryte, a co nie, większość scenariuszy była nieaktualna.
Zalety:
Wady:
Dla testów automatycznych stworzono osobny plan: każdy moduł miał swojego właściciela; struktura kodu była opisana w README, standardy — w CONTRIBUTING.md. Każdy PR w repozytorium testowym wymagał code review z obowiązkową listą kontrolną.
Zalety:
Wady: