SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
Testes de aceitação com
                                      Steak e Capybara


                                                       por Jésus Lopes
                                                         @jtadeulopes

sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
Sucesso!




sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
Testes de aceitação




sexta-feira, 17 de dezembro de 2010
Automatizar os testes de
                 aceitação!




sexta-feira, 17 de dezembro de 2010
O que é teste de
                                 aceitação?




sexta-feira, 17 de dezembro de 2010
Testes do cliente!




sexta-feira, 17 de dezembro de 2010
Por que?




sexta-feira, 17 de dezembro de 2010
Por que?
     Mais valioso de todos




sexta-feira, 17 de dezembro de 2010
Por que?
     Mais valioso de todos

       Começa com a interface




sexta-feira, 17 de dezembro de 2010
Por que?
     Mais valioso de todos

       Começa com a interface

      Ajuda a pensar na funcionalidade e aplicar
      somente o necessário

sexta-feira, 17 de dezembro de 2010
Mas eu faço isso!




sexta-feira, 17 de dezembro de 2010
Mas eu faço isso!




sexta-feira, 17 de dezembro de 2010
Mas eu faço isso!




sexta-feira, 17 de dezembro de 2010
Errado!
sexta-feira, 17 de dezembro de 2010
Então, como automatizar
                  este tipo de teste?


sexta-feira, 17 de dezembro de 2010
Steak
              “Minimalist acceptance testing on top of RSpec”




sexta-feira, 17 de dezembro de 2010
Exemplo:
                      1º Descrever o comportamento em
                                  Ruby puro




sexta-feira, 17 de dezembro de 2010
1 feature "Produtos", %q{
                   2   A fim de ter um site com produtos
                   3   Como administrador
                   4   Eu quero gerenciar meus produtos
                   5 } do
                   6
                   7   scenario "Visualizando produtos na home" do
                   8
                   9      Product.create!(:name => 'Sapato')
                  10      Product.create!(:name => 'Mochila')
                  11
                  12      visit '/'
                  13
                  14      page.should have_content('Sapato')
                  15      page.should have_content('Mochila')
                  16
                  17   end
                  18
                  19 end




sexta-feira, 17 de dezembro de 2010
Pronto!




sexta-feira, 17 de dezembro de 2010
Pronto!
                         Basta seguir com o desenvolvimento...




sexta-feira, 17 de dezembro de 2010
Pronto!
                         Basta seguir com o desenvolvimento...

          2º Rodar os testes e ver falhando




sexta-feira, 17 de dezembro de 2010
Pronto!
                         Basta seguir com o desenvolvimento...

          2º Rodar os testes e ver falhando
          3º Escrever o código necessário
          para o teste passar



sexta-feira, 17 de dezembro de 2010
Pronto!
                         Basta seguir com o desenvolvimento...

          2º Rodar os testes e ver falhando
          3º Escrever o código necessário
          para o teste passar
          4º Rodar os testes novamente...

sexta-feira, 17 de dezembro de 2010
Capybara
              “DSL for interacting with a web application”




sexta-feira, 17 de dezembro de 2010
visit '/'




sexta-feira, 17 de dezembro de 2010
click_link 'Products'




sexta-feira, 17 de dezembro de 2010
click_button 'Save'




sexta-feira, 17 de dezembro de 2010
Formulários




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'

            choose 'A Radio Button'




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'

            choose 'A Radio Button'

            check 'A Checkbox'




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'

            choose 'A Radio Button'

            check 'A Checkbox'

            uncheck 'A Checkbox'




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'

            choose 'A Radio Button'

            check 'A Checkbox'

            uncheck 'A Checkbox'

            attach_file 'Image', '/path/to/image.jpg'




sexta-feira, 17 de dezembro de 2010
Formulários
            fill_in 'First Name', :with => 'Jésus'

            choose 'A Radio Button'

            check 'A Checkbox'

            uncheck 'A Checkbox'

            attach_file 'Image', '/path/to/image.jpg'

            select 'Option', :from => 'Select Box'




