52
Especificação por meio de exemplos UMA INTRODUÇÃO Fábio Nogueira de Lucena

Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Embed Size (px)

DESCRIPTION

Uma introdução à Especificação por meio de Exemplos. Segue conteúdo do livro Specification By Example, Gojko Adzic, Manning, 2011.

Citation preview

Page 1: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Especificação por meio de exemplosUMA INTRODUÇÃO

Fábio Nogueira de Lucena

Page 2: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Referência

Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011

http://specificationbyexample.com/

Page 3: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Créditos para o autor e sua obra

Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011

Frases, citações e excertos obtidosdeste livro.

Page 4: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Aviso

As informações aqui contidas são uma interpretação do conteúdo do livro indicado no slide anterior.

Consulte o original para detalhes.

Page 5: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Esteja alerta!

Tecnologias são propostas e criadas continuamente para resolver problemas. Duas questões surgem:

A estratégia realmente contribui? O problema resolvido é parecido com o meu?

Page 6: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Orientações

Conhecimento de cerca de 50 projetos.

Alguns pequenos, outros envolvendo equipes espalhadas por diversos continentes.

Processos executados: XP, Scrum, Kanban e similares.

Outros nomes Testes de aceitação ágil

Behavior-Driven Development

Specification by Example, ...

Apresentado por meio de padrões

Page 7: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Tradicionalmente, ...

Desenvolver software exige extensas especificações funcionais e longas fases de testes.

O que não é compatível com liberações semanais.

Page 8: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

O que precisamos?

Evitar especificação “exagerada” Documentação confiável que explica o que o sistema

faz Verificar de forma eficiente se o sistema faz o que a

especificação diz. Manter documentação relevante e confiável com o

mínimo de custo de manutenção.

Especificação por meio de exemplos é uma estratégia dirigida para atingir estes objetivos.

Page 9: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Especificação por meio deexemplos é um conjunto de

padrões de processo.

Page 10: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

“Ao revelar os padrões de processos empregados por equipes de sucesso,eu espero ajudar outros a implementar estas ideias deliberadamente.”Gojko AdzicSpecification By ExampleManning, 2011.

Page 11: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Padrões de processos

Derivar escopo de objetivos

Especificar de forma colaborativa

Ilustrar usando exemplos

Refinar a especificação

Automatizar a validação sem alterar especificações

Validar frequentemente

Evoluir o sistema de documentação

Page 12: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos

Page 13: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos

Domínio da solução

Domínio do problema

Page 14: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos(contexto)

Escopo é solução para problema do domínio.

Escopo é um meio de se atingir um objetivo de negócio.

Muitos esperam a definição do escopo pelo cliente, product owner ou usuário antes de iniciar a implementação.

Tudo que ocorre antes da implementação é geralmente ignorado pela equipe de desenvolvimento.

Após a especificação, desenvolvedores implementam a solução.

Page 15: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos

Se clientes definem o escopo, então o projeto não se beneficia do conhecimento das pessoas na equipe de desenvolvimento.

O software fará o que o cliente pediu, mas não necessariamente o que precisava.

Page 16: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

O Código de Trânsito Brasileiro foi alterado(Lei nº 11.910 de 18 de março de 2009)

“Art. 105. São equipamentos obrigatórios dos veículos, entre outros a serem estabelecidos pelo CONTRAN: (...)

VII - equipamento suplementar de retenção – air bag frontal para o condutor e o passageiro do banco dianteiro. (...)

CONTRAN, Resolução no. 312, instituiu a obrigatoriedade do sistema antitravamento das rodas (freio ABS).

ESCOPO

Page 17: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

SegurançaOBJETIVO

Page 18: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

“Eu quero um carro com vido elétrico, ... Sério?

ESCOPO

Ah, conforto.OBJETIVO

Page 19: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Posso indicar o carro com as características, mas comoespecialista em automóveis, se eu conhecesse o real objetivo, possivelmente seria mais útil, efetivo, ...

RESUMO

Page 20: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos

‘Em vez de “cegamente” aceitar requisitos como a solução para um problema desconhecido, equipes de sucesso derivam escopo de objetivos.’Gojko Adzic

Page 21: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Derivar escopo de objetivos

