Eu trabalho para uma grande empresa e sou responsável por um grande aplicativo java com milhares de testes junit. Desde que mudei para essa função, houve 200 a 300 testes quebrados (provavelmente quebrados por anos). Os testes são antigos e frágeis e são uma bagunça de dependências de espaguete que normalmente terminam com dados de sandbox ativos.
Meu objetivo é 100% de aprovação nos testes para que possamos interromper as falhas de teste de unidade, mas não posso fazê-lo até resolver os testes quebrados. Eu tenho muito pouco orçamento porque o orçamento de manutenção é principalmente para suporte, mas minha equipe identificou e corrigiu os testes de frutas pendentes (principalmente problemas de configuração / recursos locais) e estamos com 30 a 40 testes realmente feios.
Quais são algumas opiniões sobre as melhores práticas? Não acho que os testes sejam valiosos, mas também não sei o que estão testando ou por que não funcionam sem se aprofundar, o que leva tempo e dinheiro que provavelmente não temos.
Acho que devemos documentar os status dos testes quebrados com tudo o que sabemos, excluir ou ignorar completamente os testes quebrados e inserir um item de trabalho / bug de prioridade mais baixa para investigar e corrigi-los. Estaremos então a 100% e começaremos a obter valor real dos outros testes e, se tivermos um ganho inesperado de manutenção / refatoração, poderemos recuperá-los novamente.
Qual seria a melhor abordagem?
Edit: Eu acho que essa é uma pergunta diferente desta, porque eu tenho uma direção clara para os testes que deveríamos escrever daqui para frente, mas eu herdei os testes com falha herdados para resolver antes que o grande conjunto atual de testes se torne significativo.