Oi pessoal, no post de hoje eu procuro mostrar como os testes podem ajudar no andamento de um projeto.
Antes de falar sobre testes, vamos falar sobre a consequência da identificação de um bug no projeto. Quando um bug é detectado, ainda na fase de desenvolvimento do projeto, podemos dizer que o custo de sua correção é X. Entretanto, se esse mesmo bug nesse mesmo projeto for detectado somente quando o projeto já estiver em produção, podemos dizer que o custo de sua correção será muito maior que X. Isso é claro para todos os desenvolvedores e, infelizmente, não há como contestarmos contra isso. Deixo, então, a seguinte pergunta no ar: Por que não damos ao teste a mesma importância que damos ao código do produto?
Bem, eu não sei dar uma resposta única e correta para essa pergunta, mas tenho a minha opinião. Explico: em projetos que cujos prazos de entrega são negociados por pessoas que não entendem na lógica do negócio, existe uma grande chance de acontecer o chamado “faz nas coxas porque temos que entregar tudo semana que vem”. Em projetos desse tipo, em geral, não há conhecimento técnico sobre o custo de desenvolver aquilo que deve ser entregue. Inclusive, o tamanho da equipe pode ser definido de acordo com o “tempo que se consegue”. Tem muito tempo? Vamos com uma equipe pequena. O prazo está apertado tempo? Então enche o projeto de gente que vai dar tempo.
Bem, sabemos que as chances de erro em um cenário como o exposto acima são enormes. Podemos perceber também que, nesse tipo de projeto, o prazo é algo tão obscuro que fica difícil dizer se o projeto está tendo um bom andamento. Bem, nem preciso dizer que trabalhando nesse contexto os testes fatalmente irão ficar de lado, não é?!?
Aplicando o Scrum em nossos projetos procuramos não dar margem para esse cenário. Como trabalhamos com iterações curtas e com o auxílio do quadro de tarefas, conseguimos visualizar o andamento do projeto. Ainda, nós estimamos cada uma de nossas histórias, sempre incluindo nela o esforço necessário para a realização de testes automatizados.
Imagine um sistema enorme, dividido em vários módulos, com linhas de código na ordem de grandeza de um milhão. Agora imagine o custo da manutenção de um bug nesse sistema em produção. Pior ainda, quanto maior o sistema, maior é a chance de corrigir um bug e, por consequência, acabar gerando outro.
Um dos objetivos dos testes automatizados é: uma vez que a funcionalidade foi implementada, o teste deve garantir que ela irá funcionar sempre. Se o teste falhar é porque algum trecho de código foi modificado e o ajuste deve ser feito nele para garantir que o teste volte a funcionar. Esse tipo de abordagem diminui bastante o custo de manutenção do projeto, pois os bugs, em sua maioria, são detectados ainda na fase de desenvolvimento.
Espero ter convencido todos a escreverem testes! Até o próximo post!