SELENIUM 
WORKSHOP 
ThoughtWorks Brasil 
Belo Horizonte - MG 
1
AGENDA 
! 
! 
▫︎Por que automação de testes? 
▫︎Introdução ao Selenium 
▫︎Entendendo o Selenium 
▫︎Exercícios "mão na massa" 
2
VANTAGENS DOS TESTES AUTOMATIZADOS 
! 
▫︎Evitar trabalho repetitivo 
! 
▫︎Geralmente mais rápido que teste manual 
! 
▫︎Feedback constante da aplicação 
! 
▫︎Simular a interação de um usuário real do sistema 
3
VANTAGENS DOS TESTES AUTOMATIZADOS 
▫︎Não é diretamente acoplada à implementação do 
código 
! 
▫︎Auxilia a encontrar bugs e erros de regressão 
! 
▫︎Fácil de ser implementado em diferentes plataformas e 
navegadores 
! 
▫︎Podemos encontrar inclusive problemas de hardware 
(memória e recursos) através da automação 
4
DESVANTAGENS DOS TESTES AUTOMATIZADOS 
! 
▫︎Manutenção 
! 
▫︎Velocidade pode ser afetada 
! 
▫︎Fragilidade (depende de elementos da UI) 
! 
▫︎Vulnerabilidade - Os testes podem ficar instáveis se, por 
exemplo, algum componente em Javascript demorar 
para carregar. 
5
NÃO!! 
6 
DEVO AUTOMATIZAR TUDO?
NÃO AUTOMATIZAR QUANDO: 
! 
▫︎Haverá mudanças consideráveis na interface do usuário 
em um futuro bem próximo 
! 
▫︎Muito pouco tempo para testar 
! 
▫︎Não é uma ação muito comum e previsível de ser 
realizada por um usuário real 
! 
▫︎Cenários extremamente complexos 
7
QUADRANTES DO AGILE TESTING 
8 
Adaptada de: http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants
PIRÂMIDE DE TESTE DE SOFTWARE 
9 
Adaptada de: http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone
PIRÂMIDE INVERTIDA (SORVETE) DE TESTE DE SOFTWARE 
10 
Adaptado de: http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone
INTRODUÇÃO AO SELENIUM 
! 
▫︎Iniciada em 2004 por um ThoughtWorker chamado 
Jason Huggins 
! 
▫︎Algum tempo depois, Simon Stewart do Google iniciou 
um projeto chamado WebDriver 
! 
▫︎Ambos projetos se uniram, dando origem ao Selenium- 
WebDriver (Selenium 2.0) 
11
POR QUE SELENIUM? 
! 
▫︎Suporta várias linguagens: Java, Ruby, Python, JavaScript, 
etc… 
! 
▫︎Suporta vários browsers: Chrome, Firefox, Safari, IE, 
Opera, Headless, Android, iOS etc… 
! 
▫︎É open-source! 
12
ALGUMAS OUTRAS VARIAÇÕES... 
! 
! 
▫︎Selenium IDE: ferramenta record & playback apenas 
para testes simples/básicos. Não recomendado para 
automação séria! :) 
! 
▫︎Selenium-Grid: Útil para executar testes em paralelo 
em múltiplas máquinas remotas. 
13
O QUE É DOM (DOCUMENT OBJECT MODEL) ? 
14 
ANTES DE COMEÇARMOS…
DOM - DATA OBJECT MODEL 
15
COMO CAPTURAR ELEMENTOS NO DOM? 
! 
! 
! 
▫︎Chrome Dev Tools 
! 
▫︎Firebug 
16
ALGUNS ELEMENTOS COMUNS... 
17
ENTENDENDO O SELENIUM 
18
ENTENDENDO O SELENIUM 
19 
Asserções
MÃO NA MASSA! 
20
ATIVIDADES 
! 
▫︎Instalação e configuração (Eclipse + Selenium-WebDriver + JUnit + Hamcrest) 
▫︎Automatizando do zero 
▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ 
twseleniumworkshop/Exercicio1.java 
▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ 
twseleniumworkshop/Exercicio2.java 
▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ 
twseleniumworkshop/Exercicio3.java 
▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ 
twseleniumworkshop/Exercicio4.java 
▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/tree/master/test/ 
twseleniumworkshop/PageObject 
21
PRÓXIMOS PASSOS 
! 
▫︎Page Object Design Pattern 
! 
▫︎Headless browser 
! 
▫︎Cucumber/BDD 
! 
▫︎Mobile (Android) 
22
LIVROS/MATERIAIS RECOMENDADOS 
! 
▫︎Selenium: 
▫︎Selenium API 
▫︎Selenium WebDriver Practical Guide 
▫︎Selenium Simplified 
! 
▫︎Teste de Software e outras ferramentas: 
▫︎Agile Testing: A Practical Guide for Testers and Agile Teams 
▫︎The Cucumber Book 
23
24 
É isso aí, galera! 
Obrigado!!

