TDD e BDD são siglas muito parecidas e constantemente utilizadas no universo do desenvolvimento. É muito comum existir uma confusão sobre o significado de cada uma. Para saber a diferença entre TDD e BDD continue a leitura!

O que significa TDD? 

Desenvolvimento Guiado por Testes

TDD (Test Driven Development) é uma metodologia de desenvolvimento de software muito simples de entender. A ideia é basicamente: Escrever um teste automatizado antes de começar a desenvolver o código de fato.

Temos então um processo para desenvolver todo e qualquer código:

  1. Escreva um teste para a funcionalidade desejada, sem nada implementado;
  2. Rode o teste criado e veja-o quebrando;
  3. Escreva o código que fará o teste passar;
  4. Rode novamente o teste e veja-o passando;
  5. Revise o código feito, refatorando-o, melhorando o que for possível;
  6. Repita tudo novamente.

A grande vantagem deste processo é garantir uma cobertura de testes para 100% do código, já que nada é desenvolvido sem que um teste exista antes.

Além disso, ajuda o desenvolvedor a pensar melhor sobre as implementações, em como testar e garantir que algo realmente irá funcionar, a revisar o trabalho recém feito para torná-lo ainda melhor e assim por diante.

O que significa BDD?

Desenvolvimento Guiado por Comportamento

Antes de falarmos o que significa BDD, vejamos o conceito de criar códigos baseados em descrições do comportamento que uma funcionalidade deve ter.

Um exemplo de descrever uma nova demanda ao desenvolvedor poderia ser:

Novo sistema de pontuação:
Agora os usuários terão uma pontuação em seu perfil, precisamos adicionar um campo chamado “score” ao banco de dados e conseguir adicionar ou remover pontos dos usuários através de uma Stored Procedure.

Passamos uma informação técnica informando exatamente o que deve ser feito. Já com BDD (Behavior Driven Development), a ideia é descrever o comportamento esperado desta funcionalidade e não tentar dizer como ela deve ser implementada, exemplo:

Novo sistema de pontuação:
Todo usuário deverá possuir uma pontuação numérica em seu perfil;
Vamos supor que um usuário possui 5 pontos;
Quando receber 10 pontos, ele deverá ter 15 pontos em seu perfil;
Se após isso ele perder 2 pontos, ele terá então 13 pontos em seu perfil.

Ambas as demandas pretendem atingir o mesmo objetivo: Criar um novo sistema de pontuação, mas na segunda opção, seguindo os conceitos de BDD (Behavior Driven Development), temos a descrição de como a funcionalidade deve se comportar ao invés de dizer o que deve ser feito tecnicamente.

diferença entre tdd e bdd

Vantagens ao adotar o conceito de BDD (Behavior Driven Development):

Melhor desenvolvimento

Deixamos o desenvolvedor entender do ponto de vista do usuário o que é esperado da funcionalidade, dando liberdade para ele pensar na melhor solução técnica ao invés de sugerir uma implementação que pode não ser a ideal ou não resultar no comportamento esperado.

Maior interação entre as áreas

Pessoas que não são da área técnica podem participar e contribuir ativamente na descrição das demandas, já que não é preciso entender detalhes de programação, mas sim o comportamento esperado do ponto de vista de outras áreas como negócio, marketing, usabilidade, experiência do usuário, etc.

Tudo isso ajuda a integrar as diferentes áreas de uma equipe, diminuir falhas de comunicação e um possível desperdício desenvolvendo algo que não foi exatamente o que imaginavam.

Então, o que queremos é evitar dizer o que deve ser feito a nível de programação. Queremos descrições humanas, contando pequenas estórias sobre o comportamento de uma funcionalidade e se basear nisso para iniciar o processo de desenvolvimento.

Com as demandas geradas em estórias, com descrições humanas sobre o comportamento esperado, aí podemos partir para um ponto de vista mais técnico sobre BDD que envolve questões sobre como criar testes automatizados que validem o código desenvolvido baseados nessas estórias, etc. Mas não vamos nos aprofundar nisso hoje.

Qual é a diferença entre TDD e BDD?

O TDD busca garantir a qualidade do código, sempre pensando em 100% de cobertura de testes, melhorar o que acabou de ser feito e nunca escrever uma linha de código sem antes pensar em como garantir que aquilo irá funcionar.

Já o BDD trabalha para definir como uma demanda chega ao desenvolvedor, integrar diferentes áreas da empresa e pensar a partir do ponto de vista do comportamento esperado de uma funcionalidade pelo usuário. Por consequência, ele acaba influenciando em como os testes são planejados e escritos.

Podemos dizer então que TDD não vai contra o BDD, você pode aplicar ambos os métodos em conjunto ou apenas um deles. Ambos buscam melhorar o desenvolvimento de software e são ideias muito bacanas para se ter em qualquer empresa/projeto.

Agora, que você já entendeu a diferença entre TDD e BDD, continue acompanhando nossos conteúdos e esteja sempre atualizado com o que está rolando para alavancar a sua carreira DEV!

Aumente a performance dos seus projetos com a VPS da Locaweb!

SAIBA MAIS