Desenvolvimento de software guiado por testes
Quando expostos pela primeira vez aos conceitos de testes de software automatizados, é comum imaginarmos que trata-se apenas de uma forma para verificarmos se o software está se comportando conforme o esperado. Mas testes automatizados nos trazem uma série de benefícios que vão muito além disso.
O principal objetivo do TDD (test driven development) ou desenvolvimento guiado por testes é escrever um código melhor. Começar o desenvolvimento através dos testes nos ajuda a identificar designs de código muito rígidos ou sem foco. Além disso quando precisamos corrigir ou evoluir o design de nosso sistema os testes nos dão uma rede de segurança, através dos testes de regressão, para que tenhamos certeza que nossas alterações não irão impactar funcionalidades que já estavam funcionando anteriormente.
A realização da prática de desenvolvimento de software guiado por testes dá ao programador uma liberdade muito maior para melhorar o software continuamente, sendo assim uma das ferramentas fundamentais para que seja viável atingir a entrega contínua (continuous delivery) de sofware em produção
Mais velocidade
Em times que não seguem TDD é bastante comum a produtividade se degradar com o tempo. Nas primeiras iterações as tarefas são entregues dentro do prazo mas a produtividade começa a diminuir exponencialmente conforme o crescimento do projeto. Como efeito colateral o lead time aumenta e os membros do time se sentem inseguros, deixando de publicar novas versões com frequencia. A gestão de configuração fica mais complexa até chegar um momento em que uma simples alteração no código pode demorar dias para chegar ao ambiente de produção.
A velocidade de construção e evolução dos sistemas tende a se manter mais estável em times que já internalizaram o desenvolvimento de software guiado por testes. Com a ajuda deste processo, os membros do time se sentem mais confiantes para entregar software em produção com mais frequencia. A consequencia disso é que todo o processo de gestão de configuração e gestão de projetos acaba ficando mais simples e o usuário final mais feliz.
Conclusão
A aplicação que você está desenvolvendo hoje vai sofrer alterações inesperadas. A melhor forma de tentar se adaptar às mudanças que estão por vir de forma mais rápida, segura e com menor custo é escrevendo um código melhor. E o desenvolvimento de software guiado por testes pode te ajudar a fazer isso.
Parte deste texto foi inspirado pelo livro Growing Object-Oriented Software, Guided by Tests, de Steve Freeman e Nat Pryce.