BDD (Behaviour-Driven Development) ou Desenvolvimento Orientado por Comportamento foi criado por Dan North com influências de Chris Stevenson e Chris Matts.
Inicialmente a ideia era facilitar o ensino e o uso de práticas ágeis, como por exemplo Test Driven-Development (TDD). Em diferentes projetos e organizações, Dan North identificou que os desenvolvedores queriam saber por onde começar, o que testar e o que não testar, quantos testes seriam feitos para um determinado requisito e como entender a falha de algum cenário específico de teste.
Um dos diferenciais de BDD, é ser uma linguagem comum onde desenvolvedores e profissionais da área de negócio conseguem entender. Outros benefícios incluem o auxílio no processo de identificação, entendimento e amadurecimento de requisitos e a automação de critérios de aceitação (aka critérios de aceite).
BDD é tambem uma ótima ferramenta para prover uma documentação viva de um sistema e servir de auxilio para introduzir novos desenvolvedores a equipe de um software existente.
Assim como TDD auxilia no design de classes e métodos, BDD possui este mesmo benefício. Geralmente, um cenário não deve percorrer múltiplas classes se for um escopo de “BDD unitário”.
A importância da clareza na nomeclatura do código, nos métodos e variáveis tambem vale para os cenários de teste utilizando BDD e TDD. Uma das vantagens é conseguir identificar rápidamente do que se trata um teste que por ventura venha a falhar em uma execução automatizada, facilitando o processo de identificação e correção de um problema.