SlideShare uma empresa Scribd logo
1 de 42
BDD com Rails 3
     Thiago Pradi
Thiago Pradi

• thiago.pradi@gmail.com
• twitter.com/thiagopradi
• github.com/tchandy
• www.thiagopradi.net
Thiago Pradi

• Desenvolvedor Ruby por 3 anos
• Atualmente trabalha pela Taoweb
• Bacharelando em ciência da computação
  pela FURB
• Participou do Ruby Summer of Code
Rails?!




          http://www.designshak.com/blog/ruby-on-rails
Ruby on Rails

• Full Stack Web Framework
• Escrito em Ruby
• Open Source
• Usado com sucesso por inúmeras
  empresas
Rails 3

• Modular
• Refinado por mais de 1 ano
• Bundler
• Mais rápido que o Rails 2
• Entre outras melhorias..
Vantagens do Rails

• Produtividade
• Código Limpo e Simples
• Divertido ;-)
Porém..


• Como retirar valor para o cliente de um
  um ambiente caótico?
• Com código realmente sólido?!


                                  http://www.flickr.com/photos/tracy_olson/61056391/
Métodologias
Orientadas a teste são
  a solução! (ou ao
 menos, parte dela)


             http://www.flickr.com/photos/cayusa/981372736/sizes/m/in/photostream/
TDD
• Test Driven Development
• Originada no Smalltalk
• Idealizado por Kent Beck
• Três Passos: Teste Falhando, Código para o
  teste passar, Melhorar o código.
• Foco no problema a ser resolvido
BDD

• Behavior Driven Development
• Idealizado por Dan North
• Inspirado no TDD
• Nome dos testes mais “legíveis”
• Foco no Comportamento
BDD e Requisitos

• Requisitos são comportamentos
• Linguagem Universal para testes de
  aceitação
• Conceito de estórias
Estórias

• As a ...
• I Want to ...
• so that ..
Cenários

• Given ...
• When ...
• Then ...
#language: pt
Funcionalidade: Postar novas mensagem
  Como um usuário logado no urubu
  Eu quero postar novas mensagens
  Para compartilhar minhas mensagens com meus amigos

Cenário: Postando uma nova mensagem
  Dado que eu estou logado como o usuário thiago
  Quando eu vou para a página principal
  E sigo nova mensagem
  E preencho "Mensagem" com "Olá, Usuários do Urubu!"
  E pressiono "Postar"
  Então eu devo ver "Mensagem postada com sucesso!"
BDD On Rails

• Difundido na comunidade e nas empresas
• Várias ferramentas
• Flexibilidade e facilidade com as
  ferramentas
Ferramentas


• RSpec
• Cucumber
RSpec

• Behavior Driven Development for Ruby
• Foco no comportamento do código
• DSL Simples
• Sintaxe Limpa
Exemplo
require 'spec_helper'

describe User do
  it "não deve permitir usuários com o mesmo login" do
    User.create!(:login => "thiago")
    u = User.new(:login => "thiago")
    u.save.should be_false
  end
end
Idéia


                 • Projeto “Urubu”
                 • Um twitter brasileiro.


http://www.flickr.com/photos/fcmont/5070170400/sizes/m/in/photostream/
require 'spec_helper'

describe User do
  describe ".public_messages" do
    it "deve retornar todas as mensagens públicas do
usuário" do
      user = User.create!(:login => "thiago")
      men1 = user.messages.create!(:body =>
"Pública", :private => false)
      men2 = user.messages.create!(:body =>
"Privada", :private => true)
      user.public_messages.should == [men1]
    end
  end
end
Falha
Código
class User < ActiveRecord::Base
  validates_uniqueness_of :login

  has_many :messages

  def public_messages
    self.messages.select { |m| !m.private? }
  end
end
Testes passando!
Refatore-me
class User < ActiveRecord::Base
  validates_uniqueness_of :login

  has_many :messages

  def public_messages
    self.messages.public_messages
  end
end
Refatore-me
class Message < ActiveRecord::Base
  belongs_to :user

  scope :public_messages, :conditions => {:private =>
false}
end
Teste passando!
Cucumber

• Definição de estórias no estilo BDD
• Mesma linguagem entre desenvolvedores e
  clientes
• Foco nas partes mais importantes para o
  cliente
Idéia


• Um usuário precisa postar mensagens!
#language: pt
Funcionalidade: Postar novas mensagem
  Como um usuário logado no urubu
  Eu quero postar novas mensagens
  Para compartilhar minhas mensagens com meus amigos

Cenário: Postando uma nova mensagem
  Dado que eu estou logado como o usuário thiago
  Quando eu vou para a página principal
  E sigo nova mensagem
  E preencho "Mensagem" com "Olá, Usuários do Urubu!"
  E pressiono "Postar"
  Então eu devo ver "Mensagem postada com sucesso!"
Implementação


• Cada linha do cenário equivele a uma
  “step”
• Pode ser compartilhada entre cenários
Exemplo

