SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
JC Session
- BDD -
Juraci Vieira
Nicholas Pufal
Vamos começar...
TDD?
Feature files (ou "especificação das
funcionalidades em linguagem natural")?
Critérios de aceitação?
Coisas óbvias são realmente óbvias?
Quantos pontos
há nesta estrela?
Com exemplos:
Dado que quero uma estrela de 8 pontos
Quando peço para o app gerar a estrela
Então temos a estrela à esquerda como resultado
Dado que quero uma estrela de 12 pontos
Quando peço para o app gerar a estrela
Então temos a estrela à esquerda como resultado
O senso comum nos engana
● O simples pode ser complexo
● Exemplos auxiliam muito na compreensão
● Exemplos como forma de iniciar uma
conversa
Precisamos de exemplos concretos para
compreender com clareza um domínio
Linha do tempo
1996
Kent Beck
(Primeiras ideias
TDD)
2001 2003 2007 2008
Manifesto Ágil
2011
Kent Beck, Martin
Fowler e outros
Dan North
JBehave
(Primeiras ideias
BDD)
RSpec
David Chelimsky,
Dan North, Aslak
Hellesoy e outros
RBehave
Dan North
Cucumber,
Gherkin
parser/standard
Aslak Hellesoy
Specification by
example
Gojko Adzic
1. Desenvolvimento
2. Testes
3. Ambas opções anteriores
Pergunta: TDD se enquadra em qual das
opções abaixo?
TDD é uma técnica de desenvolvimento
utilizada para entregar código de alta
qualidade
● Testes de regressão de baixo nível
● Design emergente (revisão e evolução
constantes do código)
TDD != Unit Testing
● Unit é um termo vago e confuso
● Faz com que os desenvolvedores tenham a
ideia de proporção 1:1
● Unit Tests são altamente dependentes da
estrutura interna
Não pense em termos de unidade e sim em
facetas de comportamento
"TDD era uma idéia fabulosa embrulhada em um
nome que fazia com que as pessoas pensassem a
partir de uma perspectiva equivocada de testes." ~
ASTELS, DAVE
"Eu decidi que deve ser possı́vel apresentar TDD
de uma forma que vá direto às suas coisas boas e
evite todas as suas armadilhas." ~ NORTH, DAN
BDD portanto foi uma evolução natural do TDD
trazendo consigo novas terminologias
● Behavior - Tests
● Expectations - Assertions
● Specification-centric - Test-centric
E como ocorre a comunicacão nos
projetos?
Livros extremamente recomendados:
Links interessantes
● A new look at Test Driven Development - Dave
Astels
● Introducing BDD - Dan North
● RSpec and Behavior-Driven Development - Dave
Astels & Steven Baker
● Stubbing Is Not Enough - Gregory Moeck
● BDD: Busting the myths - Gojko Adzic
Perguntas?
Feedbacks?

Mais conteúdo relacionado

Semelhante a ThoughtWorks JC Session - BDD

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?Raphael Paiva
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingPedro Pereira Martins
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
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ândiaRogerio Fontes
 
Testando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitTestando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitRodrigo Vieira
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Testando sua aplicação com BDD - conf.phprs
Testando sua aplicação com BDD - conf.phprsTestando sua aplicação com BDD - conf.phprs
Testando sua aplicação com BDD - conf.phprsLeonn Leite
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeUniversidade Tiradentes
 
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)Maurício Aniche
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoHélio Medeiros
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 

Semelhante a ThoughtWorks JC Session - BDD (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
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?
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Agile2011 140902173318-phpapp02
Agile2011 140902173318-phpapp02Agile2011 140902173318-phpapp02
Agile2011 140902173318-phpapp02
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
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
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
Testando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitTestando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnit
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Cesar.Edu Turma S2I
Cesar.Edu Turma S2ICesar.Edu Turma S2I
Cesar.Edu Turma S2I
 
Testando sua aplicação com BDD - conf.phprs
Testando sua aplicação com BDD - conf.phprsTestando sua aplicação com BDD - conf.phprs
Testando sua aplicação com BDD - conf.phprs
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por teste
 
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)
Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concreto
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 

ThoughtWorks JC Session - BDD

  • 1. JC Session - BDD - Juraci Vieira Nicholas Pufal
  • 2. Vamos começar... TDD? Feature files (ou "especificação das funcionalidades em linguagem natural")? Critérios de aceitação?
  • 3. Coisas óbvias são realmente óbvias? Quantos pontos há nesta estrela?
  • 4. Com exemplos: Dado que quero uma estrela de 8 pontos Quando peço para o app gerar a estrela Então temos a estrela à esquerda como resultado Dado que quero uma estrela de 12 pontos Quando peço para o app gerar a estrela Então temos a estrela à esquerda como resultado
  • 5. O senso comum nos engana ● O simples pode ser complexo ● Exemplos auxiliam muito na compreensão ● Exemplos como forma de iniciar uma conversa
  • 6. Precisamos de exemplos concretos para compreender com clareza um domínio
  • 7. Linha do tempo 1996 Kent Beck (Primeiras ideias TDD) 2001 2003 2007 2008 Manifesto Ágil 2011 Kent Beck, Martin Fowler e outros Dan North JBehave (Primeiras ideias BDD) RSpec David Chelimsky, Dan North, Aslak Hellesoy e outros RBehave Dan North Cucumber, Gherkin parser/standard Aslak Hellesoy Specification by example Gojko Adzic
  • 8. 1. Desenvolvimento 2. Testes 3. Ambas opções anteriores Pergunta: TDD se enquadra em qual das opções abaixo?
  • 9. TDD é uma técnica de desenvolvimento utilizada para entregar código de alta qualidade ● Testes de regressão de baixo nível ● Design emergente (revisão e evolução constantes do código)
  • 10. TDD != Unit Testing ● Unit é um termo vago e confuso ● Faz com que os desenvolvedores tenham a ideia de proporção 1:1 ● Unit Tests são altamente dependentes da estrutura interna
  • 11. Não pense em termos de unidade e sim em facetas de comportamento
  • 12. "TDD era uma idéia fabulosa embrulhada em um nome que fazia com que as pessoas pensassem a partir de uma perspectiva equivocada de testes." ~ ASTELS, DAVE
  • 13. "Eu decidi que deve ser possı́vel apresentar TDD de uma forma que vá direto às suas coisas boas e evite todas as suas armadilhas." ~ NORTH, DAN
  • 14. BDD portanto foi uma evolução natural do TDD trazendo consigo novas terminologias ● Behavior - Tests ● Expectations - Assertions ● Specification-centric - Test-centric
  • 15.
  • 16.
  • 17. E como ocorre a comunicacão nos projetos?
  • 18.
  • 19.
  • 20.
  • 21.
  • 23. Links interessantes ● A new look at Test Driven Development - Dave Astels ● Introducing BDD - Dan North ● RSpec and Behavior-Driven Development - Dave Astels & Steven Baker ● Stubbing Is Not Enough - Gregory Moeck ● BDD: Busting the myths - Gojko Adzic