Ives da Silva Pires
TDD implica escrever o código de teste antes do código de produção, um teste de cada vez, tendo certeza de que o teste falha antes de escrever o código que irá fazê-lo passar.
É iterativo e incremental.
Não se limita a modelos ágeis.
É uma prática para desenvolvimento de testes unitário que pode utilizar o processo Red-Green-Refactor.
Conjunto de princípios para escrever bons testes unitários:
F (Fast) - Os testes devem ser executados rapidamente para fornecer feedback rápido aos desenvolvedores.
I (Isolated) - Cada teste deve ser independente e não deve depender de outros testes ou do estado do ambiente.
R (Repeateble) - Os testes devem produzir os mesmos resultados sempre que forem executados no mesmo ambiente.
S (Self-verifying) - Os testes devem determinar automaticamente se passaram ou falharam, sem intervenção humana.
T (Timely) - Os testes devem ser escritos o mais cedo possível no ciclo de desenvolvimento, antes mesmo da implementação do código de produção.