Test Driven Development (TDD): simples, prático e efetivo
Test Driven Development (TDD ou Desenvolvimento Orientado a Testes) é um processo de desenvolvimento que se baseia na repetição de um ciclo muito curto: os requisitos são transformados em casos de teste específicos, o código é desenvolvido de forma que os testes passem, e depois o código é refatorado para garantir um código mais limpo e menos acoplado.
Esse ciclo se opõe ao desenvolvimento de software que permite a adição de código ou funcionalidades que não estão de acordo com os requisitos.
O Ciclo de desenvolvimento do TDD
O ciclo de desenvolvimento com TDD tem 3 etapas: Red, Green e Refactor:

Em primeiro lugar, você deve escrever um teste (com base nos requisitos) que falhe (Red).
Em segundo lugar, você deve criar o código deste requisito e para este teste e fazer com que ele passe no teste (Green).
E por último, você deve refatorar o código para eliminar a redundância.
Somente após essas 3 etapas, é que você deve passar para o próximo teste, código e refactoring.
Com isso, garantimos que a nova funcionalidade vai funcionar de acordo, e evitamos que a nova funcionalidade acaba quebrando outra já existente no sistema. Isso gera mais segurança durante o processo de desenvolvimento.
As 3 leis do TDD
TDD se baseia em 3 leis simples:
1 – Você não tem permissão para escrever nenhum código de produção, a não ser que seja para fazer um teste falho validar.
Pensar nos testes em primeiro lugar pode parecer estranho em um primeiro momento, mas isso força o desenvolvedor a pensar e estruturar bem a funcionalidade antes mesmo de escrevê-la.
2 – Você não tem permissão para escrever mais testes de unidade que o suficiente para falhar; e falhas de compilação são falhas.
Resumidamente, os testes devem testar a funcionalidade do requisito a ser criado. Muitos testes implicam em muito código e um teste que não tem significado real para a funcionalidade torna o ciclo ineficiente.
3 – Você não tem permissão para escrever mais código de produção que o suficiente para passar no único teste de unidade com falha.
O foco é precisão, a funcionalidade a ser criada deve ser o suficiente para passar no teste – que deve ser o reflexo do requisito inicial.
Os benefícios do TDD
Abaixo listamos alguns dos benefícios de utilizar TDD no desenvolvimento de softwares:
- Começar pelos testes exige que você considere realmente o que deseja do código.
- TDD cria uma especificação detalhada.
- TDD reduz o tempo gasto em retrabalho.
- Você gasta menos tempo no depurador.
- Você é capaz de identificar os erros e problemas rapidamente.
- O TDD informa se sua última alteração (ou refatoração) quebrou o código que estava funcionando anteriormente.
- O TDD permite que o design evolua e se adapte à sua mudança no entendimento do problema.
- TDD força a simplificação radical do código. Você escreverá apenas o código em resposta aos requisitos dos testes.
- Você é forçado a escrever classes pequenas e focadas em uma coisa.
- O TDD suporta uma interface limpa.
- O TDD cria um código que pode ser mantido, flexível e facilmente extensível.
- Os testes de unidade resultantes são simples e agem como documentação para o código. Como os casos de uso do TDD são gravados como testes, outros programadores podem ver os testes como exemplos de uso de como o código deve funcionar.
- Os custos de desenvolvimento são reduzidos.
- Qualidade é melhorada.
- Os erros são reduzidos.
O que achou dessa abordagem? Acredita que ela pode se encaixar no seu projeto?
Se você quer saber como a Keyworks pode ajudar o seu negócio, contate um de nossos especialistas.