SlideShare uma empresa Scribd logo
Melhore suas User Stories
com Specification by Example
Bruno Corrêa
brunocorrea@ufpa.br
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.
O porquê ....
Gap de comunicação!!!
Shared
Understanding!!
Utilizar Exemplos do
domínio do negócio!!
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.
Exemplo
Examples:
Tipo Cliente Conteúdo do carrinho Frete
VIP 5 livros Grátis
VIP 4 livros Padrão
Regular 10 livros Padrão
VIP 5 celulares Padrão
VIP 5 livros, 1 celular Padrão
A ideia é...
“Eliminar especificações abstratas”
A ideia é...
“Building the right software”
Fonte: Specification by Example, Gojko Adzic (2011).
Aproxima as áreas...
Situada no
quadrante...
Fonte: Let's break the Agile Testing Quadrants, Gojko Adzic (2013).
Specification by Example!!
Uma técnica ágil para definir requisitos
de forma colaborativa, por meio de
exemplos reais do domínio do
negócio.
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>
User Story
”Uma representação do requisito”
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.
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!
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
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
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
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
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”
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
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
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
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...
Backlog Grooming
“Refinamento do Product Backlog”
Backlog Grooming
“Refinamento do Product Backlog”
Definition of Ready
(DOR)
BDD
“Automatizar comportamentos do software”
Produto Certo x Construir Certo
BDD
“Automatizar comportamentos do software”
From Customer Examples to Living Documentation
BDD
“Automatizar comportamentos do software”
Living Documentation!!
Fonte: Specification by Example, Gojko Adzic (2011).
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.
Obrigado!!
Perguntas...?
Bruno Corrêa
brunocorrea@ufpa.br

Mais conteúdo relacionado

PPTX
Segurança em aplicações web
PDF
Reflexões aleatórias para calouros em
PDF
Web Machine Learning
PDF
Requisitos Ágeis um novo mindset
PDF
More Common Than You Think: An In-Depth Study of Casual Contributors
PDF
Introdução ao Android Studio
PDF
Entendendo e Aplicando Especificação por Exemplo
PPTX
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Segurança em aplicações web
Reflexões aleatórias para calouros em
Web Machine Learning
Requisitos Ágeis um novo mindset
More Common Than You Think: An In-Depth Study of Casual Contributors
Introdução ao Android Studio
Entendendo e Aplicando Especificação por Exemplo
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Anúncio

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.
  • 8. Exemplo Examples: Tipo Cliente Conteúdo do carrinho Frete VIP 5 livros Grátis VIP 4 livros Padrão Regular 10 livros Padrão VIP 5 celulares Padrão VIP 5 livros, 1 celular Padrão
  • 9. A ideia é... “Eliminar especificações abstratas”
  • 10. A ideia é... “Building the right software”
  • 11. Fonte: Specification by Example, Gojko Adzic (2011). Aproxima as áreas...
  • 12. Situada no quadrante... Fonte: Let's break the Agile Testing Quadrants, Gojko Adzic (2013).
  • 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...
  • 28. Backlog Grooming “Refinamento do Product Backlog” Definition of Ready (DOR)
  • 29. BDD “Automatizar comportamentos do software” Produto Certo x Construir Certo
  • 30. BDD “Automatizar comportamentos do software” From Customer Examples to Living Documentation
  • 32. Living Documentation!! Fonte: Specification by Example, Gojko Adzic (2011).
  • 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.