When /^vou para "(.+)"$/ do |url|
  visit url
end
Porém..

• Como testar realmente em um browser?
• Muitas vezes o javascript interfere no
  comportamento do sistema
• Capybara resolvendo o problema
Capybara


• Apenas mudando uma tag, conseguimos o
  teste rodando em um browser!
Conclusões


• Foco na melhoria de código
• Foco em resolver o problema do cliente
Experiências


• Trabalhos realizados
• Ruby Summer of Code - Projeto Octopus.
Algumas dicas finais

• TDD e BDD não são silver bullets
• Porém, siga o principio TAFT, “Test all the
  Fucking Time”.
• Sinta você mesmo as melhorias ao usar
  TDD/BDD
Links para as
        ferramentas
• www.cukes.info
• www.rspec.info
• http://jbehave.org/ - BDD com Java
• http://everzet.com/Behat/ - BDD com PHP
Obrigado!

Mais conteúdo relacionado

Mais procurados

LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Apresentação Trello
Apresentação TrelloApresentação Trello
Apresentação TrelloDouglas Silva
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndLeonardo Balter
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Rubycodeland
 
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Emerson Macedo
 
Breve história do javascript modularizado
Breve história do javascript modularizadoBreve história do javascript modularizado
Breve história do javascript modularizadoFilipe M. Silva
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”pt_programar
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalLeo Baiano
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Marcelo Bohn
 
Design para WordPress- Anyssa Ferreira - WordCamp BH 2015
Design para WordPress-  Anyssa Ferreira - WordCamp BH 2015Design para WordPress-  Anyssa Ferreira - WordCamp BH 2015
Design para WordPress- Anyssa Ferreira - WordCamp BH 2015Anyssa Ferreira
 

Mais procurados (15)

LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Apresentação Trello
Apresentação TrelloApresentação Trello
Apresentação Trello
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front End
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Ruby
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12
 
Breve história do javascript modularizado
Breve história do javascript modularizadoBreve história do javascript modularizado
Breve história do javascript modularizado
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissional
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Projeto Colaborativo
Projeto ColaborativoProjeto Colaborativo
Projeto Colaborativo
 
Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013
 
Documentando seu CSS
Documentando seu CSSDocumentando seu CSS
Documentando seu CSS
 
Design para WordPress- Anyssa Ferreira - WordCamp BH 2015
Design para WordPress-  Anyssa Ferreira - WordCamp BH 2015Design para WordPress-  Anyssa Ferreira - WordCamp BH 2015
Design para WordPress- Anyssa Ferreira - WordCamp BH 2015
 

Destaque

1w6 Regeln 2.4.0
1w6 Regeln 2.4.01w6 Regeln 2.4.0
1w6 Regeln 2.4.0guestcad3af
 
Gnome Sort
Gnome SortGnome Sort
Gnome Sortf2008
 
Power Point Greie
Power Point GreiePower Point Greie
Power Point GreieAndolo
 
Genetik Cystische Fibrose
Genetik Cystische FibroseGenetik Cystische Fibrose
Genetik Cystische Fibroseeenvs
 
Cobertura extraordinaria Seguro Integral de Salud
Cobertura extraordinaria Seguro Integral de SaludCobertura extraordinaria Seguro Integral de Salud
Cobertura extraordinaria Seguro Integral de SaludMarta Aliaga
 

Destaque (7)

1w6 Regeln 2.4.0
1w6 Regeln 2.4.01w6 Regeln 2.4.0
1w6 Regeln 2.4.0
 
Life
LifeLife
Life
 
Fukushima
FukushimaFukushima
Fukushima
 
Gnome Sort
Gnome SortGnome Sort
Gnome Sort
 
Power Point Greie
Power Point GreiePower Point Greie
Power Point Greie
 
Genetik Cystische Fibrose
Genetik Cystische FibroseGenetik Cystische Fibrose
Genetik Cystische Fibrose
 
Cobertura extraordinaria Seguro Integral de Salud
Cobertura extraordinaria Seguro Integral de SaludCobertura extraordinaria Seguro Integral de Salud
Cobertura extraordinaria Seguro Integral de Salud
 

Semelhante a Bdd rails 3

Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 
Evoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de ContratoEvoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de ContratoRafael Portela
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 

Semelhante a Bdd rails 3 (20)

Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
Evoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de ContratoEvoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de Contrato
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 

