Coding Dojo Floripa

Desenvolvimento Ágil

Apresentando Behaviour Driven Development (BDD)

Posted by Ivan Sanchez em Sábado, Outubro 28, 2006

(Aviso! Esta não é mais uma nova técnica de programação)

Um dos maiores obstáculos na adoção do Desenvolvimento Orientado a Testes, ou Test Driven Development (TDD) é justamente o termo “teste”.

Talvez tenha sido uma bola fora do Kent Beck ter colocado este nome, já que a principal vantagem desta abordagem não é validação de código e sim seu uso para projetá-lo. Como diz o Ron Jeffries, “o objetivo do TDD é escrever um código limpo e que funcione”, ou seja, usamos TDD para nos ajudar escrever código, e não simplesmente testá-lo.

Felizmente este problema de vocabulário não impediu a popularizacão da técnica, porém frameworks como o jUnit continuaram batendo na tecla dos “testes” usando termos como TestCase, TestSuite e obrigando ao programador começar todos os métodos com “test”. Isso colaborou ainda mais na associação de TDD com validação, ao invés de especificação.

Quando escrevemos um “teste” antes de sequer termos a implementação, estamos especificando o comportamento esperado do nosso código, definindo um contexto de entrada e avaliando se as saídas são as esperadas. Esta especificação automatizada, embora de baixo nível, ajuda principalmente na implementação do código, além de servir como ferramenta de validação.

Para tentar desassociar TDD apenas ao conceito de testes, surgiu o termo Behaviour Driven Development (BDD), ou Desenvolvimento orientado a Comportamento. Também foram criados frameworks como o jBehave e RSpec para popularizar um novo vocabulário, mais condizente com os principais benefícios de TDD.

Alguns exemplos deste novo vocabulário incluem:

  • Context ao invés de TestCase
  • Specification ao invés de Test
  • Should ao invés de Assert

Quem já esteja acostumado com TDD e sabe exatamente o que esta técnica compreende talvez continue usando os seus termos, mas muitas confusões seriam evitadas se adotássemos este novo vocabulário.

Para quem quiser saber mais sobre BDD:

7 Respostas to “Apresentando Behaviour Driven Development (BDD)”

  1. João Carlos Santos said

    Olá Ivan Sanchez, Boa Tarde!!!

    Estava fazendo uma pesquisa sobre TDD em Java, e ao fazer esta consulta verifiquei que você tem bastante material sobre este assunto, Gostaria de lhe pedir se por acaso você saiba aonde posso encontrar mais assunto sobre TDD em JAva e alguns exemplos.

    Sem mais,

    João Carlos

  2. João Carlos,

    Eu aconselho a leitura do livro Test Driven Development By Example do Kent Beck e o Pragmatic Unit Testing da série Pragmatic Programmers. Artigos sobre TDD. Outros bons artigos são:

    http://www.agiledata.org/essays/tdd.html

    http://www.improveit.com.br/xp/praticas/tdd (em português)

    Espero que isso ajude 🙂

    Abraço

  3. Muito bom o artigo Ivan, que tal escrever mais sobre BDD no blog?

  4. Rafael said

    Olá Ivan!

    Tecnicamente existe uma diferença grande entre TDD e BDD?
    Estou começando com testes agora, e queria saber qual estudar pra começar a aplicação!
    Se eu quero estudar BDD, compensa estudar TDD também?

    Por favor, clareie minhas idéias!

  5. Oi Rafael, desculpa pela demora….

    Cara, pra ser sincero a diferença entre TDD e BDD não é tão grande ao ponto de você ter que escolher um ou outro para estudar. Os fundamentos de ambos são praticamente os mesmos.

    Contudo, o que eu faria no seu caso é estudar TDD primeiro basicamente porque existe mais material a respeito por aí e depois começaria a ler sobre BDD para aprender novas práticas.

    Espero ter ajudado! 🙂

    Ivan

  6. Rafael said

    Opa! Demorei pra ver sua resposta, mas comecei a fazer exatamente isso. Não sabia nem o que eram testes direito, agora já estou bem mais familiarizado!
    Você descobriu alguma referência nova sobre o assunto? Que ferramentas está usando?

    Obrigado pela ajuda!

  7. […] Ivan Sanchez sobre SCRUM, Extreme Programming, certificações de metodologias ágeis, TDD, UML, BDD e sobre os Coding Dojos e outros assuntos em […]

Deixe um comentário