SlideShare uma empresa Scribd logo
1 de 36
Um problema fácil de resolver
        Eles sempre começam assim
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
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
Obrigado!
Twitter: @marcoafilho

GitHub: github.com/marcoafilho

Email: marcoafilho@gmail.com

Mais conteúdo relacionado

Mais procurados

LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com DjangoMarinho Brandão
 
Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1mateuscaletti
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkYuri Adams
 
Como Dominar seu Fluxo de Desenvolvimento com TDD
Como Dominar seu Fluxo de Desenvolvimento com TDDComo Dominar seu Fluxo de Desenvolvimento com TDD
Como Dominar seu Fluxo de Desenvolvimento com TDDRachid Calazans
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoEduardo Mendes
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Webgoal
 
Armazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaArmazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaEduardo Matos
 

Mais procurados (20)

Cucumber-QA_Night
Cucumber-QA_NightCucumber-QA_Night
Cucumber-QA_Night
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
 
Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine Framework
 
Como Dominar seu Fluxo de Desenvolvimento com TDD
Como Dominar seu Fluxo de Desenvolvimento com TDDComo Dominar seu Fluxo de Desenvolvimento com TDD
Como Dominar seu Fluxo de Desenvolvimento com TDD
 
Grails
GrailsGrails
Grails
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuração
 
Apresentando o CakePHP
Apresentando o CakePHPApresentando o CakePHP
Apresentando o CakePHP
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho
 
Armazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaArmazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwa
 
Api usando Silex
Api usando SilexApi usando Silex
Api usando Silex
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 

Semelhante a Behavior Driven Development com Ruby on Rails

Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3tchandy
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Ana Luiza
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpecguest49d83b2
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caique Moretto
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaGabriel Molter
 
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
 

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

Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Palestra iv-ensol-nosql
Palestra iv-ensol-nosqlPalestra iv-ensol-nosql
Palestra iv-ensol-nosql
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
Behaviour-Driven Development com Ruby
Behaviour-Driven Development com RubyBehaviour-Driven Development com Ruby
Behaviour-Driven Development com Ruby
 
BDD com Cucumber
BDD com CucumberBDD com Cucumber
BDD com Cucumber
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpec
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 
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
 

Behavior Driven Development com Ruby on Rails