SlideShare uma empresa Scribd logo
1
SELENIUM
Márcio Delamaro
Harry Trinta28/03/2011
O que é a Selenium?
Selenium é uma ferramenta desenvolvida para a
automação de testes em aplicações Web
Suporta diversos browsers:
Firefox
Internet ExplorerInternet Explorer
Safari
Opera
Chrome
.. e diversos SOs
Windows, Linux, Solaris
O que é a Selenium?
Tipos de Testes Possíveis:
Teste Funcional
Teste de Regressão
Teste de Desempenho
Componentes:
Selenium IDE
Selenium RC (Remote Control)
Selenium Grid
http://seleniumhq.org
4
Selenium IDE5
Selenium IDE
Selenium IDE é um plug-in para o Firefox capaz
de gravar e reproduzir testes
Com ele é possível exportar o teste gravado
para diversas linguagens, por exemplo, HTML,para diversas linguagens, por exemplo, HTML,
Java, .NET, Perl, Ruby, etc
Os testes exportados podem ser executados
em qualquer navegador e qualquer plataforma
usando o componente Selenium RC
Selenium IDE
Execução dos
comandos
Grava as ações
do usuário
Especificação dos
comandos
Selenium IDE
Endereço do
sistema que será
testado
Lista das ações
executadas
Registro dos eventos
executados, incluindo
eventuais erros
Selenium RC9
Selenium-RC
Selenium-RC oferece uma API (Application
Programming Interface) e uma biblioteca para
cada uma das linguagens suportadas: HTML,
Java, C #, Perl, PHP, Python e Ruby.
Possui um servidor que automaticamente abre
e fecha browsers, e atua como um HTTP
proxy para as requisições web.
Selenium-RC
Selenium GRID12
Selenium-Grid
Esse componente é capaz de distribuir os
testes em diversas máquinas para que
possam ser executados em paralelo
Tempo de execução reduzidoTempo de execução reduzido
Testes podem ser executados em diferentes
combinações de navegador + sistema
operacional
Gera um relatório agrupado de todas as
máquinas de teste
Selenium-Grid
Comandos15
Comandos
Actions: são comandos que geralmente manipulam o estado da aplicação.
Por exemplo, clicar em um link ou selecionar uma opção de uma
comboBox.
Normalmente, os comandos que executam ações podem ter um sufixo
"AndWait", por exemplo, "clickAndWait“
Accessors: examinam o estado da aplicação e armazenam os resultados
em variáveis, por exemplo, "storeTitle".em variáveis, por exemplo, "storeTitle".
também são usados para gerar Assertions automaticamente.
Assertions: são como Acessors, mas verificam se o estado da aplicação
está em conformidade com o que se espera. Por exemplo, verifica se o
título da página é X, verifica se uma determinada opção está assinalada.
Todas as Assertions podem ser utilizadas em três modos: “assert", "verify"
e "waitFor". Por exemplo, você pode utilizar "assertText", "verifyText“ e
"waitForText".
Alguns comandos mais comuns
open
Abre uma página URL.
click/clickAndWait
Executa um clique e, opcionalmente, espera por uma nova página carregar.
verifyTitle/assertTitle
Verifica o título da página.
verifyTextPresent
Verifica se o texto esperado está na página.
verifyElementPresentverifyElementPresent
Verifica se um elemento UI esperado, conforme definido pelo seu código HTML, está presente na página.
verifyText
verifica se o texto esperado e sua tag HTML correspondente estão presentes na página.
verifyTable
verifica o conteúdo esperado de uma tabela.
waitForPageToLoad
interrompe a execução até que uma nova página seja carregada. Chamado automaticamente quando
clickAndWait é usado.
waitForElementPresent
interrompe a execução até que um elemento da interface do usuário esperado, conforme definido pelo seu
código HTML, esteja presente na página.
Porque usar a Selenium?18
Porque escolher a Selenium?
As bibliotecas Selenium podem ser importadas nas mais populares
IDEs
Eclipse, NetBeans, Visual Studio Net, etc.
Reutiliza os frameworks de testes de unidade
Utilizada por equipes de teste funcional, teste de regressão e testeUtilizada por equipes de teste funcional, teste de regressão e teste
de aceitação do usuário
A integração no processo de build tornou fácil de implementá-la em
ambientes de Integração Contínua
Porque escolher a Selenium?
Um forte apoio para as tecnologias AJAX
Consegue realizar testes em diversos browsers e em diversos
sistemas operacionais
Executa testes em paraleloExecuta testes em paralelo
Usando o componente Grid, os testes podem ser executados em
paralelo em vários RC (agente) de diferentes máquinas
Economiza tempo e é mais rápido
Selenium é GRÁTIS
Sem custos de licenciamento.
Pode ser implantada em quantas máquinas forem necessárias
Instalando21
Instalando Selenium IDE
Abra a janela do navegador Firefox
(obrigatoriamente)
Abra http://seleniumhq.org/download/
Em Downloads Escolha IDE SeleniumEm Downloads Escolha IDE Selenium
Não faça isso em
outro browser
Instalando Selenium IDE
Clique em Allow (Aceitar) para
prosseguir com a instalação
Reinicie o Firefox
Instalando Selenium IDE
Agora, no Firefox, vá em Ferramentas e
verifique se “Selenium IDE” é exibido
Se sim, o Selenium IDE está instalado
Instalando Selenium RC
Esse exemplo, será feito utilizando a
linguagem Java
A IDE utilizada será o EclipseA IDE utilizada será o Eclipse
Para executar os testes, será usado o JUnit 4
Criação do projeto no Eclipse
Criar um novo projeto
Criação do projeto no Eclipse
Next
Criação do projeto no Eclipse
1º Clique em Libraries
2º Clique em
Add Library
1º Clique em Libraries
3º Escolha
JUnit -> Next
Criação do projeto no Eclipse
Escolha JUnit 4 e clique em Finish
Criação do projeto no Eclipse
1º Clique em Add
External Jars
2º Adicione os dois2º Adicione os dois2º Adicione os dois
jars mostrados na
Imagem
3º Clique em Finish
2º Adicione os dois
jars mostrados na
Imagem
http://seleniumhq.org/download/
Ambiente pronto
Agora, já é possível realizar testes utilizando a
ferramenta Selenium em projetos Java
Exemplo – Gravando um teste
GravandoGravando
Gravando utilização
Site escolhido: www.hotmail.com
Clicar aquiClicar aqui
Gravando utilização
Passos já
gravados
Testar se o sistema
está verificando o
tamanho da senha
Testar se o sistema
está verificando o
tamanho da senha
Testar se o sistema
está verificando o
tamanho da senha Passos já
gravados
Gravando utilização
Digitado: 123
Verifica se o Sistema
está emitindo o alerta
Verifica se o Sistema
está emitindo o alerta
Comandos / Verificações
disponíveis para a tela
Visualizando comandos
Código para ser
utilizado no JUnit
Comandos capturados
Criando Classe de Teste
O código gerado pela Selenium IDE pode ser
exportado clicando em Arquivo -> Exportar
Teste Como -> JUnit 4
ou ...ou ...
copiando diratamente o código mostrado e
colando dentro de uma classe no Eclipse
Criando Classe de Teste
Servidor
Para executar os casos de teste, é necessário
inicializar o servidor Selenium. É possível
fazer isso de duas maneiras:
Via prompt, ir até a pasta onde se encontra o .jarVia prompt, ir até a pasta onde se encontra o .jar
do servidor e iniciá-lo com o comando:
java -jar selenium-server-standalone-2.0b2.jar
Incluir trechos de códigos na classe de teste
SeleniumServer servidor;
servidor = new SeleniumServer();
servidor.start();
Alteração no código
É importante ressaltar que, muita das vezes, o
código gerado pela Selenium IDE precisa de
ajustes do testador
public class ClasseDeTeste extends SeleneseTestCase {
Selenium selenium;
SeleniumServer servidor;
@Before
public void setUp() throws Exception {
servidor = new SeleniumServer();
servidor.start();
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://login.live.com/");
selenium.start();
}
@Test
public void testTeste() throws Exception {
selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk
t=pt-br&cbcxt=mai&snsc=1");
Thread.sleep(3000);
selenium.click("i0010");
selenium.waitForPageToLoad("30000");
selenium.type("iPwd", "123");
assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true);
}
@Test
public void testTeste2() throws Exception {
selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk
t=pt-br&cbcxt=mai&snsc=1");
Thread.sleep(3000);
selenium.click("i0010");
selenium.waitForPageToLoad("30000");
selenium.type("iPwd", "1234");
assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true);
}
Servidor
Necessário para que a página
seja carregada completamente
Verifica se o texto foi
encontrado na página
41
}
@Test
public void testTeste3() throws Exception {
selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk
t=pt-br&cbcxt=mai&snsc=1");
Thread.sleep(3000);
selenium.click("i0010");
selenium.waitForPageToLoad("30000");
selenium.type("iPwd", "12345");
assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true);
}
@Test
public void testTeste4() throws Exception {
selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk
t=pt-br&cbcxt=mai&snsc=1");
Thread.sleep(3000);
selenium.click("i0010");
selenium.waitForPageToLoad("30000");
selenium.type("iPwd", "123456");
assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true);
}
@After
public void tearDown() throws Exception {
selenium.stop();
servidor.stop();
}
}
Esse teste deve falhar, pois será digitado 6
caracteres para a senha e, no comando
abaixo, espera-se que seja emitido a
mensagem de erro (não será).
Executando os Testes
Clicar com o Botão direito -> Run As -> JUnit
Teste
Todos os Testes da classe serão executados
Executando os Testes
Como esperado, o último teste falhou
Exercício
44

