SlideShare una empresa de Scribd logo
1 de 84
Descargar para leer sin conexión
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

Testes de aceitação com Steak e Capybara