2
respostas

Uso de TDD

Olá,

Vejo pessoas dizendo que usar TDD é bom principalmente quando se vai implementar uma nova funcionalidade que ainda não se sabe como vai ficar. Comigo é justamente o contrário. Só consigo usar TDD quando sei exatamente o que vou fazer.

Quando não sei como o código vai ficar e tento usar TDD, começo escrevendo o teste e ele falha, OK. Depois vou para a implementação e percebo que o teste não é nem um pouco realista, que a API não poderá ser aquela, as pré-condições são diferentes do que imaginei, etc. No fim das contas acabo reescrevendo o teste pra se adequar à implementação em vez de fazer a implementação passar nos testes.

Isso é comum? O que as boas práticas de TDD dizem sobre esse tipo de situação?

2 respostas

Olá Alex !

No livro do Kent Beck - Tdd Desenvolvimento Guiado por Testes ele começa a criar uma aplicação de maneira bem simples de modo que os testes passem , depois vai incluindo de forma gradual e iterativa novas funcionalidades até que a funcionalidade fique da maneira que se espera. Esta mudança de paradigma TDD(testar antes que exista até mesmo o código a ser testado) não é fácil de acostumar. O mais importante é você ter uma bateria de testes que te dê confiança para alterar seu código sem medo e principalmente colocar em produção com segurança.

Tem esse post do Mauricio Aniche um dos instrutores da Alura que é muito bom, talvez seja isso que esteja faltando em sua pratica: http://www.aniche.com.br/2010/11/cuidado-com-seus-baby-steps/

Olá Alex, tudo bem? Acredito que é questão de costume, não é tão simples inicialmente definir bem como a API ficará ao final, o nome do método poderá mudar e na hora da implementação você pode sim acabar encontrando problemas que não havia pensado antes, como por exemplo a ausencia de um parametro ou outro.

Estamos muito acostumados a escrever direto a implementação e inverter o processo não é tão simples. Solução? Muita prática!

A pergunta que eu estou martelando aqui é: Será que você não está testando um comportamento não tão simples e que pode ser quebrado em partes? Será que na hora de implementar o teste, não está adicionando complexidade?

Acredito que inicialmente, esse comportamento deve ser comum, mas que com prática, ele se torna cada vez menos frequente e isso não chega a ser um problema.

Uma dica? Pense um pouco mais nos primeiros momentos sobre o comportamento que deseja testar, isso pode tomar algum a mais tempo no inicio, mas com prática, vai ficar mais fácil e rápido.

É isso, não sou nenhum especialista na area, mas deixo ai minha contribuição! Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software