Uma Carta Aberta de um Teste @Ignored
Todo mundo já fez isso. Um teste para de funcionar, daí a gente joga uma @Ignore em cima dele e seguimos em frente. Bem, já era hora dos testes terem a chance de nos dizer algo sobre essa prática.
Inspirado em...
Esse texto foi uma tradução livre para pt-BR do excelente artigo em inglês An Open Letter From an @Ignored Test escrito pelo Mauri Edo, que é engenheiro de qualidade na Atlassian. Para quem não conhece a empresa, ela está a frente de produtos e serviços como Jira, Bitbucket, Trello, SourceTree, entre outros. Portanto, obrigado Mauri e Natalie Mendes por me permitirem traduzir e publicar o artigo aqui no blog.
Todos nós já fizemos isso: um teste perfeitamente funcional se torna instável e ao invés de levantarmos as mangas imediatamente e fazermos nosso dever de casa, nós metemos uma anotação @Ignore
nele. Mas será que nos importamos com os sentimentos dos testes ? Não, nós não nos importamos. Por esse motivo,aqui vai a carta de um teste @ignored que acha que deveríamos nos importar...
Caro desenvolvedor,
Faz algum tempo que eu espero para falar com você, mas as palavras nem sempre vêm fácil. Tivemos alguns momentos divertidos juntos. Eu ainda me lembro da primeira vez que eu te avisei sobre um pequeno bug em seu código, e como você estava feliz por me ter em sua vida! Você se lembra disso? Eu também me lembro da primeira vez que você me refatorou para me tornar mais eficiente e como eu me senti bem escrito depois… ah, bons tempos!
Eu devo tudo a você, eu sei. E eu sou grato por isso. Eu não existiria se não fosse por você. Você achou que eu era necessário daí você me criou, e a partir desse momento estou a seu serviço, e sou feliz por isso, pois você me deu um propósito. Eu quero capturar bugs para você. Eu quero te dar segurança de que as coisas vão continuar funcionando depois que você mudar algo. Eu quero tornar sua vida mais fácil, e você sabe que eu posso fazer todas essas coisas, eu sei que você sabe.
Mas então, sem uma explicação lógica, eu comecei a falhar vez ou outra, sem nenhum motivo aparente. Alguma coisa estava errada comigo. Eu era capaz de continuar funcionando quase que normalmente, mas eu não conseguia evitar de tornar o build vermelho, estava fora do meu controle. Eu me tornei... instável. Minha instabilidade te deixou aborrecido, e eu não estou bravo por isso, pois isso também me deixa aborrecido. Eu não era mais confiável. Eu perdi meu propósito. Neste ponto, tenho que dizer, me machuca lembrar como você reagiu depois de algumas semanas de instabilidade: Em vez de investir um pouco de amor e dedicar algumas horas para me consertar e me colocar nos trilhos de novo, você me anotou com @Ignore e me abandonou em uma base de código imensa e solitária.
Minhas instruções e validações não evitam que eu derrame uma lágrima quando penso nisso. Para um teste automatizado, ser instável é péssimo - mas pelo menos eu passei com sucesso de vez em quando, e minhas falhas foram um lembrete de que eu precisava da sua magia; mas ser ignorado, meu amigo… foi o fim da gota. Se há um inferno para testes automatizados, definitivamente é ser anotado com @Ignore
e ser esquecido, ser rodeado por testes bem sucedidos que ficam verde e não poder me juntar à eles, assistindo cada build passar e não estar entre eles, sentado entre infinitas linhas de código, esperando desesperadamente, precisando de uma correção e não recebendo os devidos cuidados… Eu não desejaria isso nem para meus piores inimigos, os piores testes automatizados.
Não me entenda errado, eu entendo que testes automatizados possuem um ciclo de vida e eventualmente são substituídos por outros testes automatizados, melhores e mais modernos. Algumas vezes, a nossa instabilidade não pode ser resolvida, por isso precisamos ser removidos ou substituídos, e isso é OK. Algumas vezes, o código que estamos testando está aposentado, então não temos mais uma finalidade, e isso também é OK. Faz parte de quem somos. Mas perceba: Eu sou seu código também, não é? Eu preciso de atenção! Eu preciso ser implementado e refatorado adequadamente para alcançar meu objetivo! Eu preciso de revisões de código onde você olha para mim com cuidado e identifica problemas que eu possa ter porque os testes podem ter bugs também! É muito injusto olhar somente para o código de produção e, quando os testes esquecidos começam a falhar, anotá-los como @Ignore
e seguir seu dia como se nada tivesse acontecido. É revoltante!
Tudo o que eu estou pedindo é que você tome uma decisão sobre mim, ou me corrija ou me exclua, mas não se esqueça de mim! Você quebra as minhas instruções quando se esquece de mim. Os seres humanos têm problemas com decisões, e nós, as linhas de código, sabemos disso, por isso, se você precisa de um build verde e precisa me ignorar durante algumas execuções, tudo bem. De verdade! Mas se você não vai voltar imediatamente e encontrar o que está errado comigo e por que eu tenho estado instável até agora, tenha alguma decência pelo menos: Crie uma tarefa no seu bug tracker para que outro possa me dar a atenção que eu preciso para entrar na linha e prover algum valor novamente. Não é tão difícil, não é? Por favor? Por todos os builds verdes que tivemos juntos?
Espero sinceramente que possamos resolver nossas diferenças em breve.
Para sempre seu,
You might also be interested in these articles...
Desenvolvedores e instrutores na TriadWorks