bdd warriors - regras

Transcrição

bdd warriors - regras
1
CONTEÚDO
Regras
Cartas, Contador de Pontos e Fichas
Apêndice A – Behaviour-driven Development
BDD WARRIORS - REGRAS
Cenário: Jogadores devem receber 5 cartas
Dado que há entre 2 e 5 jogadores
E as cartas foram embaralhadas
E cada jogador tem sua pilha de fichas
Quando forem distribuídas as cartas
Então cada jogador deve ter 5 cartas na mão, voltadas para si
E as demais ficam na pilha de compras voltadas para baixo
Cenário: Jogador que assistiu um filme de Ficção Científica/Fantasia mais
recentemente começa o jogo
Dado uma jogadora “Alice” que assistiu “Cidade das Sombras” em “05/01/2015”
E uma jogadora “Bobbie” que assistiu “O Hobbit” em “01/01/2015”
E uma jogadora “Carol” que assistiu “Velozes e Furiosos” em “10/01/2015”
Quando o jogo iniciar
Então “Alice” deve fazer a primeira jogada
E o jogo deve prosseguir em sentido horário
Esquema de Cenário: Cenário do jogo pode iniciar fora de ordem
Dado que é a vez da jogadora Alice
E ela tem uma carta com a cláusula <cláusula>
Quando ela começar um novo cenário com essa carta
Então esta jogada será considerada válida
E a jogadora coloca sua ficha sobre a carta jogada
E compra uma nova carta ficando com 5 na mão
Exemplos:
|cláusula
| Então
| E
| Dado
| Quando
|
|
|
|
|
Cenário: Jogadores contabilizam pontos ao completar cenário
Dado o seguinte cenário incompleto
|Carta
| Pontos | Jogador |
|Dado um vampiro
| 1
| Alice
|
|Então ele deve virar pó | 1
| Carol
|
Quando a jogadora Bobbie jogar a carta “Quando for atingido por uma estaca” de 1 ponto
nesse cenário
Então Bobbie deve avançar dois pontos por completar o cenário
E Alice deve avançar um ponto referente à sua carta
E Bobbie deve avançar um ponto referente à sua carta
E Carol deve avançar um ponto referente à sua carta
E o cenário deve ser recolhido para a pilha de descarte
2
Cenário: Jogo termina quando um jogador atingir um limite de pontos
Dado que o limite estabelecido é de “15” pontos
E que “Alice” tem “10” pontos
E que “Bobbie” tem “13” pontos
Quando “Bobbie” marcar “2” pontos
Então o jogo será encerrado com “Bobbie” como vencedora
Cenário: Jogo termina quando o jogo atingir um limite de tempo
Dado que o limite estabelecido é de “30” minutos
E que “Alice” tem “8” pontos
E que “Bobbie” tem “4” pontos
Quando o tempo decorrido atingir o limite
Então o jogo será encerrado com “Alice” como vencedora
Cenário: Um cenário só é considerado completo se fizer sentido
Dado que uma jogadora jogou uma carta em um cenário
E o cenário passou a conter uma cláusula Dado, uma Quando e uma Então
E a jogadora leu o cenário em voz alta completando as frases de forma lógica e de acordo com
as regras de BDD
Quando a jogadora der um título único para o cenário
Então o cenário deve ser considerado completo
Esquema de Cenário: Jogador joga uma carta de ação
Dado que é a vez de uma jogadora
Quando ela optar por uma carta do tipo ação como <carta>
Então os jogadores devem seguir as instruções daquela carta específica
E encerrar a vez da jogadora atual
Exemplos:
|carta
|
|Trocar uma carta com alguém |
|Pegar uma cláusula do lixo |
Esquema de Cenário: Leitura de carta coringa deve incluir a palavra-chave
Dado um cenário com uma cláusula <tipo> faltando
Quando a carta “ninja” for colocada nesse cenário
Então <frase> será considerada <status>
Exemplos:
|
|
|
|
|
|
tipo
Dado
Então
Dado
Quando
Dado
|
|
|
|
|
|
frase
Dado um ninja
Então o ninja deve subir no telhado
Dado um ninja com um shuriken
Quando o ninja chegar em casa
Dado um pirata no seu navio
|
|
|
|
|
|
status
válida
válida
válida
válida
inválida
|
|
|
|
|
|
Esquema de Cenário: Cartas coringas devem completar um cenário
Dado um cenário com duas cláusulas obrigatórias faltando
Quando uma jogadora jogar uma <carta coringa> valendo por uma cláusula
Então esta jogada não será considerada válida
E a jogadora terá que pensar em algo melhor
Exemplos:
|carta coringa |
| ninja
|
| cãozinho
|
3
Cenário: Trocar uma carta com alguém
Dado que é a sua vez
Quando jogar essa carta
Então troque uma carta com alguém sem ver
as cartas dela, descarte esta e compre uma
Cenário: Trocar uma carta com alguém
Dado que é a sua vez
Quando jogar essa carta
Então troque uma carta com alguém sem ver
as cartas dela, descarte esta e compre uma
Cenário: Baixar duas cartas de uma vez
Dado que é a sua vez
Quando jogar essa carta
Então baixe duas cartas em um cenário e
compre três, ficando com 5 na mão
Cenário: Baixar duas cartas de uma vez
Dado que é a sua vez
Quando jogar essa carta
Então baixe duas cartas em um cenário e
compre três, ficando com 5 na mão
Cenário: Escolher cláusula do lixo
Dado que é a sua vez
Quando jogar essa carta
Então escolha uma carta de cláusula do lixo e
não compre outra
Cenário: Escolher cláusula do lixo
Dado que é a sua vez
Quando jogar essa carta
Então escolha uma carta de cláusula do lixo e
não compre outra
Cenário: Trocar uma carta de cenário
Dado que é a sua vez
Quando jogar essa carta
Então passe uma cláusula para outro cenário,
mantendo a ficha, descarte esta e compre uma
Cenário: Trocar uma carta de cenário
Dado que é a sua vez
Quando jogar essa carta
Então passe uma cláusula para outro cenário,
mantendo a ficha, descarte esta e compre uma
Cenário: Comprar duas cartas
Dado que é a sua vez
Quando jogar essa carta
Então compre duas cartas e descarte qualquer
uma carta sua mão, e depois descarte esta
Cenário: Comprar duas cartas
Dado que é a sua vez
Quando jogar essa carta
Então compre duas cartas e descarte qualquer
uma carta sua mão, e depois descarte esta
Cenário: Bloquear alguém por um turno
Dado que é a sua vez
Quando jogar essa carta
Então selecione alguém para não jogar o
próximo turno, descarte esta e compre uma
Cenário: Bloquear alguém por um turno
Dado que é a sua vez
Quando jogar essa carta
Então selecione alguém para não jogar o
próximo turno, descarte esta e compre uma
Cenário: Alguém descarta uma carta
Dado que é a sua vez
Quando jogar essa carta
Então escolha alguém para descartar uma carta
e comprar outra, descarte esta e compre uma
Cenário: Alguém descarta uma carta
Dado que é a sua vez
Quando jogar essa carta
Então escolha alguém para descartar uma carta
e comprar outra, descarte esta e compre uma
3 pts
3 pts
_____ cãozinho ____________
_____ ninja ____________
4
3 pts
_____ sorvete ____________
3 pts
_____ raios laser ____________
3 pts
_____ aranhas ____________
3 pts
_____ no espaço ____________
3 pts
_____ submarino ____________
3 pts
_____ Chuck Norris ____________
2 pts
Dado _____________________
2 pts
Dado ______________________
2 pts
Dado ________________
2 pts
Dado ____________________
2 pts
Dado que _______________
1 pt
Dado um robô insano _________
2 pts
Dado um robô ______________
1 pt
Dado um detetive amador
1 pt
Dado uma policial veterana
1 pt
Dado uma investigadora particular
5
1 pt
Dado um avião _________
1 pt
Dado uma espaçonave _________
1 pt
Dado um balão _________
1 pt
Dado um foguete teleguiado
1 pt
Dado uma espaçonave
1 pt
Dado uma alienígena
1 pt
Dado um ônibus com _________
1 pt
Dado uma cientista ____________
1 pt
Dado que ______ foi irradiado com
raios ________
1 pt
Dado que Alice é uma lobisomem
1 pt
Dado que Bob é um deus nórdico ___
1 pt
Dado que Bob é um mero mortal
1 pt
Dado um vampiro _________
1 pt
Dado que Bob foi mordido por _____
1 pts
Dado que Alice está numa ilha _____
1 pt
Dado que Alice é uma zumbi
6
2 pts
Quando ______________________
2 pts
Quando ______________________
2 pts
Quando ______________________
2 pts
Quando _______________________
2 pts
Quando ______________________
1 pt
Quando ____ atirar __________
1 pt
Quando ___ chegar em _________
1 pt
Quando ___ chegar em _________
1 pt
Quando ____ atacar __________
1 pt
Quando ____ atacar __________
1 pt
Quando ____ encontrar __________
1 pt
Quando ____ encontrar __________
1 pt
Quando _______ lançar _________
1 pt
1 pt
Quando ____ em frente de ____
1 pt
Quando ___estiver a __ metros de __ Quando __ estiver a __metros de___
7
1 pt
Quando passarem-se __________
1 pt
Quando _____ ouvir _________
1 pt
Quando _____ estiver com fome
1 pt
Quando ____ pressionar _______
1 pt
Quando _____ passar de _____
1 pt
Quando ___ passar para o estado ___
1 pt
Quando for noite ___________
1 pt
Quando for dia __________________
1 pt
1 pt
Quando for dado o comando _______ Quando for dado o comando _______
2 pts
Então ______________________
2 pts
Então ______________________
2 pts
Então ____ não deve __________
2 pts
Então ____________________
2 pts
Então ______ não deve ___________
2 pts
Então _____________________
8
1 pt
Então Bob deve ______________
1 pt
Então _____ deve atingir _________
1 pt
Então _____ deve conseguir _______
1 pt
Então __ deve se transformar em ___
1 pt
Então _____ deve explodir
1 pt
Então _____ deve escolher ______
1 pt
Então ______ deve ficar verde
1 pt
Então __ deve estar na forma humana
1 pt
Então _____ deve correr para _____
1 pt
Então _____ deve correr para _____
1 pt
1 pt
Então _____ não deve aparecer _____ Então _____ deve prender _______
1 pt
Então _____ deve desviar de _____
1 pt
Então _____ deve desviar de _____
1 pt
Então ____ deve colocar _____
1 pt
Então ____ deve colocar _____
9
1 pt
Então _____ deve aterrissar ______
1 pt
Então _____ deve aterrissar ______
1 pt
Então ____ deve chamar reforços
2 pts
E ___ tem ___________________
2 pts
E ______________________
2 pts
E ______________________
2 pts
E ______________________
2 pts
E _____ não deve ______________
2 pts
E _____ deve _______________
2 pts
E que _________________
2 pts
E que ______ tem __________
2 pts
E uma mesa com _____ e um cérebro
2 pts
E está chovendo
2 pts
E um martelo _________
2 pts
E um martelo comum
2 pts
E um crime ocorrido
10
Contador de Pontos (pode ser substituído por ir anotando num papel)
20
20
20
20
20
20
19
19
19
19
19
19
18
18
18
18
18
18
17
17
17
17
17
17
16
16
16
16
16
16
15 \o/
15 \o/
15 \o/
15 \o/
15 \o/
15 \o/
14
14
14
14
14
14
13
13
13
13
13
13
12
12
12
12
12
12
11
11
11
11
11
11
10
10
10
10
10
10
9
9
9
9
9
9
8
8
8
8
8
8
7
7
7
7
7
7
6
6
6
6
6
6
5
5
5
5
5
5
4
4
4
4
4
4
3
3
3
3
3
3
2
2
2
2
2
2
1
1
1
1
1
1
0 
0 
0 
0 
0 
0 
11
Fichas (pode ser substituído por picotar papel colorido)
12
Apêndice A – Behaviour-driven Development
BDD (Behaviour-Driven Development) é uma técnica colaborativa para implementar uma
aplicação através da descrição do seu comportamento do ponto de vista dos
stakeholders.Utilizada juntamente com automação de testes funcionais e TDD, ela permite a
geração de uma documentação viva, onde mudanças tanto na especificações como na
aplicação são detectadas pelos testes automatizados.
Algumas dicas sobre BDD:
- O cenário deve ser descrito em termos de Dados (Dado que... E...), Evento (Quando...) e
Resultados (Então... E...)
- A linguagem ubíqua permite o entendimento pela equipe técnica e de negócios e os exemplos
criados em conjunto facilitam a discussão
- Uso do termo Deve ajuda a manter o teste focado e a questionar sua necessidade
- A ordem dos cenários ajuda a determinar o comportamento mais importante
- Os Dados devem definir tudo o que for requerido para a execução, porém não mais do que isso
- Uma situação com “OU” necessita de dois cenários (ou de um esquema de cenário)
-Parâmetros devem descrever valores ou estados e não comportamentos
Critério de aceitação: um caixa eletrônico não
deve permitir tirar dinheiro se o correntista
não tiver saldo.
Um critério de aceitação pode ser coberto por
um ou mais cenários. Nesse caso precisamos
de um teste positivo e um negativo.
Contexto:
Dado um caixa eletrônico com R$1000 em
notas de 50
E um limite de saque de R$ 300
O contexto é válido para todos os cenários
abaixo e é composto apenas de précondições.
Ele é útil para deixar os cenários só com o
essencial para seu entendimento.
Cenário: Correntista deve tirar dinheiro se
tiver saldo
Dado que sou uma correntista
E tenho R$ 100 de saldo na minha conta
Quando eu solicitar R$100
Então deve receber R$100
E a minha conta deve ficar com saldo 0
O título do cenário deve ser único e tornar
claro o que está sendo validado
Deve existir apenas uma condição de disparo
(Quando).
“R$100” e “0” são parâmetros, de forma que
essas cláusulas podem ser reaproveitadas na
automação com valores diferentes.
Esquema de Cenário: Correntista não deve
tirar dinheiro se não tiver saldo
Dado que sou uma correntista
E tenho <valorSaldo> de saldo na minha
conta
Quando eu solicitar <valorPedido>
Então deve ser mostrado “Saldo Insuficiente”
E a minha conta deve ficar com saldo
<valorSaldo>
Exemplos:
| valorSaldo | valorPedido|
| 100
| 150
|
|0
| 50
|
Esquemas de cenários levam a
parametrização a outro nível.
Nesse caso dois cenários serão executados,
um para cada linha dos exemplos com os
parâmetros substituídos pelos respectivos
valores daquela linha.