melhore suas user stories com specification by example
TRANSCRIPT
![Page 1: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/1.jpg)
Melhore suas User Stories com Specification by ExampleBruno Corrê[email protected]
![Page 2: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/2.jpg)
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.
![Page 3: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/3.jpg)
O porquê ....
![Page 4: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/4.jpg)
Gap de comunicação!!!
![Page 5: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/5.jpg)
Shared Understanding!!
![Page 6: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/6.jpg)
Utilizar Exemplos do domínio do negócio!!
![Page 7: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/7.jpg)
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.
![Page 8: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/8.jpg)
ExemploExamples:
Tipo Cliente Conteúdo do carrinho FreteVIP 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
![Page 9: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/9.jpg)
A ideia é...“Eliminar especificações abstratas”
![Page 10: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/10.jpg)
A ideia é...“Building the right software”
![Page 11: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/11.jpg)
Fonte: Specification by Example, Gojko Adzic (2011).
Aproxima as áreas...
![Page 12: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/12.jpg)
Situada no quadrante...
Fonte: Let's break the Agile Testing Quadrants, Gojko Adzic (2013).
![Page 13: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/13.jpg)
Specification by Example!!Uma técnica ágil para definir requisitos de forma colaborativa, por meio de exemplos reais do domínio do negócio.
![Page 14: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/14.jpg)
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>
![Page 15: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/15.jpg)
User Story”Uma representação do requisito”
Como <papel>Eu quero
<função>Para <valor>
![Page 16: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/16.jpg)
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.
![Page 17: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/17.jpg)
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!
![Page 18: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/18.jpg)
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 HealthCareEu quero calcular meu Índice de Massa Corporal (IMC)Para saber se estou com peso normal.
Cenários de Aceitação:
Exemplo 1
![Page 19: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/19.jpg)
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
![Page 20: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/20.jpg)
User Story:Como Maria (usuária do whatsApp)Eu quero adicionar pessoas em um grupo existentePara poder conversar com todas elas em apenas uma conversa.
Exemplo 2
![Page 21: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/21.jpg)
1) Usuário é AdminGiven Maria é Admin do grupoWhen 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
![Page 22: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/22.jpg)
2) Usuário não é AdminGiven Maria não é Admin do grupoWhen 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 pessoasGiven Maria é Admin do grupoWhen 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”
![Page 23: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/23.jpg)
User Story:Como Titular de Conta CorrenteEu quero realizar um saque no caixa eletrônicoPara poder ter dinheiro em cash.
Exemplo 3
Cenários de Aceitação:1) Conta Corrente tem limite suficienteGiven ”João” insere um cartão válidoAnd 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
![Page 24: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/24.jpg)
Exemplo 32) Conta Corrente sem limite suficienteGiven ”João” insere um cartão válidoAnd 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
![Page 25: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/25.jpg)
Exemplo 33) Caixa Eletrônico não possui dinheiroGiven ”João” insere um cartão válidoAnd a conta corrente possui saldo “500,00”And o caixa eletrônico não possui dinheiroWhen “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
![Page 26: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/26.jpg)
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...
![Page 27: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/27.jpg)
Backlog Grooming“Refinamento do Product Backlog”
![Page 28: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/28.jpg)
Backlog Grooming“Refinamento do Product Backlog”
Definition of Ready (DOR)
![Page 29: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/29.jpg)
BDD“Automatizar comportamentos do software”
Produto Certo x Construir Certo
![Page 30: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/30.jpg)
BDD“Automatizar comportamentos do software”
From Customer Examples to Living Documentation
![Page 31: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/31.jpg)
BDD“Automatizar comportamentos do software”
![Page 32: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/32.jpg)
Living Documentation!!
Fonte: Specification by Example, Gojko Adzic (2011).
![Page 33: Melhore suas User Stories com Specification by Example](https://reader035.vdocuments.site/reader035/viewer/2022070511/58a2915e1a28ab36508b5651/html5/thumbnails/33.jpg)
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.