domingo, 13 de janeiro de 2008

TDD - Os testes devem ser feitos antes ou durante a implementação?

A resposta é clara, DURANTE. Porém, existem vertentes que tratam o "DURANTE" de maneira mais ou menos radical, bem vou tentar explicar o conceito:

A vertente 1 acredita que o código de testes deve ser feito "ao mesmo" tempo que a implementação da funcionalidade. Bem, sejamos mais claros, os praticantes dessa vertente acreditam que deve ir descobrindo o que o método vai fazer a medida que o vai escrevendo.

Nessa abordagem, o FeedBack é mais rápido.

leitura recomendada

A vertente 2 considera a possibilidade de começar "ANTES" e continuar "DURANTE".

Num comentário do Thiago Arrais sobre a leitura recomendada acima, a idéia de fazer o teste "DURANTE" a implementação tem um conceito menos literal, veja a frase: "Escreva os testes que conseguir imaginar antes de começar a escrever o código...".

Como o próprio Thiago se preocupa em "não demorar demais pensando", esta técnica deve ter este cuidado tomado, então concluímos essa abordagem como:

Faça os testes que você idealizou imediatamente, como num validador de PDF, essa técnica diz, por exemplo, que você já pode fazer os testes pra dois CPFs diferentes(um certo e um errado), antes mesmo de implementar a primeira linha do código do validador, você também pode testar um CPF com menos dígitos, com mais dígitos, etc.

Nessa abordagem, a maior vantagem é "pensar mais" antes de começar a implementação.

Eu sou um seguidor da segunda vertente, isso porque considero mais fácil de fazer e obtive melhores resultados fazendo dessa forma, porém não sou nada radical quanto a isso, acredito que existam várias situações em que a primeira vertente seja mais indicada. Também não acho que exista a "forma certa" de fazer, o certo é que vale a pena ser feito.