Inicia-se com objetivo de negócio do cliente.

Todos colaboram para definir o escopo que atinge o objetivo.

A equipe trabalha com os usuários do negócio na determinação da solução.

Aqueles do negócio concentram-se no objetivo de uma característica desejável e no valor que esperam extrair dela.

A equipe então sugere uma solução que é mais barata, mais rápida, ...

Page 22: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Especificar de forma colaborativa

Page 23: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Em vez de contar com uma única pessoa para obter as especificações corretamente, equipes de sucesso colaboram com entendidos no negócio para especificar a solução.

Page 24: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Cria uma “propriedade compartilhada”das especificações, tornando a equipe mais engajada.

Page 25: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Ilustrar usando exemplos

Page 26: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Em vez de esperar pelo registro preciso deespecificações em uma linguagem de programaçãodurante a implementação, equipes de sucessoilustram especificações usando exemplos.

Page 27: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Equipe trabalha com especialistas do negóciopara identificar “exemplos chave” quedescrevem a funcionalidade esperada.

Desenvolvedores sugerem exemplos queilustram casos “problemáticos”.

Todos têm uma compreensão compartilhadado que precisa ser produzido.

Page 28: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Exemplos chave servem como alvo paradesenvolvedores e como critério de avaliaçãoobjetivo para checar se o desenvolvimentoestá concluído.

Se os exemplos são fáceis de entender,então podem ser empregados comorequisitos detalhados e não ambíguos.

Page 29: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Refinar a especificação

Page 30: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Especialistas no negócio tendem a pensarda perspectiva da interface com o usuário.

Detalhar como algo deve ser feito é emvez do que é exigido é um desperdício.

Page 31: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Muitos detalhes tornam exemplos difíceisde comunicar e compreender.

Page 32: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Equipes de sucesso, ao refinar a especificação,removem informações “não essenciais”e criam um contexto preciso e concretopara o desenvolvimento e testes.

Page 33: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Equipes de sucesso especificamo que é suposto que o softwarefaça, em vez de como ele faz.

Cucumber (exemplo)

Especificação com exemplos é uma especificação de trabalho, é um teste de aceitação, é um teste funcional.

Page 34: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Automatizar a validaçãosem alterar especificações

Page 35: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Verificação rápida é essencial para o desenvolvimentode software em iterações curtas.

Ou seja, é preciso tornar o processo de validação barato e eficiente.

Solução óbvia: automação.

Page 36: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Automação sim, mas como?

Rhino Mocks

Especificações automatizadastecnicamente são inacessíveis aos especialistas do negócio.

Page 37: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Várias versões

Versão desenvolvedor Versão mais legível

Sincronização???!!!

Page 38: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Equipes de sucesso não correm o risco de“tradução entre formatos”.

Exemplos chave que são compreensíveis eacessíveis a toda a equipe tornam-seespecificações executáveis.

Cucumber (exemplo)

Page 39: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Se é preciso alterar, então há um único lugar.

Única fonte

Consumida pordesenvolvedores,

responsáveis por testes,especialistas no domínio,

e outros.

Page 40: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Fitnesse

Wiki

Page 41: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Concordion

Page 42: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Concordion

Page 43: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Cucumber

Page 44: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

specFlow

Page 45: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

codeeffects http://rule.codeeffects.com/

Page 46: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

OpenRules

Page 47: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Validar frequentemente

Page 48: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Um suporte eficiente de software exige sabermos o quê ele faz e o porquê.

Em muitos casos, a única formade fazer isto é recorrer ao código ou encontrar alguém que possa fazer para nós.

Page 49: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Código é, frequentemente, a única coisa em quepodemos confiar; muita documentação é desatualizada antes do término do projeto.

Desenvolvedores são oráculos de conhecimentoe gargalos de informação.

Page 50: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Evoluir o sistema dedocumentação

Page 51: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Ao longo do tempo, mudanças ocorrem eprovocam atualizações na“documentação viva”.

Page 52: Especificação por meio de exemplos (BDD, testes de aceitação, ...)

Créditos para o autor e sua obra(agradecimentos finais)

Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011

Frases, citações e excertos obtidosdeste livro.