34
Melhore suas User Stories com Specification by Example Bruno Corrêa [email protected]

Melhore suas User Stories com Specification by Example

Embed Size (px)

Citation preview

Page 1: Melhore suas User Stories com Specification by Example

Melhore suas User Stories com Specification by ExampleBruno Corrê[email protected]

Page 2: Melhore suas User Stories com Specification by Example

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

O porquê ....

Page 4: Melhore suas User Stories com Specification by Example

Gap de comunicação!!!

Page 5: Melhore suas User Stories com Specification by Example

Shared Understanding!!

Page 6: Melhore suas User Stories com Specification by Example

Utilizar Exemplos do domínio do negócio!!

Page 7: Melhore suas User Stories com Specification by Example

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

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

A ideia é...“Eliminar especificações abstratas”

Page 10: Melhore suas User Stories com Specification by Example

A ideia é...“Building the right software”

Page 11: Melhore suas User Stories com Specification by Example

Fonte: Specification by Example, Gojko Adzic (2011).

Aproxima as áreas...

Page 12: Melhore suas User Stories com Specification by Example

Situada no quadrante...

Fonte: Let's break the Agile Testing Quadrants, Gojko Adzic (2013).

Page 13: Melhore suas User Stories com Specification by Example

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Backlog Grooming“Refinamento do Product Backlog”

Page 28: Melhore suas User Stories com Specification by Example

Backlog Grooming“Refinamento do Product Backlog”

Definition of Ready (DOR)

Page 29: Melhore suas User Stories com Specification by Example

BDD“Automatizar comportamentos do software”

Produto Certo x Construir Certo

Page 30: Melhore suas User Stories com Specification by Example

BDD“Automatizar comportamentos do software”

From Customer Examples to Living Documentation

Page 31: Melhore suas User Stories com Specification by Example

BDD“Automatizar comportamentos do software”

Page 32: Melhore suas User Stories com Specification by Example

Living Documentation!!

Fonte: Specification by Example, Gojko Adzic (2011).

Page 33: Melhore suas User Stories com Specification by Example

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.

Page 34: Melhore suas User Stories com Specification by Example

Obrigado!! Perguntas...?

Bruno Corrê[email protected]