Sou engenheiro de software em uma empresa de médio porte. Temos uma plataforma de teste bastante robusta em execução no TeamCity. Ele realiza testes de unidade em cada check-in e executa um teste de unidade diário / BVT.
O problema é - nós temos muitos testes de unidade quebrados.
Freqüentemente, exponho a inutilidade dos testes de unidade, se eles estão constantemente quebrando e sem manutenção. Ser incapaz de ver se uma alteração causou uma regressão remove a maior parte do valor de uma plataforma de teste de unidade.
Eu gostaria de plantar uma semente que crie uma cultura de bons hábitos - corrigindo testes quando quebrados, vendo-os valiosos, priorizando a fixação de testes junto com outros trabalhos.
Eu tentei suborno (assados!), Simplesmente perguntando e falando com os líderes da equipe. Todo mundo diz que é uma boa ideia, mas vejo ser o único a fazer alguma coisa a respeito.
Qual é a melhor maneira de começar a incentivar outras pessoas a corrigir seus testes e priorizar a correção de testes em seus sprints?
Se houver uma maneira menos subjetiva de fazer isso, ficarei feliz em aceitar algumas dicas.
fonte
Respostas:
Faça com que seja impossível realmente liberar qualquer coisa sem corrigir os testes.
O fato é que, se sua compilação for interrompida por mais de 15 minutos por vez (e isso inclui testes com falha), você não estará fazendo a integração contínua .
A "opção nuclear" é fazer com que o servidor de controle de origem recuse as confirmações / verificações de qualquer usuário que não seja aquele que quebrou a compilação. Obviamente, um administrador precisa substituí-lo temporariamente se a pessoa sair de férias - mas, se todos souberem que toda a equipe está ferrada até que eles façam seus testes, eles resolverão isso rapidamente.
Uma boa política (que é ainda melhor quando automatizada) é reverter a fonte para a última confirmação estável conhecida após 15 minutos de falha na compilação. Em outras palavras, se você não pode corrigi-lo ou não sabe o que causou a compilação ou o teste, revertê-lo e trabalhar localmente até que seja resolvido - nunca faça outros desenvolvedores mexerem o polegar enquanto você se afasta. problema que eles não se importam.
PS Se você já tiver muitos testes com falha, poderá usar um "limite à direita" no IC. Configure-o para que a construção falhe apenas se houver mais falhas de teste do que na última vez. Isso, juntamente com uma regra de cobertura, forçará os desenvolvedores a melhorar a situação do teste, se quiserem continuar trabalhando.
PPS: Eu sei que isso pode parecer draconiano para alguns, mas tudo depende da sua cultura. Se você chegar a um ponto em que as pessoas simplesmente não deixam a compilação quebrada ou os testes falham (minha equipe quase nunca o faz, embora eu precise lembrá-los ocasionalmente), não é necessário continuar com o conjunto mais estrito de regras. Embora IMO, você sempre deve falhar na compilação em um teste de unidade quebrado. Os testes de integração / navegador podem falhar às vezes.
fonte
Testes de unidades que falham não são o problema. Eles são um sintoma .
O verdadeiro problema está na cultura. Você precisa pisar suavemente: aqui estão dragões . Você não pode mudar a cultura sozinho, e ser a roda estridente fará com que você seja um pária. Literalmente.
Sugiro que, se você tentar encontrar uma pessoa sênior para defender a causa e liderar o caminho. Se isso falhar, tente aumentá-lo em uma reunião geral de desenvolvedores, sem apontar o dedo ou chamar nomes. Outra alternativa é se responsabilizar por fazer um trabalho adequado: basta fazer mais alguns testes sempre que fizer um check-in. Mantenha um gráfico na parede mostrando quantos testes falham ao longo do tempo. Outros verão: talvez eles optem por participar.
Não há uma resposta fácil.
fonte