[quote=carol_programadora]Oie a todos.
Galera queria saber a opinião de vocês:
TDD é uma das práticas mais importantes da XP.
[/quote]
Primeiro é preciso deixar bem claro que TDD não é uma das práticas do XP. A prática do XP é criar testes antes do codigo e sempre criar testes. Isto não é a mesma coisa que TDD. TDD é Test Driven Design, é uma metodologia de design e não de teste.
Se vc quer criar um codigo e vc já sabe como será a classe vc não precisa de TDD , o design já está pronto. Mas precisa do teste que garante que a classe funciona. Do outro lado se vc usou TDD para desenhar a classe os testes que usou para isso podem não garantir que funciona, vc ainda precisará de adicionar testes unitários.
TDD e Cobertura de Testes não são a mesma coisa. XP pede que o teste exista e esteja pronto antes das classes a testar. É o ciclo verde-vermelho-corrige. Vc altera apenas erros na implementação,não o modelo.
TDD usa testes, não necessáriamente com cobertura, para evoluir o design. É o ciclo verde-vermelho-desenha-altera.Vc altera o modelo e por conseqüência a implementação. São coisas diferentes.
Dito isto, na minha opinião, o ciclo verde-vermelho-corrige é obrigatório.Ter testes unitários de integração, etc… é obrigatorio.
Utilizar TDD é opcional. Usar TDD para design pode ser perigoso porque é um processo de tentativa-erro demorado. É interessante quando vc está explorando algo que nunca ninguém fez, mas se vc está fazendo sistemas comuns é provável que outras *DD o ajudem mais como DDD ou FDD. Ou mesmo a pura e simples OO junto com boas práticas.
Teste unitário é mandatorio em todas as metadologias. TDD é opcional em todas. Todos os Driven são opcionais porque são caminhos para guiar o processo, não são o processo em si.
Todas as metodologias, RUP inclusive, têm um passo de teste. Embora na RUP isso seja uma “fase” depois do desenvolvimento e na XP seja um desenvolvimento igual a criar o codigo o fato é que testes têm que existir. Como vc os coloca lá depende do estilo da metodologia, mas têm que estar lá. A diferença entre XP e RUP é que os testes são feitos antes e independentemente do codigo a testar. Isso é um nivel de garantia. Contudo na prática os proprios testes podem ter bugs e dar falso positivos e falsos negativos.
No fim, o codigo do teste é uma extenção do codigo da aplicação e ao mudar este vc precisa mudar o outro.