Rafael Gióia de Barros
Rails Developer
Origem
• O Cucumber foi criado por membros da
comunidade Ruby para apoiar o
desenvolvimento de testes de aceitação
automatizado utilizando a técnica BDD*.
* Behavior Driven Development ( desenvolvimento guiado por comportamento )
Conhecendo o Cucumber
• O Cucumber é uma ferramenta que pode executar
documentação de funcionalidades escrita em texto puro.
• Você escreve uma especificação sobre uma determinada
funcionalidade usando texto puro e o Cucumber executa
testes em cima dessas especificações.
Instalação
1. Adicionar a gem 'cucumber-rails' no Gemfile;
2. bundle install;
3. rails generate cucumber:install;
Estruturação
• Após a instalação, teremos a seguinte
estrutura na aplicação:
Passos
• Passos para a utilização desse framework:
1. Descreva um comportamento em um texto simples;
2. Escreva uma definição dos passos;
3. Execute e veja os passos falharem;
4. Escreva o código para fazer os passos passarem;
5. Se necessário, refatorar o código ou o comportamento descrito;
Features
• De forma geral, toda user story pode ser resumida em uma
sequência finita de passos, onde os três pontos principais
são:
1. Dado que… (o estado atual das coisas)
2. Deseja-se fazer algo (a ação)
3. Para que se consiga alguma coisa (o resultado ou objetivo)
Palavras Chaves
• Usamos algumas palavras chaves para trabalhar com o cucumber:
1. Feature: define uma nova funcionalidade do sistema, que será composta por um
ou mais cenários
2. Scenario: define um possível cenário dentro da aplicação
3. Given: usado para especificar o estado da aplicação no momento do teste
4. When: usado para especificar as ações a serem realizadas
5. Then: usado para especificar os resultados esperados
6. And: usado para unir os diferentes passos, como: Given/When/Then
7. Background: usado para montar / popular um cenário que será testado
Evento Feature
Evento Steps
• Após rodarmos o cucumber, receberemos um aviso de que os
steps ainda não foram implementados, eles simplesmente
foram convertidos de texto puro para uma forma codificada.
Evento Steps
• Para facilitar muito a implementação dos
steps, iremos utilizar as seguintes gems:
1. FactoryGirl -
https://github.com/thoughtbot/factory_girl
2. Formulaic - https://github.com/thoughtbot/formulaic
3. Database Cleaner -
https://github.com/DatabaseCleaner/database_cleaner
• Depois de implementarmos nossos steps e
rodarmos a feature , os testes irão passar.
Boas Práticas
Má prática
 find(:xpath,
'//*[@id="new_historico_socio_tipo_pagamento"]/div[6]/input').click
 sleep(1)
Boa prática
 click_button('Mudar forma de pagamento')
Boas Práticas
Má prática
 fill_in 'pedido_filiacao[profissional_attributes][nacionalidade]', with: arg1
 fill_in 'pedido_filiacao[profissional_attributes][naturalidade]', with: arg1
 fill_in 'pedido_filiacao[profissional_attributes][orgao_emissor]', with: arg1
Boa prática
 fill_form(‘pedido_filiacao',
attributes_for(:pedido_filiacao).slice(:nacionalidade,:naturalidade,:orgao_emisso
r)
Referências
• https://cucumber.io/
• https://cassiomarques.wordpress.com/2008/11/16/testes-funcionais-no-rails-
usando-o-cucumber/
• http://www.bugbang.com.br/entendendo-bdd-com-cucumber-parte-i/
• http://www.devmedia.com.br/desenvolvimento-orientado-a-
comportamento-bdd-com-cucumber/33547

Cucumber

  • 1.
    Rafael Gióia deBarros Rails Developer
  • 2.
    Origem • O Cucumberfoi criado por membros da comunidade Ruby para apoiar o desenvolvimento de testes de aceitação automatizado utilizando a técnica BDD*. * Behavior Driven Development ( desenvolvimento guiado por comportamento )
  • 3.
    Conhecendo o Cucumber •O Cucumber é uma ferramenta que pode executar documentação de funcionalidades escrita em texto puro. • Você escreve uma especificação sobre uma determinada funcionalidade usando texto puro e o Cucumber executa testes em cima dessas especificações.
  • 4.
    Instalação 1. Adicionar agem 'cucumber-rails' no Gemfile; 2. bundle install; 3. rails generate cucumber:install;
  • 5.
    Estruturação • Após ainstalação, teremos a seguinte estrutura na aplicação:
  • 6.
    Passos • Passos paraa utilização desse framework: 1. Descreva um comportamento em um texto simples; 2. Escreva uma definição dos passos; 3. Execute e veja os passos falharem; 4. Escreva o código para fazer os passos passarem; 5. Se necessário, refatorar o código ou o comportamento descrito;
  • 7.
    Features • De formageral, toda user story pode ser resumida em uma sequência finita de passos, onde os três pontos principais são: 1. Dado que… (o estado atual das coisas) 2. Deseja-se fazer algo (a ação) 3. Para que se consiga alguma coisa (o resultado ou objetivo)
  • 8.
    Palavras Chaves • Usamosalgumas palavras chaves para trabalhar com o cucumber: 1. Feature: define uma nova funcionalidade do sistema, que será composta por um ou mais cenários 2. Scenario: define um possível cenário dentro da aplicação 3. Given: usado para especificar o estado da aplicação no momento do teste 4. When: usado para especificar as ações a serem realizadas 5. Then: usado para especificar os resultados esperados 6. And: usado para unir os diferentes passos, como: Given/When/Then 7. Background: usado para montar / popular um cenário que será testado
  • 9.
  • 10.
    Evento Steps • Apósrodarmos o cucumber, receberemos um aviso de que os steps ainda não foram implementados, eles simplesmente foram convertidos de texto puro para uma forma codificada.
  • 11.
  • 12.
    • Para facilitarmuito a implementação dos steps, iremos utilizar as seguintes gems: 1. FactoryGirl - https://github.com/thoughtbot/factory_girl 2. Formulaic - https://github.com/thoughtbot/formulaic 3. Database Cleaner - https://github.com/DatabaseCleaner/database_cleaner
  • 14.
    • Depois deimplementarmos nossos steps e rodarmos a feature , os testes irão passar.
  • 15.
    Boas Práticas Má prática find(:xpath, '//*[@id="new_historico_socio_tipo_pagamento"]/div[6]/input').click  sleep(1) Boa prática  click_button('Mudar forma de pagamento')
  • 16.
    Boas Práticas Má prática fill_in 'pedido_filiacao[profissional_attributes][nacionalidade]', with: arg1  fill_in 'pedido_filiacao[profissional_attributes][naturalidade]', with: arg1  fill_in 'pedido_filiacao[profissional_attributes][orgao_emissor]', with: arg1 Boa prática  fill_form(‘pedido_filiacao', attributes_for(:pedido_filiacao).slice(:nacionalidade,:naturalidade,:orgao_emisso r)
  • 17.
    Referências • https://cucumber.io/ • https://cassiomarques.wordpress.com/2008/11/16/testes-funcionais-no-rails- usando-o-cucumber/ •http://www.bugbang.com.br/entendendo-bdd-com-cucumber-parte-i/ • http://www.devmedia.com.br/desenvolvimento-orientado-a- comportamento-bdd-com-cucumber/33547