Os 5 níveis do desenvolvedor nos testes automatizados
agile, cursos, engenharia, java, scrum, tdd, testes janeiro 15th, 2009Alguns acontecimentos me fizeram refletir um pouco sobre a relação entre o desenvolvedor de software e os testes automatizados.
Muitas vezes parei pra explicar pra vários colegas de trabalho sobre a importância do assunto, fiz pair-programmming pra ensinar como se faz, em fim, investi muito tempo pra ajudar diversas pessoas com isso. Por incrível que pareça, tem muiiiiiita gente que ainda não entendeu muito bem. Portanto, resolvi classificar a relação entre o desenvolvedor e os testes automatizados em 5 níveis.
São eles:
- Ignorante: Esse é o nível no qual o desenvolvedor não sabe direito o que são testes automatizados ou sequer ouviu falar sobre o assunto (acredite, ainda tem gente assim em pleno 2009).
- Indiferente: Nesse nível, o desenvolvedor já sabe o que é, mas acha que essa prática/tecnica não serve pra nada. Apenas toma tempo e atrasa a entrega do produto que está sendo desenvolvido. A sensação dele é que sem os testes a entrega seria mais rápida (e a quantidade de bugs tb vão aparecer mais rápido).

- Prequiçoso: Nesse nível eu encontro muita gente. É nesse nível onde a ficha caiu mas o camarada não toma coragem pra aprender a fazer os testes automatizados. Ainda existe o medo de perder muito tempo com essa prática e a preguiça impera, impedindo o progresso.
- Decidido: Esse pra mim é o nível mais importante. É nessa hora que o desenvolvedor se dá conta que não dá mais pra desenvolver software sem testes automatizados. É nessa hora que o cara pensa: “como eu pude desenvolver sem testes até hoje?”. É nesse momento que inicia-se o aprendizado.
- Profissional: Nesse nível, o desenvolvedor já não se sente mais confortável desenvolvendo sem testes automatizados. Desenvolver sem testes o incomoda profundamente. Nesse momento o mesmo está maduro quanto a importância dos testes e a aplicação na prática. O mesmo começa a se tornar um evangelista para os demais desenvolvedores e sempre que pode, fala sobre o assunto. Nesse momento o desenvolvedor pode realmente dizer que é um profissional, pois hoje em dia não se admite mais desenvolver sem ter testes automatizados que garantam qualidade daquilo que se desenvolve.
Em qual nível você está?


janeiro 15th, 2009 at 15:05
Estou em algo parecido com um 4,5. Estou decidido a fazer, jã até comecei a fazê-lo, mas ainda tenho que aprender um bocado, bem como saber o que e quando testar….
janeiro 15th, 2009 at 20:16
Eu estou no nível três. Acho que no 3.5 na verdade. Pois estou começando a tomar vergonha na cara e vou praticar em breve!
janeiro 15th, 2009 at 20:18
Fala emerleite !!, bom, creio que estou chegando próximo ao nível 4, diria que 3.8, com sua ajuda
abraços !!
janeiro 16th, 2009 at 10:09
Bom, eu não sou desenvolvedora, sou Analista de Testes. Adaptando esses níveis para profissional de testes, me considero uma iniciante do nível 4, pois sempre tive consciência mas não tive coragem para começar. Agora estou fazendo meus primeiros scripts de teste.
fevereiro 10th, 2009 at 16:26
[...] 2 vezes antes de colocar aquela habitual gambiarra no seu código, (2) vai pensar bem antes de concluir alguma coisa sem devidos testes automatizados e (3) vai ser muito mais responsável com o código que você está [...]
abril 16th, 2009 at 2:08
[...] 2 vezes antes de colocar aquela habitual gambiarra no seu código, (2) vai pensar bem antes de concluir alguma coisa sem devidos testes automatizados e (3) vai ser muito mais responsável com o código que você está [...]
outubro 7th, 2009 at 11:03
existe um sexto nivel aonde o programador sabe o risco que corre quando abre mão do teste. por exemplo, vou fazer um shell script de 2 linhas que move varios arquivos para outro diretorio – não preciso de testes para isso dependendo do uso que vou fazer. outro bom exemplo é vc trabalhar com interfaces ricas aonde o custo de automatizar tudo é muito caro frente ao projeto como um todo, nesse caso vc abre mão de certos testes para cobri-los de forma mais inteligente. Qual a diferença pro 5 lugar? Não me doi desenvolver sem testes nesse caso, pois é uma escolha profundamente racional.
outubro 18th, 2009 at 14:52
@tiago
Esse nível que você mencionou está no nível 5. O desenvolvedor profissional sabe o que deve ser testado e quando. Sempre defendi que 100% de cobertura não garante nada, mas testar corretamente o comportamento do Software. Coloquei esse nível 5 como um nível de maturidade de tomada de decisões, incluindo o que você falou. De qualquer forma, valeu pelo comentário, pois não deixei isso muito explicito :p
Quanto ao seu exemplo do shell script de 2 linhas, me parece que você optou por não testar pois era um script que usava funções já testadas por quem criou. Esse tipo de exemplo na minha opinião não faz muito sentido.
Quanto ao custo de automatizar eu concordo plenamente contigo. Em conversas que tenho com colegas no IM, Twitter ou até pessoalmente, deixo sempre claro que se tenho um teste que levo 5 segundos para realizar manualmente e preciso testar com pouca frequência, mas levarei 2 semanas para automatiza-lo, logicamente não vale a pena automatizar. Mas pela minha experiência esses casos são bem raros e são mais usados como desculpa para não testar
Abraços!!!