Testes automatizados, test first e TDD. Quando onde e porque?

Olá a todos, a discussão que quero levantar é a seguinte:

1 - diferenciar os termos: testes automatizados, test first e TDD, apesar de relacionados, são coisas diferentes. Gostaria de saber dos colegas o que cada um entende por estes termos.

2 - aplicabilidade: sabemos que podemos automatizar testes em diferentes camadas do nosso software, desde a persistência até a interface. O que eu gostaria de discutir nesse sentido , e saber da experiência dos colegas é quando vocês acham mais adequado usar um ou outro. Por exemplo, é possível projetar uma interface com TDD ? e classes de acessam o banco de dados ? é viável escrever um teste de integração antes da integração ?

Só posso falar um pouco sobre os testes funcionais pois os outros não tem necessidade pra mim.

O funcional logicamente é feito depois de desenvolver a funcionalidade e atua no nível mais alto, o real, ou seja, automatizando o usuário usando à vera, utilizando Selenium por exemplo. Muitas vezes não adianta fazer um monte de testes de métodos num teste de integração, se por algum motivo quebrar algum javascript ou outra coisa qualquer no meio do caminho entre as ações do usuário e o retorno visual esperado.

[quote=rmendes08]Olá a todos, a discussão que quero levantar é a seguinte:

1 - diferenciar os termos: testes automatizados, test first e TDD, apesar de relacionados, são coisas diferentes. Gostaria de saber dos colegas o que cada um entende por estes termos.
[/quote]

Ao meu ver estas tecnicas estao contidas uma nas outras da seguinte forma:

[TDD [test first [automated test]]]

  • automated tests: uso de qualquer ferramenta que substitua testes manuais (jUnit, Selenium etc)
  • test first: criacao de qualquer teste automatizado antes do codigo de producao
  • TDD: ciclo “teste automatizado -> codigo producao -> refactoring” + baby steps

Melhor deixar outra pessoa responder:

via http://stackoverflow.com/a/153565

A resposta para todas eh sim. Por outro lado, principalmente para quem esta comecando, eh muito facil acabar tendo mais problema do que beneficios tentando aplicar a tecnica.

1 curtida