jefferson andrade - bdd - behavior-driven development - ita
DESCRIPTION
Apresentação feita na disciplina de mestrado do ITA, CE-229 - Teste de Software, sobre BDD - Behavior-Driven Development. Jefferson Andrade - ITA.TRANSCRIPT
Prof. Dr. Luiz Alberto Vieira Dias
Aluno: Jefferson Andrade de Oliveira Jú[email protected]
ITA – PG/EEC-I – CE-229 – Teste de Software– Junho de 2013
BDDBehavior-Driven Development
AGENDA
Jefferson Andrade – CE-229 – BDD 2 / 30
APRESENTAÇÃO
JEFFERSON ANDRADE DE OLIVEIRA JÚNIOR@AndradeJeff
3 / 30Jefferson Andrade – CE-229 – BDD
Especialista em Tecnologia – Imagem Soluções de Inteligência Geográfica
Certificado Professional Scrum Master
Certificado Professional Scrum Developer
Certificado Oracle Java Programmer (SCJP)
Certificado Oracle Java Enterprise Architect (OCMJEA)
Bacharel em Ciência da Computação – DCC/UFMG
Especialista em Engenharia de Software – DCC/UFMG
MBA em Gerência de Projetos – FGV
MOTIVAÇÃO
Jefferson Andrade – CE-229 – BDD 4 / 30
“Não era bem isso que eu queria.” - Usuário
“Informando estes valores não apareceu o resultado desejado.” - Testador
“Porque ficou azul quando eu informei 0 graus e vermelho quando informei 100?” – Usuário
“Para mim este comportamento de fechar a janela sem perguntar nada era óbvio neste caso de erro.” -
Desenvolvedor
Evitar frases do tipo:
O QUE É BDD?
5 / 30Jefferson Andrade – CE-229 – BDD
� BDD – Behaviour-Driven Development(Desenvolvimento Orientado ao Comportamento)
� Criado por:
BDD
� BDD possui uma linguagem única para especificar comportamentos.
� BDD é uma técnica de desenvolvimento ágil que visa integrar regras de negócios com linguagem de programação.
� "Behaviour-driven development is about implementing anapplication by describing its behaviour from the perspective of its stakeholders“.
� “It describes a cycle of interactions with welldefined outputs, resulting in the delivery of working, tested software that matters.”
� Behavior-driven development é uma versão especializada do Test-Driven Development que foca na especificação do comportamento das unidades de software.
Jefferson Andrade – CE-229 – BDD 6 / 30
CENÁRIOS DE NEGÓCIO
7 / 30Jefferson Andrade – CE-229 – BDD
� Story: [Narrative]
As a RoleI request a FeatureTo gain a Benefit
� ScenarioGiven [Context]
And [Some more context]When [Event]Then [Outcome]
And [Another outcome]
CENÁRIOS DE NEGÓCIO
8 / 30Jefferson Andrade – CE-229 – BDD
Subcategoria – EspecificaçãoCategoria Principal – User Story
FORMAS DE IMPLEMENTAR
9 / 30Jefferson Andrade – CE-229 – BDD
• ManualUma estória de usuário ou especificação contém um ou mais critérios de aceitação verificável (cenários) e estes contém casos de testes com valores reais.
• AutomatizadaSemelhante ao manual, mas implementado através de ferramentas ou arcabouços que dão suporte ao BDD: RSpec (Ruby), Cucumber (Ruby), Jbehave(Java), SpecFlow (.Net).
MANUAL
10 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – RSPEC (1/4)
11 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – RSPEC (2/4)
12 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – RSPEC (3/4)
13 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – RSPEC (4/4)
14 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (1/6)
15 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (1/6)
16 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (3/6)
17 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (4/6)
18 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (5/6)
19 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – CUCUMBER (6/6)
20 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – JBEHAVE (1/5)
21 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – JBEHAVE (2/5)
22 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – JBEHAVE (3/5)
23 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – JBEHAVE (4/5)
24 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – JBEHAVE (5/5)
25 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – SPECFLOW (1/2)
26 / 30Jefferson Andrade – CE-229 – BDD
AUTOMATIZADA – SPECFLOW (2/2)
27 / 30Jefferson Andrade – CE-229 – BDD
CONCLUSÕES
28 / 30
Permite a união do time de desenvolvimento, pois os testadores podem escrever os cenários de teste com BDD para os desenvolvedores implementarem.
Gera uma documentação dinâmica.
Permitir visão do todo, antes de redigir os testes, minimizando chances de fracasso do projeto.
Cenários de teste ficam claros e documentados para o usuário.
Jefferson Andrade – CE-229 – BDD
REFERÊNCIAS• http://dannorth.net/introducing-bdd/ acessado em 10/05/2013.• http://elabor8.com.au/blog/a-practical-blog-on-how-to-write-
scenarios-using-bdd acessado em 10/05/2013.• http://www.slideshare.net/bkeepers/behavior-driven-
development-with-cucumber-presentation acessado em 10/05/2013.
• http://www.slideshare.net/rkmael/introduo-a-bdd acessado em 10/05/2013.
• http://www.slideshare.net/dversaci/behavior-driven-development-bdd-and-agile-testing acessado em 10/05/2013.
• Apresentação interna – Imagem – Fábio Piona.• Cucumber: http://cukes.info/ acessado em 13/06/2013.• RSpec: http://rspec.info/ acessado em 13/06/2013.• JBehave: http://jbehave.org/ acessado em 13/06/2013.• http://en.wikipedia.org/wiki/Behavior-driven_development
acessado em 13/06/2013.• http://www.slideshare.net/IosifItkin/behavior-driven-
development-pros-and-cons acessado em 13/06/2013.
29 / 30Jefferson Andrade – CE-229 – BDD
Jefferson Andrade de Oliveira Jú[email protected]
OBRIGADO!