Desenvolvimento de Software Fábrica de Software

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.