O Desenvolvimento Orientado a Testes é um método da engenharia de software que visa a melhoria da qualidade. Este método é aplicado durante o desenvolvimento de um software e, basicamente, consiste em rotinas de código que executam de forma automática, cenários já estabelecidos pelo desenvolvedor, com o objetivo de validar uma funcionalidade do sistema.
Quem deu início as abordagens ágeis de desenvolvimento foi o engenheiro de software americano Kent Beck, em 2003. Seu objetivo era aprimorar tanto a qualidade de software quanto a rápida resposta às mudanças de requisitos. Sua abordagem é considerada o berço do Desenvolvimento Orientado a Testes (TDD).
Características
O modelo de Desenvolvimento Orientado a Testes é composto por vários tipos de testes, alguns deles são: teste unitário, teste de integração e teste de aceitação. Conforme dito anteriormente, esses testes devem funcionar de forma automatizada, deixando de ser uma funcionalidade específica e se tornando algo de rotina.
Outra característica interessante é a possibilidade de efetuar os testes automatizados no momento de deploy do novo código. Dessa forma, podemos configurar um número mínimo de acertos necessários para que a funcionalidade seja colocada no repositório, isto é, caso o novo código não passe nos testes, o repositório não será atualizado.
A utilização de testes automatizados é muito bem aplicada em projetos de médio e grande porte, onde o tamanho da equipe é considerável, pois o desenvolvimento em conjunto está mais sucetível a erros, que podem ser reduzidos com o uso dos TDD’s.
Vantagens
A utilização de testes automatizados, além de incentivar a simplicidade do código – pois é necessário ter uma boa arquitetura para isso – aumenta a confiabilidade do sitema, levando em consideração que suas funcionalidades estão constantemente sendo testadas.
Outra vantagem interessante está no auxílio para o entendimento ou elaboração de documentação, isto porque através um teste automatizado é possível entender em qual contexto ou objetivo uma determinada funcionalidade está ou possuí. As manutenções e refatorações também ficam mais seguras, pois como citado anteriormente, a cada deploy de alteração os testes são reexecutados.
Desvantagens
O desenvolvimento de testes automatizados, dos diferentes tipos, demanda maior tempo e conhecimento dos programadores, portanto a grande desvantagem está na necessidade de alocar recursos para isso, pois projetos podem ficar mais longos e uma equipe pode precisar de mais reforços.
Conclusão
Sem dúvidas os TDD’s trazem uma melhora bastante significativa no processo de desenvolvimento. Tenho em mente que é extremamente válida a implementação desse processo, mesmo que recursos adicionais precisem ser alocados. Contudo, após a implementação, todo tempo investido será convertido em confiabilidade, simplicidade no desenvolvimento e facilidade de manutenção e identificação de bugs.