Qual a diferença entre TDD e Testes de Unidade?
Qual a diferença entre criar testes de unidade e desenvolver usando TDD (Desenvolvimento Baseado em Testes)?
É isso que veremos neste post. Veja nesta página os posts da série sobre TDD.
TDD não é Teste de Unidade
TDD não é apenas criar testes de unidade depois que o código está pronto.
TDD é seguir um processo para desenvolver o código em conjunto com os testes de unidade. E esse processo envolve criar os testes em conjunto com o código, de forma que ambos avancem no mesmo passo.
Desenvolver software é como correr uma maratona: é um processo longo, difícil e exige treinamento.
Seguindo com esta analogia, o código de produção e os testes podem ser considerados as duas pernas do atleta.
Criar testes depois do código de produção é como pular com um pé só por todo o percurso e depois tentar seguir o mesmo caminho pulando com o outro pé.
Aprendendo a Programar com TDD
É fato que dificilmente se ensina, ou mesmo se introduz, o TDD quando aprendemos a programar.
Aprender a programar já é uma tarefa desafiadora. Uma exigência adicional, como a de criar testes ou de seguir o processo do TDD, acabaria se tornando uma barreira para a aprendizagem.
Voltando à analogia, na programação, primeiro aprendemos a completar a maratona pulando com uma perna só.
TDD é outro aprendizado, além da programação. Seguir seu o processo do TDD é outro exercício que também precisa ser treinado e repetido. É preciso aprender a programar para depois aprender a programar com TDD.
Veja neste post as Três Leis do TDD. TODO LINK
Um Pé de Cada Vez
De qualquer forma, completar uma maratona é um grande feito. No entanto, é mais fácil e mais agradável avançar até o fim um pé de cada vez.
Se você quer ou precisa criar testes de unidade, é muito mais agradável criá-los junto com o código.
Escrever testes de unidade não é minha atividade favorita. Para mim é monótono e entediante verificar a funcionalidade de um código que já funciona.
Usando o TDD, ou seja, criando os testes em conjunto com o código de produção, os testes deixam de ser um passo adicional e passam a fazer parte do processo de desenvolvimento do código de produção.
Considerações Finais
TDD é um processo de desenvolvimento de software que desenvolve testes de unidade em conjunto com o código de produção.
Você pode criar testes de unidade sem usar o processo do TDD. Porém o oposto não é possível.
Usar o TDD melhorou a minha perspectiva ao criar os testes de unidade.