Ordem do código de desenvolvimento orientado a teste

8

Estou desenvolvendo meu primeiro projeto usando desenvolvimento orientado a testes. Estou usando o Zend Framework e o PHPUnit.

Atualmente, meu projeto tem 100% de cobertura de código, mas não sei se entendi em que ordem devo escrever meu código.

Devo escrever meu teste PRIMEIRO com o que meus objetos devem fazer, ou escrever meus objetos e testá-los?

Eu tenho trabalhado na conclusão de um controlador / modelo e, em seguida, escrevendo um teste para ele, mas não tenho certeza se é disso que se trata o TDD.

Algum conselho?

Por exemplo, escrevi meu plug-in de autenticação e meu controlador de autenticação e testei se eles funcionam corretamente no meu navegador; então me sentei para escrever os testes para eles, o que provou que havia alguns erros lógicos no código que funcionavam no navegador.

Bobby Kostadinov
fonte

Respostas:

20

Teste primeiro. O TDD também é chamado de IOW "desenvolvimento primeiro teste".

O que você está trabalhando não é TDD.

TDD é 1-2-3:

  1. Escreva um teste com falha.
  2. Faça passar (cometer quaisquer pecados e atalhos durante o caminho).
  3. Remova duplicidades (lógicas, não apenas físicas).

Em palavras mais curtas, isso também é anunciado como "faça falhar / faça funcionar / faça certo".

Mais no livro impressionante de Kent Beck, Test-Driven Development By Example.

Herby
fonte
11
+1 Essas três etapas também são conhecidas como "Refator vermelho-verde".
Fenton
2
Fazer passar significa: Escreva apenas tanto código que passe, não mais! Isso é muito importante.
Ollins 19/09
2
É usado para ser chamado Test-primeiro desenvolvimento, mas isso é enganoso: não se trata de escrever seus testes primeiro, é sobre deixar seus testes conduzir o projeto e desenvolvimento. Escrever seus testes primeiro é simplesmente um pré-requisito para isso - como seus testes podem conduzi-lo se eles ainda não existem? Mas você pode escrever seus testes primeiro e ainda não deixá-los guiá-lo, e então você não está fazendo TDD.
Jörg W Mittag
3
@deltree erm ... Não concordo com todas as afirmações que você fez!
Froome
2
exceto "cobertura de código! = TDD": p
Froome