O que é BDD (Behavior-Driven Development)?
Em português: Desenvolvimento Orientado a Comportamento · Também conhecido como: Behavior-Driven Development, Behaviour-Driven Development, Desenvolvimento Guiado por Comportamento, Dado Quando Então
BDD desenvolve entendimento compartilhado sobre o comportamento do produto por meio de exemplos, que orientam implementação e podem apoiar verificações automatizadas.
BDD (Behavior-Driven Development) é uma abordagem de desenvolvimento que aproxima perspectivas de negócio, desenvolvimento e testes para descobrir e descrever comportamentos esperados por meio de exemplos. Esses exemplos orientam a implementação e podem se tornar especificações executáveis. A prática envolve colaboração e aprendizagem, não apenas escrever cenários ou usar uma ferramenta de automação.
Origem
Dan North desenvolveu BDD ao explorar formas de melhorar o entendimento e a prática de TDD. Seu artigo Introducing BDD foi publicado originalmente na revista Better Software em março de 2006.
A abordagem passou a ser associada a colaboração sobre exemplos e especificações executáveis. Ferramentas como Cucumber apoiam parte desse trabalho, mas instalar uma ferramenta ou adotar Gherkin não estabelece, sozinho, uma prática de BDD.
Fonte primária: Introducing BDD
Na prática
BDD começa pela conversa sobre o comportamento que importa. Pessoas com perspectivas de negócio, construção e verificação examinam uma necessidade, exploram regras e procuram exemplos que tornem a expectativa concreta. Não é obrigatório que essas perspectivas correspondam a três cargos ou exatamente três participantes.
O que acontece quando falta
Sem exemplos compartilhados, palavras aparentemente claras podem esconder interpretações diferentes entre quem pede, constrói e verifica. O desacordo aparece tarde, quando a solução já está implementada. BDD oferece um caminho para antecipar essa conversa, mas não é a única forma de esclarecer expectativas.
A prática também perde valor quando vira burocracia: cenários extensos, ninguém do negócio participa e a automação apenas confirma o código existente. Observe se os exemplos realmente ajudam a descobrir perguntas e orientar decisões. TDD e práticas de XP podem complementar o trabalho em outros níveis.
Como BDD transforma dúvidas em exemplos compartilhados
BDD começa pela conversa sobre o comportamento que importa. Pessoas com perspectivas de negócio, construção e verificação examinam uma necessidade, exploram regras e procuram exemplos que tornem a expectativa concreta. Não é obrigatório que essas perspectivas correspondam a três cargos ou exatamente três participantes.
Uma frase como permitir reservas pode esconder perguntas importantes: quem pode reservar, qual capacidade está disponível, quando a reserva é confirmada e o que acontece se duas solicitações disputam a última vaga? Os exemplos ajudam a descobrir essas diferenças antes de elas se tornarem interpretações divergentes no código.
Descobrir: explore regras, exemplos e dúvidas. O objetivo não é escrever todos os casos possíveis de uma vez. Procure situações que esclareçam decisões relevantes, inclusive limites e exceções. Uma dúvida sem resposta deve continuar visível, em vez de ser preenchida por suposição.
Formular: registre os exemplos numa linguagem que as pessoas envolvidas consigam discutir. O formato Dado, Quando e Então organiza contexto, ação e resultado observável. Gherkin oferece uma sintaxe para esse tipo de descrição, mas a qualidade depende do entendimento do domínio e da escolha dos exemplos.
Verificar: quando fizer sentido, conecte cenários a verificações automatizadas. A automação executa ações e confere resultados por meio de código de apoio. O arquivo de texto não testa o sistema sozinho, e um cenário aprovado não demonstra que todos os comportamentos do produto estão corretos.
Prefira descrever intenção e resultado a detalhar cada clique. Um cenário que menciona nomes de botões e posições de tela pode ficar frágil diante de mudanças visuais que não alteram a regra. Quando a interface em si é o comportamento investigado, seus detalhes podem ser relevantes; a escolha depende da pergunta que o exemplo responde.
Os cenários precisam continuar compreensíveis para o negócio. Se a escrita vira uma linguagem técnica cheia de detalhes de banco e infraestrutura, a participação de outras perspectivas diminui. Separe o comportamento que se quer verificar da implementação necessária para executá-lo.
BDD se relaciona a critérios de aceitação, mas não obriga todos os critérios a usar a mesma forma. A Definition of Done trata de padrões de qualidade do Incremento e é o verbete responsável por essa comparação. Um conjunto de cenários específicos não substitui o padrão geral de pronto.
Também é importante distinguir BDD de uma tradução tardia de testes existentes. Se ninguém conversa sobre exemplos antes de construir, escrever Dado, Quando e Então depois pode documentar o que já foi feito sem esclarecer o que deveria ter sido feito. O ganho depende de influenciar decisões enquanto ainda existe espaço para aprender.
Exemplo de BDD para reserva de vagas
Imagine um serviço com capacidade de 10 participantes por turma. A solicitação inicial diz apenas que o usuário deve conseguir reservar uma vaga. Durante a conversa, negócio, desenvolvimento e testes identificam duas regras: a reserva confirmada ocupa uma vaga e não pode ultrapassar a capacidade.
O grupo formula um primeiro exemplo hipotético:
```gherkin Cenário: Confirmar reserva quando existe vaga Dado que uma turma possui 10 vagas E que 9 reservas estão confirmadas Quando uma pessoa solicita uma reserva válida Então sua reserva é confirmada E a turma fica com 10 reservas confirmadas ```
Um segundo exemplo esclarece o limite:
```gherkin Cenário: Recusar reserva quando a turma está completa Dado que uma turma possui 10 vagas E que 10 reservas estão confirmadas Quando outra pessoa solicita uma reserva Então nenhuma nova reserva é confirmada E a pessoa recebe a informação de que não há vagas ```
Antes, havia uma frase aberta a diferentes interpretações. Depois, existem 2 exemplos verificáveis e uma pergunta nova: o que deve acontecer quando duas solicitações chegam ao mesmo tempo para a última vaga? O time não presume que os dois cenários cobrem concorrência. Registra a questão e combina o comportamento esperado antes de implementar essa parte.
Os exemplos também não definem uma política de lista de espera, cancelamento ou validade da solicitação. Se essas regras forem necessárias, precisam ser discutidas. Esse limite evita transformar uma demonstração simples em uma especificação aparentemente completa de todo o serviço.
Como começar a praticar BDD
Escolha uma regra relevante
Parta de uma necessidade ou User Story que será trabalhada em breve. Identifique quem conhece o domínio e quem construirá e verificará a solução. Evite escrever um catálogo enorme de cenários antes de entender qual decisão cada um ajuda a esclarecer.
Explore exemplos e perguntas
Converse sobre situações comuns, limites e exceções. Use dados concretos que diferenciem resultados. Se houver discordância, mantenha a pergunta aberta e procure quem pode respondê-la. Não transforme uma hipótese do desenvolvedor ou de uma IA em regra de negócio sem validação.
Escreva de forma compreensível
Registre contexto, ação e consequência observável. Dê ao cenário um nome que explique o comportamento. Retire detalhes que não ajudam a compreender a regra e confira se uma pessoa do negócio consegue discutir o exemplo sem traduzir termos de implementação.
Automatize onde houver valor
Escolha verificações que tragam retorno e um nível de teste adequado. Nem todo cenário precisa passar pela interface gráfica. Mantenha o código de apoio compreensível e investigue falhas de ambiente ou de automação, para que resultados instáveis não destruam a confiança nas verificações.
Mantenha exemplos vivos
Quando uma regra mudar, revise a descrição e sua verificação. Remova redundâncias e esclareça falhas com o time. Uma documentação só continua viva se alguém a usa e mantém coerente com o comportamento esperado, em vez de acumular arquivos que ninguém consulta.
Erros comuns com BDD
- Reduzir BDD a Gherkin. A sintaxe organiza exemplos, mas não substitui descoberta e colaboração. Um texto bem formatado ainda pode representar uma regra errada.
- Delegar toda a especificação ao QA. Uma perspectiva isolada pode não conhecer todas as decisões do domínio. Busque entendimento compartilhado antes da implementação.
- Descrever cada clique. Detalhes desnecessários da interface tornam cenários longos e frágeis. Preserve o comportamento relevante para a pergunta investigada.
- Automatizar suposições. Um teste pode passar e confirmar exatamente a interpretação errada. Esclareça regras e exemplos antes de transformar a expectativa em verificação.
- Confundir cobertura com completude. Dois cenários bem escritos não garantem todos os riscos tratados. Considere concorrência, qualidade e outros aspectos conforme o contexto, usando técnicas complementares.
Visão K21
O que a gente aprendeu na prática sobre BDD
Avelino Ferreira Gomes Filho, em Qual a diferença entre Definição de Preparado, Pronto e Critérios de Aceitação?, usa perguntas sobre cadastro de livros para mostrar como exemplos revelam expectativas que poderiam ficar implícitas. A contribuição está em tornar a regra discutível antes de implementar, e não apenas em preencher uma sintaxe.
No tutorial de assistente de inteligência artificial, o mesmo autor ressalta a necessidade de entender o contexto antes de gerar critérios. Uma IA pode ajudar a propor casos, mas o time precisa confirmar regras e perguntas abertas com quem conhece o domínio. Um cenário plausível não é automaticamente uma regra válida do produto.
Baseado nos posts: Qual a diferença entre Definição de Preparado, Pronto e Critérios de Aceitação?; Assistente de Inteligência Artificial um tutorial para criar e usar o seu próprio robô virtual
Para se aprofundar
No blog da K21
- Qual a diferença entre Definição de Preparado, Pronto e Critérios de Aceitação?
Mostra, com Avelino Ferreira Gomes Filho, perguntas que tornam expectativas de comportamento explícitas.
- Assistente de Inteligência Artificial um tutorial para criar e usar o seu próprio robô virtual
Explora o apoio de IA à escrita de critérios, destacando a necessidade de compreender o contexto.
Fontes primárias
- Introducing BDD, Dan North (2006)
- Behaviour-Driven Development, Cucumber
- Writing better Gherkin, Cucumber
Termos relacionados
Perguntas frequentes
BDD é uma ferramenta de testes?
Não. BDD é uma abordagem de desenvolvimento baseada em colaboração e exemplos de comportamento. Ferramentas como Cucumber podem executar verificações associadas a esses exemplos, mas representam apenas parte da prática. O entendimento compartilhado e as perguntas descobertas antes da implementação são tão importantes quanto a automação que vem depois.
O que significam Dado, Quando e Então?
Dado descreve o contexto relevante, Quando apresenta a ação ou acontecimento e Então expressa o resultado observável esperado. Essa estrutura ajuda a discutir exemplos concretos. Ela não exige listar cada passo técnico da execução e não transforma uma regra ambígua em uma boa especificação sem conversa sobre seu significado.
Todo cenário BDD precisa ser automatizado?
Não necessariamente. A descoberta por exemplos pode gerar valor antes de qualquer automação. Escolha o que automatizar considerando repetição, risco e custo de manutenção. Quando houver automação, o cenário precisa ser ligado a código que execute e verifique o comportamento; o texto em Gherkin, sozinho, não realiza um teste.
Quem deve escrever os cenários de BDD?
A escrita deve refletir colaboração entre perspectivas de negócio, desenvolvimento e testes, mesmo que uma pessoa registre o resultado. Não é obrigatório ter três cargos específicos. O importante é reunir conhecimento suficiente para esclarecer regras, questionar exemplos e decidir o comportamento esperado antes de tratá-lo como uma especificação aceita.