Mais conteúdo relacionado

Mais procurados

Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
Priscila Calderão
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
Sandy Maciel
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com Selenium
Fabrício Lemos
 
Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1Cintia Armesto
 
Selenium
SeleniumSelenium
Selenium
SeleniumSelenium
Selenium
Tadeu Marinho
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
Israel Santiago
 
Curso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCurso treinamento automação de testes com selenium
Curso treinamento automação de testes com selenium
Cristiano Caetano
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
Júlio de Lima
 
Selenium IDE
Selenium IDESelenium IDE
Selenium IDE
Davi Matos
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
Autotic
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
Mayara Fernandes
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
Júlio de Lima
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
Mayara Fernandes
 
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidadeWordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
WordCamp Floripa
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Mayara Fernandes
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
Guilherme Chapiewski
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Alex Tercete
 
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
Mayara Fernandes
 

Mais procurados (20)

Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com Selenium
 
Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1
 
Selenium
SeleniumSelenium
Selenium
 
Selenium
SeleniumSelenium
Selenium
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
 
Curso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCurso treinamento automação de testes com selenium
Curso treinamento automação de testes com selenium
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Selenium ide
Selenium ideSelenium ide
Selenium ide
 
Selenium IDE
Selenium IDESelenium IDE
Selenium IDE
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidadeWordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
WordCamp Floripa 2021 - Fernando Nilson - Análise de vulnerabilidade
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
 
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
 

