TDD vs. BDD

October 9th, 2006 § 0 comments

Para falar a verdade, um dos aspectos que sempre me incomodou no que se refere às práticas da metodologia Extreme Programming está justamente em um dos seus pilares: TDD, ou Test-Driven Development.

Eu sempre fui um proponente de métodos ágeis, mesmo antes que houvesse um palavra ou um grupo de técnicas com os quais eu pudesse formalmente me identificar em meu processo de desenvolvimento. Mesmo assim, em minha adoção desses métodos, eu sempre me arrastei na questão de testes: alguma coisas neles me parecia contra-intuitiva, como se eu estivesse me aproximando do desenvolvimento de algum ângulo errado.

Obviamente, eu atribuía isso a alguma deficiência em minha própria compreensão do que o TDD realmente significava–possivelmente alguma impedância natural entre os meus processos mentais usuais e o estilo de programação adotado pelos proponentes e usuários do XP. O resultado, é claro, é uma certa discrepância entre a teoria e prática nos sistemas que eu vinha desenvolvendo, deixando alguma coisa a desejar no processo de verificação trazido pelos testes.

Recentemente, porém, eu encontrei uma nova reflexão sobre o processo, conhecida como BDD, ou Behavior-Driven Development. O tema não é novo, mas eu realmente não tinha visto nada sobre o mesmo ainda e depois de estudar um pouco, eu acho que o BDD realmente clareou alguns aspectos que eu achava problemáticos no TDD. Ao invés de uma linguagem declarativa passiva, como existe no TDD, o BBD representa algo mais intencional–e que também remove um pouco do estigma associado a testes.

Como eu estou usando basicamente o Ruby e o Rails para todo o meu desenvolvimento atual, obviamente soluções relacionadas ao mesmo são o que eu estou estudando agora: RSpec e ActiveSpec. A introdução ao segundo é muito boa, explicando o que está sendo desenvolvido agora, e o tutorial do primeiro fornece uma boa explicação das diferenças entre TDD e BDD.

Entre o BDD e o TDD, a diferença está basicamente na implicação de verificação de funcionalidade, que é muito mais explícita do BDD. Escrever uma especificação para este último é um processo muito mais natural e mais lógico que para o primeiro, trazendo benefício mais específicos no caso de testes individuais. Para testes funcionais que implicam relacionamentos, o TDD certamente é o procedimento mais indicado, e nisso reside o grande interesse do BDD.

Eu não vou entrar em detalhes agora, até porque estou lendo mais sobre o assunto, mas fica a recomendação para aqueles que possam estar experimentando a mesma sensação com o TDD para certos tipos de testes.

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading TDD vs. BDD at Superfície Reflexiva.

meta