sexta-feira, 17 de dezembro de 2010
Mais exemplos!



sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
1 feature "Lorem ipsum" do
           2
           3   scenario "New lorem" do
           4
           5     visit 'http://www.domain.com'
           6
           7     click_link 'Light Button'
           8
           9     fill_in 'Input', :with => 'dolore'
          10     fill_in 'Text-Field', :with => 'Lorem ipsum dolor...'
          11     click_button 'Dark Button'
          12
          13     page.should have_content 'dolor sit amet'
          14   end
          15
          16 end




sexta-feira, 17 de dezembro de 2010
Consultas na página




sexta-feira, 17 de dezembro de 2010
Consultas na página


            page.has_selector?('table tr')




sexta-feira, 17 de dezembro de 2010
Consultas na página


            page.has_selector?('table tr')

            page.has_selector?(:xpath, '//table/tr')




sexta-feira, 17 de dezembro de 2010
Consultas na página


            page.has_selector?('table tr')

            page.has_selector?(:xpath, '//table/tr')

            page.has_css?('table tr.foo')




sexta-feira, 17 de dezembro de 2010
Encontrar elementos




sexta-feira, 17 de dezembro de 2010
Encontrar elementos


            find_field('First Name').value




sexta-feira, 17 de dezembro de 2010
Encontrar elementos


            find_field('First Name').value

            find_link('Hello').visible?




sexta-feira, 17 de dezembro de 2010
Encontrar elementos


            find_field('First Name').value

            find_link('Hello').visible?

            find_button('Send').click




sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
1 feature "Login" do
                 2
                 3   scenario "Login como administrador" do
                 4
                 5     within("div.admin") do
                 6       fill_in 'LOGIN', :with => 'user'
                 7       fill_in 'SENHA', :with => 'senha123'
                 8       click_button 'Light Button'
                 9     end
                10
                11   end
                12
                13   scenario "Login como aluno" do
                14
                15     within("div.student") do
                16       fill_in 'E-MAIL', :with => 'user@user.com'
                17       fill_in 'SENHA', :with => 'senha123'
                18       click_button 'Light Button'
                19     end
                20
                21   end
                22
                23 end



sexta-feira, 17 de dezembro de 2010
Live coding!

sexta-feira, 17 de dezembro de 2010
Obrigado!

sexta-feira, 17 de dezembro de 2010
Fontes
              •     https://github.com/cavalle/steak

              •     https://github.com/jnicklas/capybara

              •     http://jeffkreeftmeijer.com/2010/steak-because-cucumber-is-for-vegetarians

              •     http://www.slideshare.net/danielvlopes/steak-4939188

              •     http://www.dtsato.com/blog/2007/09/24/voce-automatiza-seus-testes-de-aceitacao

              •     http://www.extremeprogramming.org/rules/functionaltests.html

              •     Storyboard characters - http://www.graffletopia.com/stencils/462

              •     http://www.eleqtriq.com/2010/08/sqetch-wireframe-toolkit/




sexta-feira, 17 de dezembro de 2010

Contenu connexe

Plus de Zigotto Tecnologia

Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptZigotto Tecnologia
 
Nova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesNova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesZigotto Tecnologia
 
Apps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapApps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapZigotto Tecnologia
 

Plus de Zigotto Tecnologia (7)

Apresentação Padawan
Apresentação PadawanApresentação Padawan
Apresentação Padawan
 
Open Source - DevInVale 2011
Open Source - DevInVale 2011Open Source - DevInVale 2011
Open Source - DevInVale 2011
 
Escrevendo plugins JQuery
Escrevendo plugins JQueryEscrevendo plugins JQuery
Escrevendo plugins JQuery
 
HTML5
HTML5HTML5
HTML5
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScript
 
Nova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesNova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis Aplicações
 
Apps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapApps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGap
 

Testes de aceitação com Steak e Capybara