SlideShare uma empresa Scribd logo
1 de 13
BDD
Behavior-driven Development
Eron Rodrigues Alves
04/08/2015
Introdução
Dan North (2006)
TDD? ATDD? DDD?
• Por onde começar?
• O que testar?
• O teste precisa começar falhando? (Baby steps)
Introdução
TDD (e ATDD) DDD
BDD
Práticas
• Outside-in Development.
• Exemplos para descrever o comportamento.
(Estórias - Requisitos)
• Automatizar os exemplos. (Testes de
Aceitação)
– Testes são chamados de “Cenários” ou
“Especificações”.
Práticas
• Usar deve (should).
• Usar simuladores de teste (mocks, stubs,
fakes, dummies, spies).
• Linguagem Ubíqua.
Ciclo de desenvolvimento
1. Descrever a estória;
2. Detalhar o comportamento esperado da estória
através de cenários;
3. Mapear o cenário em uma classe de teste
automatizado;
4. Implementar o código para que o teste passe com
sucesso. (Red – Yellow – Green)
Ferramentas
• JSpec (Java)
• ScalaTest (Scala)
• Specter (.Net)
• RSpec (Ruby)
• Cucumber
Cucumber
Descrevendo Comportamento
Given (Dado): Representa a situação inicial do teste e pode ser
considerado como a pré-condição.
When (Quando): Representa uma ação ou evento. Pode ser
considerado como um procedimento.
Then (Então): Representa uma resposta, comportamento ou resultado
esperado.
And (E): usado para estender o given, when ou then positivamente.
But (Mas): usado para estender o given, when ou then negativamente.
Cucumber
Descrevendo Comportamento
Feature Inscrição
Inscrição deve ser rápida e amigável.
Scenario: Inscrição com sucesso.
Novos usuários devem receber um e-mail de confirmação e
uma saudação personalizada ao entrar no sistema.
Given Escolhi me inscrever
When Me inscrever com dados válidos
Then Devo receber um e-mail de confirmação
And Devo visualizar uma saudação personalizada
Cucumber
Descrevendo Comportamento
Scenario: E-mail duplicado
Quando alguém tenta criar uma conta para um endereço de
e-mail que já está cadastrado.
Given escolhi me inscrever
But inseri e-mail já cadastrado
Then devo ser informado que o e-mail já está cadastrado
And deve ser oferecida uma opção para recuperar a senha
Cucumber
Desenvolvendo o Teste
BDD
Conclusão
Referências
http://dannorth.net/introducing-bdd/
http://guide.agilealliance.org/
http://www.thoughtworks.com/pt/insights/
http://www.bugbang.com.br/
https://cucumber.io/docs/reference
http://www.toolsqa.com/

Mais conteúdo relacionado

Semelhante a Introdução à BDD (Behavior-driven Development)

Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
Rangel Javier
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracos
Thiago Avelino
 
O que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágilO que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágil
Samanta Cicilia
 
Java e o mercado de trabalho
Java e o mercado de trabalhoJava e o mercado de trabalho
Java e o mercado de trabalho
Claudiney Marques
 
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
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
Lucas Caton
 

Semelhante a Introdução à BDD (Behavior-driven Development) (20)

Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracos
 
O que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágilO que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágil
 
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Java e o mercado de trabalho
Java e o mercado de trabalhoJava e o mercado de trabalho
Java e o mercado de trabalho
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
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?
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testes
 
Agile official
Agile officialAgile official
Agile official
 
Testes automatizados mobile - uma prova de conceito
Testes automatizados mobile - uma prova de conceitoTestes automatizados mobile - uma prova de conceito
Testes automatizados mobile - uma prova de conceito
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 

Mais de Eron Rodrigues Alves (8)

Contágio Por que as coisas pegam? - Jonah Berger
Contágio Por que as coisas pegam? - Jonah BergerContágio Por que as coisas pegam? - Jonah Berger
Contágio Por que as coisas pegam? - Jonah Berger
 
Canvas de proposta de valor
Canvas de proposta de valorCanvas de proposta de valor
Canvas de proposta de valor
 
Teste de usabilidade
Teste de usabilidadeTeste de usabilidade
Teste de usabilidade
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Angular2 - Principais Mudanças
Angular2 - Principais MudançasAngular2 - Principais Mudanças
Angular2 - Principais Mudanças
 
Design Thinking
Design ThinkingDesign Thinking
Design Thinking
 
Marketing 3.0
Marketing 3.0Marketing 3.0
Marketing 3.0
 
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
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 - 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 - 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
 

Introdução à BDD (Behavior-driven Development)