SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Especificação por
meio de exemplos
UMA INTRODUÇÃO

Fábio Nogueira de Lucena
Referência


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

http://specificationbyexample.com/
Créditos para o autor e sua obra


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

Frases, citações e excertos obtidos
deste livro.
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.
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?

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



Behavior-Driven Development





Testes de aceitação ágil

Specification by Example, ...

Apresentado por meio de padrões
Tradicionalmente, ...
Desenvolver software exige extensas
especificações funcionais e longas fases de
testes.
O que não é compatível com liberações
semanais.
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.
“Ao revelar os padrões de processos
empregados por equipes de sucesso,
eu espero ajudar outros a implementar
estas ideias deliberadamente.”
Gojko Adzic
Specification By Example
Manning, 2011.
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
Derivar escopo de objetivos
Domínio da solução

Derivar escopo de objetivos
Domínio do problema
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.
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.
ESCOPO

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).
OBJETIVO

Segurança
ESCOPO

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

OBJETIVO

Ah, conforto.
RESUMO

Posso indicar o carro com as características, mas como
especialista em automóveis, se eu conhecesse o real
objetivo, possivelmente seria mais útil, efetivo, ...
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
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, ...
Especificar de forma
colaborativa
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.
Cria uma
“propriedade compartilhada”
das especificações, tornando a
equipe mais engajada.
Ilustrar usando exemplos
Em vez de esperar pelo registro preciso de
especificações em uma linguagem de programação
durante a implementação, equipes de sucesso
ilustram especificações usando exemplos.
Equipe trabalha com especialistas do negócio
para identificar “exemplos chave” que
descrevem a funcionalidade esperada.
Desenvolvedores sugerem exemplos que
ilustram casos “problemáticos”.
Todos têm uma compreensão compartilhada
do que precisa ser produzido.
Exemplos chave servem como alvo para
desenvolvedores e como critério de avaliação
objetivo para checar se o desenvolvimento
está concluído.
Se os exemplos são fáceis de entender,
então podem ser empregados como
requisitos detalhados e não ambíguos.
Refinar a especificação
Especialistas no negócio tendem a pensar
da perspectiva da interface com o usuário.

Detalhar como algo deve ser feito é em
vez do que é exigido é um desperdício.
Muitos detalhes tornam exemplos difíceis
de comunicar e compreender.
Equipes de sucesso, ao
refinar a especificação,
removem informações “não essenciais”
e criam um contexto preciso e concreto
para o desenvolvimento e testes.
Equipes de sucesso especificam
o que é suposto que o software
faç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.
Automatizar a validação
sem alterar especificações
Verificação rápida é essencial para o desenvolvimento
de software em iterações curtas.
Ou seja, é preciso tornar o processo de validação
barato e eficiente.
Solução óbvia: automação.
Automação sim, mas como?
Rhino Mocks

Especificações
automatizadas
tecnicamente
são inacessíveis aos
especialistas do negócio.
Várias versões
Versão desenvolvedor

Versão mais legível

Sincronização???!!!
Equipes de sucesso não correm o risco de
“tradução entre formatos”.
Exemplos chave que são
compreensíveis e
acessíveis a toda a
equipe tornam-se
especificações
executáveis.

Cucumber (exemplo)
Se é preciso alterar, então há um único lugar.
Única fonte

Consumida por
desenvolvedores,
responsáveis por testes,
especialistas no domínio,
e outros.
Fitnesse
Wiki
Concordion
Concordion
Cucumber
specFlow
codeeffects

http://rule.codeeffects.com/
OpenRules
Validar frequentemente
Um suporte eficiente de
software exige sabermos o
quê ele faz e o porquê.
Em muitos casos, a única forma
de fazer isto é recorrer ao
código ou encontrar alguém
que possa fazer para nós.
Código é, frequentemente, a única coisa em que
podemos confiar; muita documentação é
desatualizada antes do término do projeto.
Desenvolvedores são oráculos de conhecimento
e gargalos de informação.
Evoluir o sistema de
documentação
Ao longo do tempo, mudanças ocorrem e
provocam atualizações na
“documentação viva”.
Créditos para o autor e sua obra
(agradecimentos finais)


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

Frases, citações e excertos obtidos
deste livro.

Weitere ähnliche Inhalte

Was ist angesagt?

API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberKnoldus Inc.
 
Scouter Tutorial & Sprint
Scouter Tutorial & SprintScouter Tutorial & Sprint
Scouter Tutorial & SprintGunHee Lee
 
Test Automation
Test AutomationTest Automation
Test Automationrockoder
 
SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING Abhinav Shukla
 
Software Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsSoftware Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsKMS Technology
 
Top 50 Software Testing Interview Questions & Answers | Edureka
Top 50 Software Testing Interview Questions & Answers | EdurekaTop 50 Software Testing Interview Questions & Answers | Edureka
Top 50 Software Testing Interview Questions & Answers | EdurekaEdureka!
 
