TDD: Fundamentos do Desenvolvimento Orientado a Testes

O TDD é a sigla para Test Driven Development ou Desenvolvimento Orientado a Teste.

Mas exatamente, o que isso significa? Basicamente, o que queremos dizer é que antes de desenvolver os códigos de produção de um software, são desenvolvidos os testes.

A primeira impressão é de que essa ideia de pensar em testes antes de ter um produto que não existe é um contrassenso. Porém, faz sentido. Principalmente porque o TDD trabalha com redução de erro, antecipando potenciais problemas e suas respectivas soluções.

O TDD surgiu nos anos 1990, mais ou menos na mesma época em que surgiram as metodologias agile e Extreme Programming (XP), por Kent Beck.

O intuito era de encorajar o desenvolvimento de códigos simples, para que pudessem ser checados e validados com uma técnica igualmente simples.

As etapas do TDD

Para que o TDD funcione de forma efetiva, é recomendado que se sigam alguns passos, baseados em três fases:  Red, Green e Refactor.

  1. Red (Vermelho): É a primeira fase do ciclo, em que o desenvolvedor escreve um código de teste para uma nova funcionalidade, ainda que não tenha o código de produção elaborado. Provavelmente, esse teste vai falhar, mas é justamente essa a intenção…
  2. Green (Verde): Esta é a segunda etapa, em que o programador constrói o código que irá passar no teste da etapa anterior. É importante que somente esse código seja escrito.
  3. Refactor (Refatorar): Esta é a etapa final, para limpar o código, melhorar estruturas, diminuir as linhas e aprimorar a performance.

Contudo, para implementar os testes o desenvolvedor precisa compreender com detalhes a especificação do sistema e as regras de negócio.

Outro ponto importante é pensar em testes para o conjunto de unidades e não esquecer de salvá-los.

Assim, fica garantida a cobertura completa e a possibilidade de reproduzir os testes no futuro, caso o cliente queira alterar alguma funcionalidade. Desta forma, o TDD funciona como deve.

O modelo F.I.R.S.T. dá uma ótima orientação de quais itens devem ser considerados na hora de executar os testes:

F (Fast) – Rápidos

I (Isolated) – Isolados

R (Repeateble) – Reproduzíveis

S (Self-verifying) – Auto verificáveis

T (Timely) – Oportunos, no momento certo

Atualmente, a prática do TDD pode ser utilizada em diversas linguagens, tais como C#, Java, Java Script e etc. Mais do que a linguagem de código, o importante do TDD é o método e a filosofia de seguir os três passos.

Quais as utilizações do TDD?

O método é tão benéfico que há quem diga que não há desvantagens em usar o TDD.

O principal benefício é a capacidade de reduzir a quantidade de pequenos bugs pelo meio do código e garantir o melhor resultado final possível. No entanto, alguns programadores vão afirmar que testar cada pedacinho do código de implementação vai tomar muito tempo.

Resta apelar ao bom senso. Optar ou não pelo TDD vai depender do tamanho do projeto, da cultura da empresa, do nível de exigência do cliente, entre outros fatores.

O importante é avaliar o custo benefício entre investir tempo testando durante a construção do código ou testar tudo de uma vez no final.

Já explicamos aqui quais as vantagens de implementar o TDD na rotina, mas vale reforçar o resultado final do código – que ficará mais limpo, fácil de passar por um refactoring e, no fim, o código fica com a linguagem mais direcionada ao negócio que ele atende.

Agora que você sabe quais os parâmetros de implantação do TDD, que tal descobrir mais sobre processos de negócios? Conheça os serviços do Grupo Mult.