Pracuję dla dużej firmy i jestem odpowiedzialny za dużą aplikację Java z tysiącami testów Junit. Od kiedy przeniosłem się do tej roli, przeprowadzono 200–300 zepsutych testów (prawdopodobnie zepsutych przez lata). Testy są stare i kruche i stanowią bałagan zależności od spaghetti, które zwykle kończą się danymi na żywo w piaskownicy.
Moim celem jest zaliczenie testów w 100%, abyśmy mogli przerwać niepowodzenia testów jednostkowych, ale nie mogę tego zrobić, dopóki nie rozwiążę zepsutych testów. Mam bardzo mały budżet, ponieważ budżet na konserwację przeznaczony jest głównie na wsparcie, ale mój zespół zidentyfikował i naprawił nisko zawieszone testy owoców (głównie problemy z konfiguracją / zasobami lokalnymi) i jesteśmy na poziomie 30-40 naprawdę brzydkich testów.
Jakie są opinie na temat najlepszych praktyk? Nie sądzę, aby testy były cenne, ale nie wiem też, co testują ani dlaczego nie działają bez wkopania się, co wymaga czasu i pieniędzy, których prawdopodobnie nie mamy.
Myślę, że powinniśmy udokumentować statusy zepsutych testów za pomocą wszystkiego, co wiemy, a następnie całkowicie usunąć lub zignorować zepsute testy i wprowadzić element błędu / pracy o niższym priorytecie, aby je zbadać i naprawić. Będziemy wtedy na 100% i zaczniemy czerpać rzeczywistą wartość z innych testów, a jeśli mamy nadzwyczajną konserwację / refaktoryzację, będziemy mogli je ponownie odebrać.
Jakie byłoby najlepsze podejście?
Edycja: Myślę, że jest to pytanie inne niż to, ponieważ mam wyraźny kierunek testów, które powinniśmy pisać w przyszłości, ale odziedziczyłem starsze testy, które należy rozwiązać, zanim duży obecny zestaw testów stanie się znaczący.