bdd com cucumber, selenium e rails

Download BDD com Cucumber, Selenium e Rails

If you can't read please download the document

Upload: milfont-consulting

Post on 16-Apr-2017

2.762 views

Category:

Technology


1 download

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