Api testing bible using postman
Api testing bible using postmanApi testing bible using postman
Api testing bible using postmanAbhishek Saxena
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app HíbridaElias Nogueira
 
AutoSpice Agile Hand in Hand
AutoSpice Agile Hand in HandAutoSpice Agile Hand in Hand
AutoSpice Agile Hand in HandRuchika Sachdeva
 

Was ist angesagt? (20)

QACampus PPT (STLC)
QACampus PPT (STLC)QACampus PPT (STLC)
QACampus PPT (STLC)
 
QA Center Of Excellence (TCoE)
QA Center Of Excellence (TCoE)QA Center Of Excellence (TCoE)
QA Center Of Excellence (TCoE)
 
STLC
STLCSTLC
STLC
 
Browser_Stack_Intro
Browser_Stack_IntroBrowser_Stack_Intro
Browser_Stack_Intro
 
API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
 
Manual Testing.
Manual Testing.Manual Testing.
Manual Testing.
 
Scouter Tutorial & Sprint
Scouter Tutorial & SprintScouter Tutorial & Sprint
Scouter Tutorial & Sprint
 
Automation Testing Syllabus - Checklist
Automation Testing Syllabus - ChecklistAutomation Testing Syllabus - Checklist
Automation Testing Syllabus - Checklist
 
documentation-testing.ppt
documentation-testing.pptdocumentation-testing.ppt
documentation-testing.ppt
 
Test Automation
Test AutomationTest Automation
Test Automation
 
SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING
 
TCoE
TCoETCoE
TCoE
 
Software Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsSoftware Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing Trends
 
Test Automation
Test AutomationTest Automation
Test Automation
 
Top 50 Software Testing Interview Questions & Answers | Edureka
Top 50 Software Testing Interview Questions & Answers | EdurekaTop 50 Software Testing Interview Questions & Answers | Edureka
Top 50 Software Testing Interview Questions & Answers | Edureka
 
Api testing bible using postman
Api testing bible using postmanApi testing bible using postman
Api testing bible using postman
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
 
Chapter 5 - Tools
Chapter 5 - ToolsChapter 5 - Tools
Chapter 5 - Tools
 
AutoSpice Agile Hand in Hand
AutoSpice Agile Hand in HandAutoSpice Agile Hand in Hand
AutoSpice Agile Hand in Hand
 

Andere mochten auch

Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
 
Behaviour Driven Development (BDD) With Apex on Force.com
Behaviour Driven Development (BDD) With Apex on Force.comBehaviour Driven Development (BDD) With Apex on Force.com
Behaviour Driven Development (BDD) With Apex on Force.comSalesforce Developers
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber FuncionaLaís Berlatto
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 
ATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentNaresh Jain
 

Andere mochten auch (7)

Uml
UmlUml
Uml
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
Behaviour Driven Development (BDD) With Apex on Force.com
Behaviour Driven Development (BDD) With Apex on Force.comBehaviour Driven Development (BDD) With Apex on Force.com
Behaviour Driven Development (BDD) With Apex on Force.com
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
 
BDD com Cucumber
BDD com CucumberBDD com Cucumber
BDD com Cucumber
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
ATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven Development
 

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

Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixCris Fidelix
 
Specificationby example
Specificationby example Specificationby example
Specificationby example Laís Berlatto
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Cristiano Schwening
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de bananaejedelmal
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme ProgrammingDenis L Presciliano
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaGraziella Bonizi
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCPFrank Coelho
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareEmerson Henrique
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareLuciano Almeida
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 

Ähnlich wie Especificação por meio de exemplos (BDD, testes de aceitação, ...) (20)

Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Specificationby example
Specificationby example Specificationby example
Specificationby example
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de banana
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de software
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Lista de Práticas Ágeis
Lista de Práticas ÁgeisLista de Práticas Ágeis
Lista de Práticas Ágeis
 

Mehr von Fábio Nogueira de Lucena

Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Fábio Nogueira de Lucena
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoFábio Nogueira de Lucena
 

Mehr von Fábio Nogueira de Lucena (20)

CSS
CSSCSS
CSS
 
Fundamentos de Programação Front-End
Fundamentos de Programação Front-EndFundamentos de Programação Front-End
Fundamentos de Programação Front-End
 
JavaScript: Aprendendo a programar
JavaScript: Aprendendo a programarJavaScript: Aprendendo a programar
JavaScript: Aprendendo a programar
 
HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)
 
HTTP: Um Curso Básico
HTTP: Um Curso BásicoHTTP: Um Curso Básico
HTTP: Um Curso Básico
 
Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08
 
Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017
 
Arquétipos
ArquétiposArquétipos
Arquétipos
 
Introducao integracao
Introducao integracaoIntroducao integracao
Introducao integracao
 
