Problem długu technicznego w autotestach został po raz pierwszy dostrzegany wraz z rozwojem automatyzacji — gdy liczba testów zaczęła liczona być w setkach i tysiącach, ich utrzymanie często kosztowało więcej niż sama разработка, a błędy w architekturze mnożyły się.
Na początku automatyzacji testy pisano szybko, często bez wzorców, bez standardów i bez późniejszego refaktoryzowania. W rezultacie repozytoria autotestów się starzeją, łamią się przy zmianie aplikacji, a ich utrzymanie wymaga coraz większego wysiłku.
Kluczowe cechy:
Czy duży procent pokrycia kodu testami jest wskaźnikiem braku długu technicznego?
Nie, formalne pokrycie kodem nie gwarantuje jakości i żywotności bazy testowej: mogą być przestarzałe lub "niepotrzebne" testy.
Czy wystarczy jednorazowo napisać szablony autotestów, aby wyeliminować dług techniczny?
Nie, infrastruktura i wzorce zawsze wymagają przeglądu i rozwoju w miarę wzrostu projektu.
Czy można całkowicie zrezygnować z testowania ręcznego, jeśli autotesty są dobrze zorganizowane?
Nie, zawsze będą potrzebne testy smoke/regression/niche wykonane manualnie, a autotesty są niezbędne do regularnego "monitorowania" stabilności funkcjonalności.
Autotesty pisano bez przeglądów, struktura zmieniała się w miarę trwania projektu, część testów przestawała być aktualna — 40% testów nie zdawało egzaminu z powodu zmian w aplikacji.
Plusy:
Minusy:
W zespole co dwa tygodnie odbywa się przegląd autotestów i refaktoryzacja, architektura jest utrzymywana zgodnie z przyjętymi standardami, testy są ściśle powiązane z aktualnymi user-story.
Plusy:
Minusy: