Test Driven Development (TDD)
No primeiro momento, parece que criamos testes para sistemas com código de produção já implementado e executando e que precisam ter sua qualidade verificada. Porém, uma desvantagem dessa abordagem é que isso faz com que percamos o "feedback de design" que nossos testes podem nos dar. Por feedback de design, queremos dizer as impressões de que nosso projeto está correto (modelagem de classes e comunicação entre elas).
O Test-Driven Development (TDD) propõe o contrário: escrever os testes antes do código de produção.
Além disso, o TDD prega que nenhum código funcional deve ser escrito se não for ajudar a fazer passar um teste que está falhando. Dessa maneira, nos guiamos apenas para implementar o que é necessário, sem adicionar complexidade e reduzindo o escopo das possíveis falhas que o software venha a ter.
Basicamente o TDD se baseia em pequenos ciclos de repetições
Ciclo/Fase Vermelha
Ciclo/Fase Verde
Ciclo/Fase Refatoração
Ciclo/Fase vermelha
Nessa fase, você vai escrever código para testar funcionalidades como se elas já estivessem implementadas (mesmo não estando). Você NÃO deve pensar em como fará a implementação. Ao invés disso, o foco deve ser o que o código vai realizar, se focando apenas no que está escrito no requisito.
Neste momento, você está projetando o seu código. Perguntas frequentes dessa fase são:
"Eu preciso deste método?"
"Ao invés de retornar um objeto do tipo X, que tal um do tipo Y?"
Não crie testes para funções que você talvez necessite. Concentre-se em cumprir o que a funcionalidade pede, assim o risco de inserir bugs é menor
Ciclo/Fase Verde
Nesta fase, você irá escrever o código de produção, que irá fazer com que o teste seja bem sucedido, lembrando de escrever apenas o código que faça o teste passar! Não escrevemos todo o código da implementação porque uma simples tarefa é menos propensa a erros.
Uma vez que estamos nessa fase e os testes passam, nós temos:
Código de teste para um cenário dessa funcionalidade
Código que executa essa funcionalidade
O teste vai nos dar a garantia de que qualquer alteração que gere um bug no código executável vai ser apontado pelo teste que escrevemos. Sendo assim, podemos passar para a última fase
Ciclo/Fase Refatoração
Nesta fase, você irá refatorar o código, o que significa: remover duplicações (a parte mais importante), melhorar o código em termos de desempenho, melhorar o código em termos de legibilidade e outras atividades relacionadas a melhoria do seu código.
Importante reforçar que, agora que já passamos das fases vermelha e verde, essa fase não pode fazer os testes falharem novamente. Na prática, todo código que já passou pelas fases vermelha e verde, está na fase de refatoração, fazendo com que sempre tenhamos segurança em mudar um código sem a preocupação de gerar bugs, pois estes serão identificados prontamente pelos testes já escritos.
Realizar a fase vermelha e verde segue a idéia de programar para interfaces e não para implementações
Pense no teste mais simples possível para começar e vá incrementando e desenvolvendo novos testes a medida que as fases vão avançando ou que você se sente mais a vontade com o requisito que está implementando e testando.
Last updated
Was this helpful?