bdd com cucumber, selenium e rails
TRANSCRIPT
Planning Game
BDD on RailsCucumber, Selenium, Rspec e compahiaChristiano MilfontTerceiro encontro 2009Copyright 2009 Milfont.org
Palestrante
Christiano Milfont
http://www.milfont.org
Anos 80 - dcada Code-and-Fix.
Ausncia de metodologias de desenvolvimento.
Programao procedural e estruturada.
Evoluo da programao linear.
Programas so: sequncia, deciso e iterao.
Dificuldade de simular relaes entre entidades em processos de negcios.
Release Plan
A good plan violently executed now is better than a perfect plan executed next week.
Um bom plano executado violentamente agora melhor que um plano perfeito executado na prxima semana.
General George S. Patton
Master Story List
IDCriticidadeItemIteraoEstimativaRestando1AltssimoRegistrar exercicio1202BaixoConvidar amigos18?3Baixo
???4MdioAprovar parceiro12?5AltoControlar idade1406BaixoCadastrar status???7BaixoInserir fotos???8baixoCadastro treinador???
User Story
Card [carto]
Conversation [conversao]
Confirmation [confirmao]
Ron Jeffries, 2001
Behaviour Driven Development
Contar histria do analista pedreiroCritrios de aceitao devem ser executveisUML fracassou em ser uma linguagem de modelagem por provocar um gap entre o modelo e a execuo.
Story CardBehaviour Driven Development
2 pontos
FuncionalidadeAtletas precisam registrar exerccios
detalhes: Tipo de exerccio, tempo de inicio, tempo de trmino e frequncia cardaca
A story card with notes providing additional detail.
Story CardBehaviour Driven Development
2 pontos
FuncionalidadeAtletas precisam registrar exerccios
PropriedadesNo obrigatrios: frequncia cardaca.Obrigatrios: tipo de exerccio e perodo
A story card with notes providing additional detail.
Hands on
A story card with notes providing additional detail.
Test Driven Development
Desenvolvimento guiado por testes um caminho de gerenciamento do medo durante a programao.
Kent Beck - Test Driven
Development by Example
In a paper called Simple Smalltalk Testing: With Patterns,1 Kent Beck describedhow to write Object Tests using Smalltalk. This paper presented the evolution of asimple testing framework that became known as SUnit. Kent teamed up with ErichGamma to port the framework to Java and called the result JUnit. Since 1999,
Fearless programming
Test Driven Development
RED-GREEN-REFACTOR
Escreva um teste que no funciona.
Escreva o cdigo e fao-o funcionar.
Refatore e elimine o cdigo repetitivo.
Three Rules of TDDS escreve codigo depois de passar em todas as verificaes possiveis
Test Driven Development
O ritmo em 3 As
Arrange [Criar um objeto]
Act [Invocar um mtodo]
Assert [Verificar o resultado]
Refactoring Workbook, Bill Wake
Arrange = Create an objectAct = Invoke a methodAssert = Check a result
Test Driven Development
def idade(data)
idade_ano = (Date.today.year - data.year)
if Date.today.month > data.month
idade_ano
elsif Date.today.month == data.month && Date.today.day == data.day
idade_ano
elsif Date.today.month < data.month
idade_ano - 1
elsif Date.today.month == data.month && Date.today.day < data.day
idade_ano - 1
elsif Date.today.month == data.month && Date.today.day > data.day
idade_ano
end
end
Estgio 1 - Refactoring
Arrange = Create an objectAct = Invoke a methodAssert = Check a result
Test Driven Development
def idade(data)
if data
idade_ano = (Date.today.year - data.year)
if Date.today.month > data.month ||
Date.today.month == data.month && Date.today.day > data.day ||
Date.today.month == data.month && Date.today.day == data.day
idade_ano
elsif Date.today.month < data.month ||
Date.today.month == data.month && Date.today.day < data.day
idade_ano - 1
end
end
end
Estgio 2 - Refactoring
Arrange = Create an objectAct = Invoke a methodAssert = Check a result
Test Driven Development
def idade(data)
if data
idade_ano = (Date.today.year - data.year)
idade_ano = idade_ano - 1 if (Date.today.month