SlideShare uma empresa Scribd logo
Behavior Driven Development com Ruby on Rails
Um problema fácil de resolver
        Eles sempre começam assim
Behavior Driven Development com Ruby on Rails
A solução
0 Preciso de um gerenciador de coleções:
   0 Comic books;
   0 DVDs;
   0 LEGOs;
   0 Jogos;
Qualidade
atende aos requisitos
Comunicação



              Linguagem
Cliente                   Desenvolvedor
Comunicação



            Histórias

Cliente                 Desenvolvedor
História #123

Para conseguir mais informações de uma
coleção de revistas
Como um usuário
Eu deveria ver um relatório das minhas
revistas por tipo.
História #123
                                 proposição
                                  de valor

Para conseguir mais informações de uma
coleção de revistas
Como um usuário
Eu deveria ver um relatório das minhas
revistas por tipo.
História #123

Para conseguir mais informações de uma
coleção de revistas         papel
Como um usuário
Eu deveria ver um relatório das minhas
revistas por tipo.
História #123

Para conseguir mais informações de uma
coleção de revistas
Como um usuário
Eu deveria ver um relatório das minhas
revistas por tipo.
                        funcionalidade
Qualidade
funcionar como esperado
Test Driven Development

     Teste              Faça o
      que                teste
     falha              passar



             Refatore
Testes de aceitação
História #123

Apresentar todos os gêneros de revistas com a
soma real
Deveria mostrar o # total de revistas
Deveria possuir o link para nova revista
Deveria possuir o link para todas as revistas
Wireframes
Behavior Driven Development

              Teste                Faça o
Aceitação   unitário                teste
que falha   que falha              passar



                        Refatore
Escolhendo as armas
 Ruby on Rails, Cucumber, RSpec, Webrat
Behavior Driven Development com Ruby on Rails
Mãos à obra
Configurando o ambiente
Instalação    Lembre-se de ter a
                                   última versão do ruby
                                         instalado.
 0 Rails:
$ gem install rails


 0 RSpec:
$ gem install rspec


 0 Cucumber
$ gem install cucumber
Criando uma nova aplicação
  0 Para criar uma nova aplicação Rails é simples:

$ rails new manga_collection -T


  0 Pronto! Para testar é executar:

$ cd manga_collection
$ rails s


  0 No navegador acesse http://localhost:3000
Gerenciando os pacotes
  0 Altere o arquivo Gemfile responsável pelos
    gerenciamento de pacotes com as seguintes linhas:
group   :test do
  gem   'database_cleaner', '0.7.2'
  gem   'rspec-rails', '2.9.0'
  gem   'cucumber-rails', '1.3.0'
  gem   'webrat', '0.7.3'
end
  0 Precisamos instalar as novas dependências:
$ bundle install
O ambiente de testes
  0 Vamos instalar o RSpec e o Cucumber na aplicação

$ rails g rspec:install
$ rails g cucumber:install
Hora de entender
Adicionando funcionalidade
Rails scaffold
 0 Como exemplo vamos usar a funcionalidade de
   scaffold para modelar o sistema.
$ rails g scaffold manga name:string volume:integer genre:string
Escreva o pepino
Veja falhar
 0 Execute:
$ cucumber features/


 0 A princípio ele vai apenas informar que existem
   passos não definidos;
 0 Crie um arquivo .rb em features/step_definitions;
 0 Implemente os passos e veja os testes falharem;
manga.rb
cucumber features/
Faça o teste passar
0 Implementar um controle para relatórios de mangá;
0 Página html.erb com as expectativas no wireframe;
0 Rota apontando para a página;




                 Enough is enough!!!
Refatorar sem medo
0 Princípio: Encontrar code smells
0 Exemplos:
   0 Variáveis temporárias;
   0 Longos métodos;
   0 Longas classes;
0 Os testes servem de suporte para refatoração!
Cucumber ou RSpec?



  AMBOS
Behavior Driven Development com Ruby on Rails
Obrigado!
Twitter: @marcoafilho

GitHub: github.com/marcoafilho

Email: marcoafilho@gmail.com

Mais conteúdo relacionado

Mais procurados (20)

PPTX
Cucumber-QA_Night
Taise Dias da Silva
 
PDF
Java script aula 05 - funções
Cristiano Pires Martins
 
PDF
LabMM3 - Aula teórica 09
Carlos Santos
 
PDF
Zend Framework
Diego Tremper
 
KEY
Design Patterns on Rails
tchandy
 
PDF
Mean Stack
Bruno Catão
 
PPTX
Maven em 10 minutos
Rodrigo Branas
 
ODP
Construindo Sistemas Com Django
Marinho Brandão
 
PPTX
Maven introdução Muito Rápida
Rudson Kiyoshi Souza Carvalho
 
PDF
Automação de Testes com SoapUI v1
mateuscaletti
 
