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

PDF
Testando Rails apps com RSpec
PDF
Ruby On Rails Regis
PDF
RubyConfBr 2015 - Rails & Javascript: faça isso direito
PDF
Java script aula 02 - operadores
PDF
don't repeat yourself front-ender
PDF
pepinos do cliente no código de testes da aplicação com OSS
PPTX
Maven 3, Sonar e Hudson
PPTX
Automação mobile com calabash
Testando Rails apps com RSpec
Ruby On Rails Regis
RubyConfBr 2015 - Rails & Javascript: faça isso direito
Java script aula 02 - operadores
don't repeat yourself front-ender
pepinos do cliente no código de testes da aplicação com OSS
Maven 3, Sonar e Hudson
Automação mobile com calabash

Mais procurados (20)

PPTX
Cucumber-QA_Night
PDF
Java script aula 05 - funções
PDF
LabMM3 - Aula teórica 09
PDF
Zend Framework
KEY
Design Patterns on Rails
PDF
Mean Stack
PPTX
Maven em 10 minutos
ODP
Construindo Sistemas Com Django
PPTX
Maven introdução Muito Rápida
PDF
Automação de Testes com SoapUI v1
ODP
tmn - Introdução ao JavaScript
PPTX
Testes Unitários com JavaScript utilizando Jasmine Framework
PPTX
Como Dominar seu Fluxo de Desenvolvimento com TDD
PPTX
Grails
PDF
Java Web 2 - Ferramentas e configuração
PDF
Apresentando o CakePHP
PDF
Gems para colocar seus testes no trilho
PDF
Armazenamentos offline-ap is-para-pwa
PDF
Api usando Silex
PDF
Introdução ao maven
Cucumber-QA_Night
Java script aula 05 - funções
LabMM3 - Aula teórica 09
Zend Framework
Design Patterns on Rails
Mean Stack
Maven em 10 minutos
Construindo Sistemas Com Django
Maven introdução Muito Rápida
Automação de Testes com SoapUI v1
tmn - Introdução ao JavaScript
Testes Unitários com JavaScript utilizando Jasmine Framework
Como Dominar seu Fluxo de Desenvolvimento com TDD
Grails
Java Web 2 - Ferramentas e configuração
Apresentando o CakePHP
Gems para colocar seus testes no trilho
Armazenamentos offline-ap is-para-pwa
Api usando Silex
Introdução ao maven
Anúncio

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

PPT
Testes Automatizados em Ruby on Rails
PDF
Ruby On Rails
KEY
Bdd rails 3
PDF
Rails na pratica
PDF
Palestra iv-ensol-nosql
PPSX
Introdução á linguagem Ruby com aplicativo em Rails
PDF
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
PDF
Caelum ruby-on-rails-rr71
PDF
Behaviour-Driven Development com Ruby
PDF
BDD com Cucumber
PPT
Dito Tech Talk RSpec
PPT
Introdução Ruby 1.8.7 + Rails 3
PDF
Criando Webservice REST com NodeJS, NoSQL & Docker
PPT
TechEd_OFC305
PDF
Ruby & Rails
PDF
Caelum ruby-on-rails-rr71
PDF
Esta começando a programar para a web? Então começe com Rails
ODP
Ruby on Rails - Filosofia e Prática
PDF
Palestra Desenvolvimento Ágil para Web com ROR UVA
Testes Automatizados em Ruby on Rails
Ruby On Rails
Bdd rails 3
Rails na pratica
Palestra iv-ensol-nosql
Introdução á linguagem Ruby com aplicativo em Rails
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Caelum ruby-on-rails-rr71
Behaviour-Driven Development com Ruby
BDD com Cucumber
Dito Tech Talk RSpec
Introdução Ruby 1.8.7 + Rails 3
Criando Webservice REST com NodeJS, NoSQL & Docker
TechEd_OFC305
Ruby & Rails
Caelum ruby-on-rails-rr71
Esta começando a programar para a web? Então começe com Rails
Ruby on Rails - Filosofia e Prática
Palestra Desenvolvimento Ágil para Web com ROR UVA
Anúncio

Último (16)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Arquitetura de computadores - Memórias Secundárias
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
COBITxITIL-Entenda as diferença em uso governança TI
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...

Behavior Driven Development com Ruby on Rails