desenvolvimento, padroes, tests

TDD: Rodar testes ANTES de implementá-los

A idéia básica da programação orientada a testes segue a seguinte estrutura:

1. Escreva um novo teste que faça asserção num método de produção (existente ou não)
2. Implemente em produção APENAS a estrutura mínima para que o teste seja compilável, ou seja, crie o método “crú” se ele não existir ainda
3. Compile e rode os testes
4. Se os testes passarem, volte para o passo 1, senão altere o código e volte para o passo 3

Pode parecer estranho o passo 3 mandar que se rode os testes sabendo que definitivamente ele não vai passar na primeira vez que um método de produção for criado. Afinal no passo 2 a estrutura mínima era basicamente a implementação da assinatura do método, com eventuais retornos dummies (return 0 ou return null).

Então por que é tão importante forçar um erro no teste tão prematuramente? Por que não tentar programar alguma funcionalidade mínima para então rodar o primeiro teste?

Para deixar a barrinha vermelha o quanto antes!!!

Um novo teste não concluído pode ser esquecido enquanto temos uma barrinha verde dando a falsa impressão de que o estado atual do desenvolvimento não tem problemas.

O teste esquecido e a barrinha verde conduzem a conclusão do trabalho (liberar código quebrado para revisão, começar a trabalhar em outro bug, etc…).

O feedback de testes sempre deve ser: “há algum teste que foi considerado, mas que o sistema ainda não trata”.

Esse tipo de postura no TDD é chamada de Programação por Intenção: chama-cria-verifica-corrige.

Referência:
http://improveit.com.br/xp/praticas/tdd

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s