Bdd rails 3

  • 1. BDD com Rails 3 Thiago Pradi
  • 2. Thiago Pradi • thiago.pradi@gmail.com • twitter.com/thiagopradi • github.com/tchandy • www.thiagopradi.net
  • 3. Thiago Pradi • Desenvolvedor Ruby por 3 anos • Atualmente trabalha pela Taoweb • Bacharelando em ciência da computação pela FURB • Participou do Ruby Summer of Code
  • 4. Rails?! http://www.designshak.com/blog/ruby-on-rails
  • 5. Ruby on Rails • Full Stack Web Framework • Escrito em Ruby • Open Source • Usado com sucesso por inúmeras empresas
  • 6. Rails 3 • Modular • Refinado por mais de 1 ano • Bundler • Mais rápido que o Rails 2 • Entre outras melhorias..
  • 7. Vantagens do Rails • Produtividade • Código Limpo e Simples • Divertido ;-)
  • 8. Porém.. • Como retirar valor para o cliente de um um ambiente caótico? • Com código realmente sólido?! http://www.flickr.com/photos/tracy_olson/61056391/
  • 9. Métodologias Orientadas a teste são a solução! (ou ao menos, parte dela) http://www.flickr.com/photos/cayusa/981372736/sizes/m/in/photostream/
  • 10. TDD • Test Driven Development • Originada no Smalltalk • Idealizado por Kent Beck • Três Passos: Teste Falhando, Código para o teste passar, Melhorar o código. • Foco no problema a ser resolvido
  • 11. BDD • Behavior Driven Development • Idealizado por Dan North • Inspirado no TDD • Nome dos testes mais “legíveis” • Foco no Comportamento
  • 12. BDD e Requisitos • Requisitos são comportamentos • Linguagem Universal para testes de aceitação • Conceito de estórias
  • 13. Estórias • As a ... • I Want to ... • so that ..
  • 14. Cenários • Given ... • When ... • Then ...
  • 15. #language: pt Funcionalidade: Postar novas mensagem Como um usuário logado no urubu Eu quero postar novas mensagens Para compartilhar minhas mensagens com meus amigos Cenário: Postando uma nova mensagem Dado que eu estou logado como o usuário thiago Quando eu vou para a página principal E sigo nova mensagem E preencho "Mensagem" com "Olá, Usuários do Urubu!" E pressiono "Postar" Então eu devo ver "Mensagem postada com sucesso!"
  • 16. BDD On Rails • Difundido na comunidade e nas empresas • Várias ferramentas • Flexibilidade e facilidade com as ferramentas
  • 18. RSpec • Behavior Driven Development for Ruby • Foco no comportamento do código • DSL Simples • Sintaxe Limpa
  • 19. Exemplo require 'spec_helper' describe User do it "não deve permitir usuários com o mesmo login" do User.create!(:login => "thiago") u = User.new(:login => "thiago") u.save.should be_false end end
  • 20. Idéia • Projeto “Urubu” • Um twitter brasileiro. http://www.flickr.com/photos/fcmont/5070170400/sizes/m/in/photostream/
  • 21. require 'spec_helper' describe User do describe ".public_messages" do it "deve retornar todas as mensagens públicas do usuário" do user = User.create!(:login => "thiago") men1 = user.messages.create!(:body => "Pública", :private => false) men2 = user.messages.create!(:body => "Privada", :private => true) user.public_messages.should == [men1] end end end
  • 22. Falha
  • 23. Código class User < ActiveRecord::Base validates_uniqueness_of :login has_many :messages def public_messages self.messages.select { |m| !m.private? } end end
  • 25. Refatore-me class User < ActiveRecord::Base validates_uniqueness_of :login has_many :messages def public_messages self.messages.public_messages end end
  • 26. Refatore-me class Message < ActiveRecord::Base belongs_to :user scope :public_messages, :conditions => {:private => false} end
  • 28. Cucumber • Definição de estórias no estilo BDD • Mesma linguagem entre desenvolvedores e clientes • Foco nas partes mais importantes para o cliente
  • 29. Idéia • Um usuário precisa postar mensagens!
  • 30. #language: pt Funcionalidade: Postar novas mensagem Como um usuário logado no urubu Eu quero postar novas mensagens Para compartilhar minhas mensagens com meus amigos Cenário: Postando uma nova mensagem Dado que eu estou logado como o usuário thiago Quando eu vou para a página principal E sigo nova mensagem E preencho "Mensagem" com "Olá, Usuários do Urubu!" E pressiono "Postar" Então eu devo ver "Mensagem postada com sucesso!"
  • 31. Implementação • Cada linha do cenário equivele a uma “step” • Pode ser compartilhada entre cenários
  • 32. Exemplo When /^vou para "(.+)"$/ do |url| visit url end
  • 33.
  • 34.
  • 35. Porém.. • Como testar realmente em um browser? • Muitas vezes o javascript interfere no comportamento do sistema • Capybara resolvendo o problema
  • 36. Capybara • Apenas mudando uma tag, conseguimos o teste rodando em um browser!
  • 37.
  • 38. Conclusões • Foco na melhoria de código • Foco em resolver o problema do cliente
  • 39. Experiências • Trabalhos realizados • Ruby Summer of Code - Projeto Octopus.
  • 40. Algumas dicas finais • TDD e BDD não são silver bullets • Porém, siga o principio TAFT, “Test all the Fucking Time”. • Sinta você mesmo as melhorias ao usar TDD/BDD
  • 41. Links para as ferramentas • www.cukes.info • www.rspec.info • http://jbehave.org/ - BDD com Java • http://everzet.com/Behat/ - BDD com PHP

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n