Selenium Workshop

  • 1.
    SELENIUM WORKSHOP ThoughtWorksBrasil Belo Horizonte - MG 1
  • 2.
    AGENDA ! ! ▫︎Por que automação de testes? ▫︎Introdução ao Selenium ▫︎Entendendo o Selenium ▫︎Exercícios "mão na massa" 2
  • 3.
    VANTAGENS DOS TESTESAUTOMATIZADOS ! ▫︎Evitar trabalho repetitivo ! ▫︎Geralmente mais rápido que teste manual ! ▫︎Feedback constante da aplicação ! ▫︎Simular a interação de um usuário real do sistema 3
  • 4.
    VANTAGENS DOS TESTESAUTOMATIZADOS ▫︎Não é diretamente acoplada à implementação do código ! ▫︎Auxilia a encontrar bugs e erros de regressão ! ▫︎Fácil de ser implementado em diferentes plataformas e navegadores ! ▫︎Podemos encontrar inclusive problemas de hardware (memória e recursos) através da automação 4
  • 5.
    DESVANTAGENS DOS TESTESAUTOMATIZADOS ! ▫︎Manutenção ! ▫︎Velocidade pode ser afetada ! ▫︎Fragilidade (depende de elementos da UI) ! ▫︎Vulnerabilidade - Os testes podem ficar instáveis se, por exemplo, algum componente em Javascript demorar para carregar. 5
  • 6.
    NÃO!! 6 DEVOAUTOMATIZAR TUDO?
  • 7.
    NÃO AUTOMATIZAR QUANDO: ! ▫︎Haverá mudanças consideráveis na interface do usuário em um futuro bem próximo ! ▫︎Muito pouco tempo para testar ! ▫︎Não é uma ação muito comum e previsível de ser realizada por um usuário real ! ▫︎Cenários extremamente complexos 7
  • 8.
    QUADRANTES DO AGILETESTING 8 Adaptada de: http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants
  • 9.
    PIRÂMIDE DE TESTEDE SOFTWARE 9 Adaptada de: http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone
  • 10.
    PIRÂMIDE INVERTIDA (SORVETE)DE TESTE DE SOFTWARE 10 Adaptado de: http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone
  • 11.
    INTRODUÇÃO AO SELENIUM ! ▫︎Iniciada em 2004 por um ThoughtWorker chamado Jason Huggins ! ▫︎Algum tempo depois, Simon Stewart do Google iniciou um projeto chamado WebDriver ! ▫︎Ambos projetos se uniram, dando origem ao Selenium- WebDriver (Selenium 2.0) 11
  • 12.
    POR QUE SELENIUM? ! ▫︎Suporta várias linguagens: Java, Ruby, Python, JavaScript, etc… ! ▫︎Suporta vários browsers: Chrome, Firefox, Safari, IE, Opera, Headless, Android, iOS etc… ! ▫︎É open-source! 12
  • 13.
    ALGUMAS OUTRAS VARIAÇÕES... ! ! ▫︎Selenium IDE: ferramenta record & playback apenas para testes simples/básicos. Não recomendado para automação séria! :) ! ▫︎Selenium-Grid: Útil para executar testes em paralelo em múltiplas máquinas remotas. 13
  • 14.
    O QUE ÉDOM (DOCUMENT OBJECT MODEL) ? 14 ANTES DE COMEÇARMOS…
  • 15.
    DOM - DATAOBJECT MODEL 15
  • 16.
    COMO CAPTURAR ELEMENTOSNO DOM? ! ! ! ▫︎Chrome Dev Tools ! ▫︎Firebug 16
  • 17.
  • 18.
  • 19.
    ENTENDENDO O SELENIUM 19 Asserções
  • 20.
  • 21.
    ATIVIDADES ! ▫︎Instalaçãoe configuração (Eclipse + Selenium-WebDriver + JUnit + Hamcrest) ▫︎Automatizando do zero ▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ twseleniumworkshop/Exercicio1.java ▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ twseleniumworkshop/Exercicio2.java ▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ twseleniumworkshop/Exercicio3.java ▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/blob/master/test/ twseleniumworkshop/Exercicio4.java ▫︎https://github.com/ThoughtWorksInc/twseleniumworkshop/tree/master/test/ twseleniumworkshop/PageObject 21
  • 22.
    PRÓXIMOS PASSOS ! ▫︎Page Object Design Pattern ! ▫︎Headless browser ! ▫︎Cucumber/BDD ! ▫︎Mobile (Android) 22
  • 23.
    LIVROS/MATERIAIS RECOMENDADOS ! ▫︎Selenium: ▫︎Selenium API ▫︎Selenium WebDriver Practical Guide ▫︎Selenium Simplified ! ▫︎Teste de Software e outras ferramentas: ▫︎Agile Testing: A Practical Guide for Testers and Agile Teams ▫︎The Cucumber Book 23
  • 24.
    24 É issoaí, galera! Obrigado!!