Specification by Example é uma técnica ágil para definir requisitos de forma colaborativa, por meio de exemplos reais do domínio do negócio. Assim, permitindo um melhor entendimento e repasse dos requisitos pelos stakeholders ligados ao negócio.
Nesta talk, vamos ver como utilizar essa técnica para melhorar as user stories e como ela apoia outras práticas ágeis como Backlog Grooming e BDD
Melhore suas User Stories com Specification by Example
1. Melhore suas User Stories
com Specification by Example
Bruno Corrêa
brunocorrea@ufpa.br
2. Nesta talk você....
Perceberá a importância da colaboração do team com
pessoas do business;
Como funciona a Specification by Example;
Como esta técnica apoia outras práticas ágeis como
Backlog Grooming e BDD.
7. Exemplo
O frete grátis é oferecido para clientes VIP, que compram
no mínimo 5 livros. O Frete grátis não é oferecido para
clientes Regulares, nem para clientes VIP que compram
qualquer outro produto.
Regras de Negócio:
Feature:
Informar, antes de realizar o pagamento, quando se tem
direito ao frete grátis para um cliente.
13. Specification by Example!!
Uma técnica ágil para definir requisitos
de forma colaborativa, por meio de
exemplos reais do domínio do
negócio.
14. Como representar Examples?
Gherkin language!!
É uma Linguagem Específica de Domínio (DSL) que
descreve comportamentos do software por meio da
“Syntax Given-When-Then”.
Given <pré-condição>
When <ação do papel>
Then <resultado para validação>
16. Exemplo 1
Narrativa:
O sistema deve permitir que o usuário insira dados para
calcular o IMC (Índice de Massa Corporal) desse usuário,
mostrando na tela qual o grau de obesidade desse
usuário.
17. Exemplo 1
Narrativa:
O sistema deve permitir que o usuário input dados para
calcular o IMC (Índice de Massa Corporal) desse usuário,
mostrando na tela qual o grau de obesidade desse
usuário.
Abstrato!
18. 1) IMC para grau de obesidade “Peso normal”
Given usuário está na página “Descubra seu IMC”
When preenche o peso com “80”
And preenche a altura com “1,80”
Then deve ser exibido o IMC= “24,69”
And a situação deve ser “Peso normal”
User Story:
Como usuário do HealthCare
Eu quero calcular meu Índice de Massa Corporal (IMC)
Para saber se estou com peso normal.
Cenários de Aceitação:
Exemplo 1
19. 2) IMC para grau de obesidade “Abaixo do peso”
Given usuário está na página “Descubra seu IMC”
When preenche o peso com “58”
And preenche a altura com “1,80”
Then deve ser exibido o IMC= “17,90”
And a situação deve ser “Abaixo do peso normal”
3) IMC para grau de obesidade “Acima do peso”
Given usuário está na página “Descubra seu IMC”
When preenche o peso com “100”
And preenche a altura com “1,80”
Then deve ser exibido o IMC= “30,86”
And a situação deve ser “Acima do peso normal”
Exemplo 1
20. User Story:
Como Maria (usuária do whatsApp)
Eu quero adicionar pessoas em um grupo existente
Para poder conversar com todas elas em apenas uma
conversa.
Exemplo 2
21. 1) Usuário é Admin
Given Maria é Admin do grupo
When adiciona ao grupo a pessoa “Bruno”
Then a pessoa recebe a msg “Mãe adicionou você
ao grupo Família”
Cenários de Aceitação:
Exemplo 2
22. 2) Usuário não é Admin
Given Maria não é Admin do grupo
When tenta adicionar ao grupo a pessoa “Bruno”
Then o whatsapp informa ao usuário ”Você não
pode adicionar pessoas, pois não é Admin do
grupo”
Exemplo 2
3) Grupo com número máx. de pessoas
Given Maria é Admin do grupo
When tenta adicionar ao grupo a pessoa “Bruno”
Then o whatsapp informa ao usuário ”Este grupo
já possui o limite máximo de 50 integrantes”
23. User Story:
Como Titular de Conta Corrente
Eu quero realizar um saque no caixa eletrônico
Para poder ter dinheiro em cash.
Exemplo 3
Cenários de Aceitação:
1) Conta Corrente tem limite suficiente
Given ”João” insere um cartão válido
And a conta corrente possui saldo “500,00”
When “João” solicita o saque no valor ”300,00”
And preenche a senha válida “5321”
Then o sistema informa ”saque realizado com sucesso”
And exibe o saldo da conta “200”
And entrega o dinheiro para “João”
And o cartão é devolvido
24. Exemplo 3
2) Conta Corrente sem limite suficiente
Given ”João” insere um cartão válido
And a conta corrente possui saldo “500,00”
When “João” solicita o saque no valor ”700,00”
And preenche a senha válida “5321”
Then o sistema informa ”Você não possui limite suficiente“
And o Cartão é devolvido
25. Exemplo 3
3) Caixa Eletrônico não possui dinheiro
Given ”João” insere um cartão válido
And a conta corrente possui saldo “500,00”
And o caixa eletrônico não possui dinheiro
When “João” solicita o saque no valor ”700,00”
Then o sistema informa ”O caixa eletrônico não possui
dinheiro, favor se dirigir a outro caixa eletrônico“
And o Cartão é devolvido
26. Onde Utilizar??
-Workshops/Brainstorming de elicitação de user stories
-Reuniões informais antes de cerimônias de planejamento
(Sprint Planning, Planning Game...)
-Three Amigos
-Cerimônias de Backlog Grooming
-BDD (Behavior-Driven Development)
Dentre outros...
33. Referências...
Gojko Adzic. Let's break the Agile Testing Quadrants. Disponível em:
<https://gojko.net> 2013;
Gojko Adzic. Specification by Example: How Successful Teams Deliver the Right
Software. 1th Ed, Manning. 2011.
Ryan Thomas. Introducing the Three Amigos. Disponível em:
<https://www.scrumalliance.org/community/articles/2013/2013-april/introducing-the-
three-amigos>
Agile Alliance. Backlog Grooming. Disponível em:
<https://www.agilealliance.org/glossary/backlog-grooming/>
Dan North, Aslak Hellesøy, Bryan Helmkamp, et al.
The RSpec Book: Behaviour-Driven Development with
RSpec, Cucumber, and Friends. 1th Ed., 2012.