Introdução ao BDD
Ana Carolina [email protected]
Behaviour-Driven Development: Origens
• Dan North (“Introducing BDD”, 2003-2006)
• A partir de dúvidas que se repetiam sobre TDD...• O que testar• O quanto testar• Como saber o que falhou
... se chegou em uma técnica para implementar uma aplicação através da descrição do seu comportamento do ponto de vista dos stakeholders
Vantagens
• Aproximar a área técnica da área de negócios através de• Linguagem ubíqua• Criação colaborativa de cenários
• Esclarecer cenários complexos de forma sucinta através de exemplos
• Fornecer um guia de testes para o desenvolvedor
• Eliminar documentação desnecessária
Vantagens
• Automação de cenários com Cucumber/SpecFlow/Jbehave
• Testes de regressão
• Rastreabilidade
• Documentação viva • Testes quebram ao alterar a documentação
• Reutilização na criação de cenários
Lições Aprendidas
• Colaboração!
• Treinar a equipe
• Alinhamento para entender Automação• O quanto testar• Ordem de eventos, etc.
• Depois que você sai do básico, não existe padrão
• Melhoria contínua!
BDD – Estrutura Básica
Funcionalidade: <Título>Eu, como um <papel>, Quero <funcionalidade>Para que <benefício>
Cenário: <Título do Cenário>Dado que... Setup do cenárioQuando ... Evento que estou testandoEntão... deve... Resultado esperado
Exemplo
Funcionalidade: Controle de acessoEu, como uma general rebelde, Quero ocultar os planos da rebeliãoPara que eles não caiam em mãos erradas
Cenário: Planos devem estar protegidos por senhaDado que R2D2 tem os planos da rebeliãoQuando alguém tentar acessá-losEntão R2D2 deve pedir a senha de acesso
BDD – Contexto e ParâmetrosContexto: Dado que R2D2 tem os planos da rebeliãoE que um usuário está tentando acessá-los
Cenário: Usuários autorizados devem acessar os planosDado que R2D2 solicitou a senha de acessoQuando a senha correta for informadaEntão R2D2 deve responder "Beep! Beep!"E deve apresentar o holograma com os planos
Cenário: Usuários não autorizados devem ser punidosDado que R2D2 solicitou a senha de acessoQuando a senha incorreta for informadaEntão R2D2 deve responder "Beep beep! Beeeeeep! Beep!"E deve acertar o usuário com um choque de "0.001" ampE não deve apresentar o holograma com os planos
BDD – Múltiplos testes com um cenário
Contexto: Dado que R2D2 tem os planos da rebelião
Esquema de Cenário: Usuários não autorizados devem ser punidosDado que um usuário do <TIPO> quer acessar os planosE que a senha de acesso foi solicitadaQuando a senha incorreta for informadaEntão R2D2 deve responder <MENSAGEM>E deve acertar o usuário com um choque de <QTD> amp
Exemplos: | TIPO | QTD | MENSAGEM || Contrabandista | 0.01 | Beep || Stormtrooper | 0.1 | Beep Beeeep || Lorde dos Sith | 0.2 | BEEEP BEEEP BEEP BEEEEP |
BDD Warriors - Cartas de cláusulas
Jogadora 1
Jogadora 2
1 ptEntão ____________
Jogadora 3
BDD Warriors - Cartas de cláusulas
1 ptDado um ____________
Jogadora 1
Jogadora 2
1 ptEntão ____________
Jogadora 3
BDD Warriors - Cartas de cláusulas
1 ptDado um ____________
Jogadora 1
1 ptQuando ____________
Jogadora 2
1 ptEntão ____________
Jogadora 3
Placar:1 pt (carta)1 pt (carta) + 2 pts (cenário)1 pt (carta)
BDD Warriors – Cartas especiais
3 pt____ tubarão ____________
Cartas Coringas:
Somente pode ser jogada para fechar um cenário!
Trocar uma carta com alguém
Cartas de ação
Leia as instruções na carta