Melhore suas User Stories com Specification by Example

Post on 14-Feb-2017

42 views 2 download

Transcript of Melhore suas User Stories com Specification by Example

Melhore suas User Stories com Specification by ExampleBruno Corrêabrunocorrea@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.

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

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”

Como <papel>Eu quero

<função>Para <valor>

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 HealthCareEu 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 existentePara poder conversar com todas elas em apenas uma conversa.

Exemplo 2

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

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”

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

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

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

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êabrunocorrea@ufpa.br