Healthdb Visão Geral
Healthdb Visão GeralHealthdb Visão Geral
Healthdb Visão Geral
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógico
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Prontuário Eletrônico do Paciente
Prontuário Eletrônico do PacienteProntuário Eletrônico do Paciente
Prontuário Eletrônico do Paciente
 
Introducao
IntroducaoIntroducao
Introducao
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Orientação a Objetos (3)
Orientação a Objetos (3)Orientação a Objetos (3)
Orientação a Objetos (3)
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Orientação a Objetos (1)
Orientação a Objetos (1)Orientação a Objetos (1)
Orientação a Objetos (1)
 

Kürzlich hochgeladen

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

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

  • 1. Especificação por meio de exemplos UMA INTRODUÇÃO Fábio Nogueira de Lucena
  • 2. Referência  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 http://specificationbyexample.com/
  • 3. Créditos para o autor e sua obra  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 Frases, citações e excertos obtidos deste livro.
  • 4. 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.
  • 5. 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? 
  • 6. 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   Behavior-Driven Development   Testes de aceitação ágil Specification by Example, ... Apresentado por meio de padrões
  • 7. Tradicionalmente, ... Desenvolver software exige extensas especificações funcionais e longas fases de testes. O que não é compatível com liberações semanais.
  • 8. 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.
  • 9.
  • 10. “Ao revelar os padrões de processos empregados por equipes de sucesso, eu espero ajudar outros a implementar estas ideias deliberadamente.” Gojko Adzic Specification By Example Manning, 2011.
  • 11. 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
  • 12. Derivar escopo de objetivos
  • 13. Domínio da solução Derivar escopo de objetivos Domínio do problema
  • 14. 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.
  • 15. 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.
  • 16. ESCOPO 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).
  • 18. ESCOPO “Eu quero um carro com vido elétrico, ... Sério? OBJETIVO Ah, conforto.
  • 19. RESUMO Posso indicar o carro com as características, mas como especialista em automóveis, se eu conhecesse o real objetivo, possivelmente seria mais útil, efetivo, ...
  • 20. 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
  • 21. 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, ...
  • 23. 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.
  • 24. Cria uma “propriedade compartilhada” das especificações, tornando a equipe mais engajada.
  • 26. Em vez de esperar pelo registro preciso de especificações em uma linguagem de programação durante a implementação, equipes de sucesso ilustram especificações usando exemplos.
  • 27. Equipe trabalha com especialistas do negócio para identificar “exemplos chave” que descrevem a funcionalidade esperada. Desenvolvedores sugerem exemplos que ilustram casos “problemáticos”. Todos têm uma compreensão compartilhada do que precisa ser produzido.
  • 28. Exemplos chave servem como alvo para desenvolvedores e como critério de avaliação objetivo para checar se o desenvolvimento está concluído. Se os exemplos são fáceis de entender, então podem ser empregados como requisitos detalhados e não ambíguos.
  • 30. Especialistas no negócio tendem a pensar da perspectiva da interface com o usuário. Detalhar como algo deve ser feito é em vez do que é exigido é um desperdício.
  • 31. Muitos detalhes tornam exemplos difíceis de comunicar e compreender.
  • 32. Equipes de sucesso, ao refinar a especificação, removem informações “não essenciais” e criam um contexto preciso e concreto para o desenvolvimento e testes.
  • 33. Equipes de sucesso especificam o que é suposto que o software faç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.
  • 34. Automatizar a validação sem alterar especificações
  • 35. Verificação rápida é essencial para o desenvolvimento de software em iterações curtas. Ou seja, é preciso tornar o processo de validação barato e eficiente. Solução óbvia: automação.
  • 36. Automação sim, mas como? Rhino Mocks Especificações automatizadas tecnicamente são inacessíveis aos especialistas do negócio.
  • 37. Várias versões Versão desenvolvedor Versão mais legível Sincronização???!!!
  • 38. Equipes de sucesso não correm o risco de “tradução entre formatos”. Exemplos chave que são compreensíveis e acessíveis a toda a equipe tornam-se especificações executáveis. Cucumber (exemplo)
  • 39. Se é preciso alterar, então há um único lugar. Única fonte Consumida por desenvolvedores, responsáveis por testes, especialistas no domínio, e outros.
  • 48. Um suporte eficiente de software exige sabermos o quê ele faz e o porquê. Em muitos casos, a única forma de fazer isto é recorrer ao código ou encontrar alguém que possa fazer para nós.
  • 49. Código é, frequentemente, a única coisa em que podemos confiar; muita documentação é desatualizada antes do término do projeto. Desenvolvedores são oráculos de conhecimento e gargalos de informação.
  • 50. Evoluir o sistema de documentação
  • 51. Ao longo do tempo, mudanças ocorrem e provocam atualizações na “documentação viva”.
  • 52. Créditos para o autor e sua obra (agradecimentos finais)  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 Frases, citações e excertos obtidos deste livro.