Semelhante a Selenium

Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
Mayron Cachina
 
Curso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium QualisterCurso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium Qualister
Qualister
 
Selenium
SeleniumSelenium
Selenium
eurosigdoc acm
 
Selenium Workshop
Selenium WorkshopSelenium Workshop
Selenium Workshop
cathoderay
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipseArmando Daniel
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
rodrigogouveia
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
GUTS-RS
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_frameworkMilton Rodrigues
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
Qualister
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Ruby para testers III - Selenium
Ruby para testers III - SeleniumRuby para testers III - Selenium
Ruby para testers III - Selenium
TestRock!
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
Qualister
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
WordCamp Floripa
 
Java www
Java wwwJava www
Aula maven
Aula   mavenAula   maven
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
Elias Nogueira
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
Diego Santos
 

Semelhante a Selenium (20)

Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Curso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium QualisterCurso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium Qualister
 
Selenium
SeleniumSelenium
Selenium
 
Selenium Workshop
Selenium WorkshopSelenium Workshop
Selenium Workshop
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Ruby para testers III - Selenium
Ruby para testers III - SeleniumRuby para testers III - Selenium
Ruby para testers III - Selenium
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Java www
Java wwwJava www
Java www
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 

Selenium

  • 2. O que é a Selenium? Selenium é uma ferramenta desenvolvida para a automação de testes em aplicações Web Suporta diversos browsers: Firefox Internet ExplorerInternet Explorer Safari Opera Chrome .. e diversos SOs Windows, Linux, Solaris
  • 3. O que é a Selenium? Tipos de Testes Possíveis: Teste Funcional Teste de Regressão Teste de Desempenho Componentes: Selenium IDE Selenium RC (Remote Control) Selenium Grid http://seleniumhq.org
  • 4. 4
  • 6. Selenium IDE Selenium IDE é um plug-in para o Firefox capaz de gravar e reproduzir testes Com ele é possível exportar o teste gravado para diversas linguagens, por exemplo, HTML,para diversas linguagens, por exemplo, HTML, Java, .NET, Perl, Ruby, etc Os testes exportados podem ser executados em qualquer navegador e qualquer plataforma usando o componente Selenium RC
  • 7. Selenium IDE Execução dos comandos Grava as ações do usuário Especificação dos comandos
  • 8. Selenium IDE Endereço do sistema que será testado Lista das ações executadas Registro dos eventos executados, incluindo eventuais erros
  • 10. Selenium-RC Selenium-RC oferece uma API (Application Programming Interface) e uma biblioteca para cada uma das linguagens suportadas: HTML, Java, C #, Perl, PHP, Python e Ruby. Possui um servidor que automaticamente abre e fecha browsers, e atua como um HTTP proxy para as requisições web.
  • 13. Selenium-Grid Esse componente é capaz de distribuir os testes em diversas máquinas para que possam ser executados em paralelo Tempo de execução reduzidoTempo de execução reduzido Testes podem ser executados em diferentes combinações de navegador + sistema operacional Gera um relatório agrupado de todas as máquinas de teste
  • 16. Comandos Actions: são comandos que geralmente manipulam o estado da aplicação. Por exemplo, clicar em um link ou selecionar uma opção de uma comboBox. Normalmente, os comandos que executam ações podem ter um sufixo "AndWait", por exemplo, "clickAndWait“ Accessors: examinam o estado da aplicação e armazenam os resultados em variáveis, por exemplo, "storeTitle".em variáveis, por exemplo, "storeTitle". também são usados para gerar Assertions automaticamente. Assertions: são como Acessors, mas verificam se o estado da aplicação está em conformidade com o que se espera. Por exemplo, verifica se o título da página é X, verifica se uma determinada opção está assinalada. Todas as Assertions podem ser utilizadas em três modos: “assert", "verify" e "waitFor". Por exemplo, você pode utilizar "assertText", "verifyText“ e "waitForText".
  • 17. Alguns comandos mais comuns open Abre uma página URL. click/clickAndWait Executa um clique e, opcionalmente, espera por uma nova página carregar. verifyTitle/assertTitle Verifica o título da página. verifyTextPresent Verifica se o texto esperado está na página. verifyElementPresentverifyElementPresent Verifica se um elemento UI esperado, conforme definido pelo seu código HTML, está presente na página. verifyText verifica se o texto esperado e sua tag HTML correspondente estão presentes na página. verifyTable verifica o conteúdo esperado de uma tabela. waitForPageToLoad interrompe a execução até que uma nova página seja carregada. Chamado automaticamente quando clickAndWait é usado. waitForElementPresent interrompe a execução até que um elemento da interface do usuário esperado, conforme definido pelo seu código HTML, esteja presente na página.
  • 18. Porque usar a Selenium?18
  • 19. Porque escolher a Selenium? As bibliotecas Selenium podem ser importadas nas mais populares IDEs Eclipse, NetBeans, Visual Studio Net, etc. Reutiliza os frameworks de testes de unidade Utilizada por equipes de teste funcional, teste de regressão e testeUtilizada por equipes de teste funcional, teste de regressão e teste de aceitação do usuário A integração no processo de build tornou fácil de implementá-la em ambientes de Integração Contínua
  • 20. Porque escolher a Selenium? Um forte apoio para as tecnologias AJAX Consegue realizar testes em diversos browsers e em diversos sistemas operacionais Executa testes em paraleloExecuta testes em paralelo Usando o componente Grid, os testes podem ser executados em paralelo em vários RC (agente) de diferentes máquinas Economiza tempo e é mais rápido Selenium é GRÁTIS Sem custos de licenciamento. Pode ser implantada em quantas máquinas forem necessárias
  • 22. Instalando Selenium IDE Abra a janela do navegador Firefox (obrigatoriamente) Abra http://seleniumhq.org/download/ Em Downloads Escolha IDE SeleniumEm Downloads Escolha IDE Selenium Não faça isso em outro browser
  • 23. Instalando Selenium IDE Clique em Allow (Aceitar) para prosseguir com a instalação Reinicie o Firefox
  • 24. Instalando Selenium IDE Agora, no Firefox, vá em Ferramentas e verifique se “Selenium IDE” é exibido Se sim, o Selenium IDE está instalado
  • 25. Instalando Selenium RC Esse exemplo, será feito utilizando a linguagem Java A IDE utilizada será o EclipseA IDE utilizada será o Eclipse Para executar os testes, será usado o JUnit 4
  • 26. Criação do projeto no Eclipse Criar um novo projeto
  • 27. Criação do projeto no Eclipse Next
  • 28. Criação do projeto no Eclipse 1º Clique em Libraries 2º Clique em Add Library 1º Clique em Libraries 3º Escolha JUnit -> Next
  • 29. Criação do projeto no Eclipse Escolha JUnit 4 e clique em Finish
  • 30. Criação do projeto no Eclipse 1º Clique em Add External Jars 2º Adicione os dois2º Adicione os dois2º Adicione os dois jars mostrados na Imagem 3º Clique em Finish 2º Adicione os dois jars mostrados na Imagem http://seleniumhq.org/download/
  • 31. Ambiente pronto Agora, já é possível realizar testes utilizando a ferramenta Selenium em projetos Java
  • 32. Exemplo – Gravando um teste GravandoGravando
  • 33. Gravando utilização Site escolhido: www.hotmail.com Clicar aquiClicar aqui
  • 34. Gravando utilização Passos já gravados Testar se o sistema está verificando o tamanho da senha Testar se o sistema está verificando o tamanho da senha Testar se o sistema está verificando o tamanho da senha Passos já gravados
  • 35. Gravando utilização Digitado: 123 Verifica se o Sistema está emitindo o alerta Verifica se o Sistema está emitindo o alerta Comandos / Verificações disponíveis para a tela
  • 36. Visualizando comandos Código para ser utilizado no JUnit Comandos capturados
  • 37. Criando Classe de Teste O código gerado pela Selenium IDE pode ser exportado clicando em Arquivo -> Exportar Teste Como -> JUnit 4 ou ...ou ... copiando diratamente o código mostrado e colando dentro de uma classe no Eclipse
  • 39. Servidor Para executar os casos de teste, é necessário inicializar o servidor Selenium. É possível fazer isso de duas maneiras: Via prompt, ir até a pasta onde se encontra o .jarVia prompt, ir até a pasta onde se encontra o .jar do servidor e iniciá-lo com o comando: java -jar selenium-server-standalone-2.0b2.jar Incluir trechos de códigos na classe de teste SeleniumServer servidor; servidor = new SeleniumServer(); servidor.start();
  • 40. Alteração no código É importante ressaltar que, muita das vezes, o código gerado pela Selenium IDE precisa de ajustes do testador
  • 41. public class ClasseDeTeste extends SeleneseTestCase { Selenium selenium; SeleniumServer servidor; @Before public void setUp() throws Exception { servidor = new SeleniumServer(); servidor.start(); selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://login.live.com/"); selenium.start(); } @Test public void testTeste() throws Exception { selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk t=pt-br&cbcxt=mai&snsc=1"); Thread.sleep(3000); selenium.click("i0010"); selenium.waitForPageToLoad("30000"); selenium.type("iPwd", "123"); assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true); } @Test public void testTeste2() throws Exception { selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk t=pt-br&cbcxt=mai&snsc=1"); Thread.sleep(3000); selenium.click("i0010"); selenium.waitForPageToLoad("30000"); selenium.type("iPwd", "1234"); assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true); } Servidor Necessário para que a página seja carregada completamente Verifica se o texto foi encontrado na página 41 } @Test public void testTeste3() throws Exception { selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk t=pt-br&cbcxt=mai&snsc=1"); Thread.sleep(3000); selenium.click("i0010"); selenium.waitForPageToLoad("30000"); selenium.type("iPwd", "12345"); assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true); } @Test public void testTeste4() throws Exception { selenium.open("/login.srf?wa=wsignin1.0&rpsnv=11&ct=1300939240&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1046&id=64855&mk t=pt-br&cbcxt=mai&snsc=1"); Thread.sleep(3000); selenium.click("i0010"); selenium.waitForPageToLoad("30000"); selenium.type("iPwd", "123456"); assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true); } @After public void tearDown() throws Exception { selenium.stop(); servidor.stop(); } } Esse teste deve falhar, pois será digitado 6 caracteres para a senha e, no comando abaixo, espera-se que seja emitido a mensagem de erro (não será).
  • 42. Executando os Testes Clicar com o Botão direito -> Run As -> JUnit Teste Todos os Testes da classe serão executados
  • 43. Executando os Testes Como esperado, o último teste falhou