Lavoro per una grande azienda e sono responsabile di una grande applicazione java con migliaia di test junit. Da quando sono passato a questo ruolo, ci sono stati 200-300 test interrotti (probabilmente interrotti per anni). I test sono vecchi e fragili e sono un casino di dipendenze di spaghetti che in genere finiscono con dati sandbox live.
Il mio obiettivo è superare i test al 100% in modo da poter rompere la build sugli errori dei test unitari, ma non posso farlo fino a quando non affronterò i test interrotti. Ho pochissimo budget perché il budget di manutenzione è principalmente di supporto, ma il mio team ha identificato e risolto i test di frutta a basso carico (principalmente problemi di configurazione / risorse locali) e siamo scesi a 30-40 test davvero brutti.
Quali sono alcune opinioni sulle migliori pratiche? Non penso che i test siano preziosi, ma non so nemmeno cosa stanno testando o perché non funzionano senza scavare, il che richiede tempo e denaro che probabilmente non abbiamo.
Sto pensando che dovremmo documentare gli stati dei test non funzionanti con tutto ciò che sappiamo, quindi eliminare o ignorare completamente i test non funzionanti e inserire un bug / oggetto di lavoro con priorità inferiore per indagare e risolverli. Saremo quindi al 100% e inizieremo a ottenere un valore reale dagli altri test e se avremo una manna di manutenzione / refactoring saremo in grado di riprenderli.
Quale sarebbe l'approccio migliore?
Modifica: Penso che questa sia una domanda diversa rispetto a questa domanda perché ho una chiara direzione per i test che dovremmo scrivere in futuro, ma ho ereditato i test falliti legacy da affrontare prima che la vasta serie corrente di test diventasse significativa.