Desenvolvimento orientado a testes

“O Desenvolvimento Orientado a Testes é um método da engenharia de software que visa a melhoria da qualidade.”

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.