thoughtworks jc session - bdd

24
JC Session - BDD - Juraci Vieira Nicholas Pufal

Upload: nicholas-pufal

Post on 07-Dec-2014

342 views

Category:

Software


1 download

DESCRIPTION

Apresentação que fizemos para JCs da ThoughtWorks, falando um pouco sobre o surgimento do BDD, as vantagens em se utilizar exemplos concretos na descrição de um domínio, efeitos positivos que BDD causa na comunicação de um time ágil e materiais interessantes sobre o tema.

TRANSCRIPT

Page 1: ThoughtWorks JC Session - BDD

JC Session - BDD -Juraci Vieira

Nicholas Pufal

Page 2: ThoughtWorks JC Session - BDD

Vamos começar...

TDD?Feature files (ou "especificação das

funcionalidades em linguagem natural")?Critérios de aceitação?

Page 3: ThoughtWorks JC Session - BDD

Coisas óbvias são realmente óbvias?

Quantos pontos há nesta estrela?

Page 4: ThoughtWorks JC Session - BDD

Com exemplos:

Dado que quero uma estrela de 8 pontosQuando peço para o app gerar a estrelaEntão temos a estrela à esquerda como resultado

Dado que quero uma estrela de 12 pontosQuando peço para o app gerar a estrelaEntão temos a estrela à esquerda como resultado

Page 5: ThoughtWorks JC Session - BDD

O senso comum nos engana

● O simples pode ser complexo● Exemplos auxiliam muito na compreensão● Exemplos como forma de iniciar uma

conversa

Page 6: ThoughtWorks JC Session - BDD

Precisamos de exemplos concretos para compreender com clareza um domínio

Page 7: ThoughtWorks JC Session - BDD

Linha do tempo

1996

Kent Beck(Primeiras ideias

TDD)

2001 2003 2007 2008

Manifesto Ágil

2011

Kent Beck, Martin Fowler e outros

Dan NorthJBehave

(Primeiras ideias BDD)

RSpec

David Chelimsky, Dan North, Aslak Hellesoy e outros

RBehaveDan North

Cucumber,Gherkin

parser/standard

Aslak Hellesoy

Specification by example

Gojko Adzic

Page 8: ThoughtWorks JC Session - BDD

1. Desenvolvimento2. Testes3. Ambas opções anteriores

Pergunta: TDD se enquadra em qual das opções abaixo?

Page 9: ThoughtWorks JC Session - BDD

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)

Page 10: ThoughtWorks JC Session - BDD

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

Page 11: ThoughtWorks JC Session - BDD

Não pense em termos de unidade e sim em facetas de comportamento

Page 12: ThoughtWorks JC Session - BDD

"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

Page 13: ThoughtWorks JC Session - BDD

"Eu decidi que deve ser possıvel apresentar TDD de uma forma que va direto as suas coisas boas e evite todas as suas armadilhas." ~ NORTH, DAN

Page 14: ThoughtWorks JC Session - BDD

BDD portanto foi uma evolução natural do TDD trazendo consigo novas terminologias

● Behavior - Tests ● Expectations - Assertions● Specification-centric - Test-centric

Page 15: ThoughtWorks JC Session - BDD
Page 16: ThoughtWorks JC Session - BDD
Page 17: ThoughtWorks JC Session - BDD

E como ocorre a comunicacão nos projetos?

Page 18: ThoughtWorks JC Session - BDD
Page 19: ThoughtWorks JC Session - BDD
Page 20: ThoughtWorks JC Session - BDD
Page 21: ThoughtWorks JC Session - BDD
Page 22: ThoughtWorks JC Session - BDD

Livros extremamente recomendados:

Page 24: ThoughtWorks JC Session - BDD

Perguntas?Feedbacks?