Projetos práticos para aprender BDD
Eu apresento uma abordagem prática para aplicar Behavior-Driven Development com foco em domínio, colaboração entre equipes e critérios de aceitação bem definidos. Quatro projetos técnicos para guiar seu aprendizado.
Projeto 1 — Catálogo de Produtos: cenários de aceitação
Neste projeto, eu defino um catálogo de produtos com cenários que cobrem listagem, filtragem por categoria e ordenação por preço. O objetivo é exercitar a linguagem ubíqua e o alinhamento entre negócio e tecnologia.
- Definir a feature com foco no resultado desejado pelo usuário.
- Escrever cenários em Gherkin no idioma do domínio.
- Relacionar cada cenário a uma evidência de comportamento observável.
Feature: Catálogo de produtos
Como usuário do site, quero visualizar a lista de produtos, filtrar por categoria e ordenar por preço, para encontrar rapidamente o que procuro.
Scenario: Listar produtos disponíveis
Dado o usuário está na página de catálogo
Quando ele visualiza a lista de produtos
Então a lista de produtos é exibida com nomes e preços
Scenario: Filtrar por categoria
Dado o usuário está na página de catálogo
Quando ele escolhe a categoria "Eletrônicos"
Então apenas produtos da categoria são exibidos
Scenario: Ordenar por preço
Dado o usuário está na página de catálogo
Quando ele escolhe ordenar por "Preço: baixo para alto"
Então a lista é ordenada do menor para o maior preço
Projeto 2 — Fluxo de checkout: do carrinho à confirmação
Este projeto aborda o fluxo de compra, cobrindo adição ao carrinho, preenchimento de dados de entrega, seleção de método de envio e confirmação do pedido. O objetivo é mapear caminhos típicos e cenários de exceção com clareza.
- Mapear caminhos típicos e cenários de exceção com clareza.
- Utilizar Given/When/Then para descrever comportamento observável.
- Convergir os cenários para critérios de aceitação mensuráveis.
Feature: Checkout simplificado
Cenário: Adicionar itens ao carrinho e iniciar checkout
Dado o usuário está na página do carrinho
Quando ele adiciona um item ao carrinho
Então o carrinho contém o item com a quantidade 1
Cenário: Inserir dados de entrega válidos
Dado o usuário está no checkout
Quando ele preenche o endereço de entrega válido
Então o resumo da compra exibe o endereço correto
Cenário: Confirmar pedido
Dado o usuário está no checkout com itens no carrinho
Quando ele confirma o pedido
Então o pedido é criado com status "em processamento"
Projeto 3 — Autenticação segura: cenários de acesso
Aqui eu descrevo credenciais, mensagens de erro claras, fluxos de recuperação e o comportamento após tentativas malsucedidas. O objetivo é capturar requisitos de segurança e usabilidade por meio de cenários acessíveis a stakeholders.
- Comunicar claramente os critérios de autenticação esperados.
- Definir cenários que cobrem sucesso, falha e recuperação.
- Relacionar cenários a evidências de comportamento do sistema.
Feature: Autenticação de usuário
Cenário: Login com credenciais válidas
Dado o usuário está na página de login
Quando ele insere credenciais válidas
Então o usuário é redirecionado para a área privada
Cenário: Falha de login
Dado o usuário está na página de login
Quando ele insere credenciais inválidas
Então uma mensagem de erro é exibida
Cenário: Recuperação de senha
Dado o usuário está na tela de login
Quando ele solicita a recuperação de senha
Então o link de recuperação é enviado para o e-mail registrado
Projeto 4 — Proposta de melhoria contínua: refinação de critérios
Além disso, eu foco na refinação de critérios de aceitação e no alinhamento das histórias com o domínio, promovendo uma prática de melhoria contínua pela revisão de critérios e aprendizados entre equipes.
- Refinar critérios com exemplos concretos e limites de tolerância.
- Verificar consistência entre histórias, cenários e dados de teste.
- Documentar aprendizados para futuras iterações.
Feature: Refino de critérios de aceitação
Cenário: Limite de estoque
Dado o estoque disponível é menos que o requerido
Quando o usuário tenta comprar
Então o sistema impede a compra e informa o estoque insuficiente
Gostou? Leia outros posts para aprofundar em BDD, domínio e colaboração entre equipes.
Sou Apaixonado pela programação e estou trilhando o caminho de ter cada diz mais conhecimento e trazer toda minha experiência vinda do Design para a programação resultando em layouts incríveis e idéias inovadoras! Conecte-se Comigo!