ODP
tmn - Introdução ao JavaScript
Claudio Gamboa
 
PPTX
Testes Unitários com JavaScript utilizando Jasmine Framework
Yuri Adams
 
PPTX
Como Dominar seu Fluxo de Desenvolvimento com TDD
Rachid Calazans
 
PPTX
Grails
Alex Guido
 
PDF
Java Web 2 - Ferramentas e configuração
Eduardo Mendes
 
PDF
Apresentando o CakePHP
Marcelo Andrade
 
PDF
Gems para colocar seus testes no trilho
Webgoal
 
PDF
Armazenamentos offline-ap is-para-pwa
Eduardo Matos
 
PDF
Api usando Silex
Elton Minetto
 
PDF
Introdução ao maven
Anderson Araújo
 
Cucumber-QA_Night
Taise Dias da Silva
 
Java script aula 05 - funções
Cristiano Pires Martins
 
LabMM3 - Aula teórica 09
Carlos Santos
 
Zend Framework
Diego Tremper
 
Design Patterns on Rails
tchandy
 
Mean Stack
Bruno Catão
 
Maven em 10 minutos
Rodrigo Branas
 
Construindo Sistemas Com Django
Marinho Brandão
 
Maven introdução Muito Rápida
Rudson Kiyoshi Souza Carvalho
 
Automação de Testes com SoapUI v1
mateuscaletti
 
tmn - Introdução ao JavaScript
Claudio Gamboa
 
Testes Unitários com JavaScript utilizando Jasmine Framework
Yuri Adams
 
Como Dominar seu Fluxo de Desenvolvimento com TDD
Rachid Calazans
 
Grails
Alex Guido
 
Java Web 2 - Ferramentas e configuração
Eduardo Mendes
 
Apresentando o CakePHP
Marcelo Andrade
 
Gems para colocar seus testes no trilho
Webgoal
 
Armazenamentos offline-ap is-para-pwa
Eduardo Matos
 
Api usando Silex
Elton Minetto
 
Introdução ao maven
Anderson Araújo
 

Semelhante a Behavior Driven Development com Ruby on Rails (20)

PPT
rails_and_agile
Juan Maiz
 
PDF
Minicurso Ruby on Rails
Maurício Eduardo
 
PDF
Rails 03
guest7ff4e2
 
PDF
Conhecendo o Ruby on Rails
Jony dos Santos Kostetzer
 
PDF
Palestra Desenvolvimento Ágil para Web com ROR UVA
Thiago Cifani
 
PDF
Rails na pratica
Túlio Ornelas
 
PDF
Ruby On Rails
Paulo César M Jeveaux
 
PDF
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Julio Monteiro
 
KEY
Palestra Fatec
almeidaricardo
 
PPT
Dito Tech Talk RSpec
guest49d83b2
 
PDF
O que é o ruby on rails?
Leonardo Costa
 
PDF
Desenvolvimento web ágil e descomplicado usando ruby on rails
Maurício Linhares
 
PDF
Behaviour-Driven Development com Ruby
Jony dos Santos Kostetzer
 
PDF
Workshop Ruby on Rails dia 2 ruby-pt
Pedro Sousa
 
PDF
Ruby & Rails
Sergio Henrique
 
PDF
Workshop - nivelamento tech
21212com
 
PDF
Dando os primeiros passos com rails
Marcos Sousa
 
PDF
Palestra ror edted
brunoaalves
 
PDF
Curso de Ruby on Rails - Aula 01
Maurício Linhares
 
PDF
Ruby e o Mundo Mágico dos Unicórnios
Frevo on Rails
 
rails_and_agile
Juan Maiz
 
Minicurso Ruby on Rails
Maurício Eduardo
 
Rails 03
guest7ff4e2
 
Conhecendo o Ruby on Rails
Jony dos Santos Kostetzer
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Thiago Cifani
 
Rails na pratica
Túlio Ornelas
 
Ruby On Rails
Paulo César M Jeveaux
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Julio Monteiro
 
Palestra Fatec
almeidaricardo
 
Dito Tech Talk RSpec
guest49d83b2
 
O que é o ruby on rails?
Leonardo Costa
 
Desenvolvimento web ágil e descomplicado usando ruby on rails
Maurício Linhares
 
Behaviour-Driven Development com Ruby
Jony dos Santos Kostetzer
 
Workshop Ruby on Rails dia 2 ruby-pt
Pedro Sousa
 
Ruby & Rails
Sergio Henrique
 
Workshop - nivelamento tech
21212com
 
Dando os primeiros passos com rails
Marcos Sousa
 
Palestra ror edted
brunoaalves
 
Curso de Ruby on Rails - Aula 01
Maurício Linhares
 
Ruby e o Mundo Mágico dos Unicórnios
Frevo on Rails
 
Anúncio

Behavior Driven Development com Ruby on Rails