Академический Документы
Профессиональный Документы
Культура Документы
SELENIUM
28/03/2011
Mrcio Delamaro Harry Trinta
O que a Selenium?
Selenium uma ferramenta desenvolvida para a automao de testes em aplicaes Web Suporta diversos browsers:
Firefox Internet Explorer Safari Opera Chrome
.. e diversos SOs
Windows, Linux, Solaris
O que a Selenium?
Tipos de Testes Possveis:
Teste Funcional Teste de Regresso Teste de Desempenho
Componentes:
Selenium IDE Selenium RC (Remote Control) Selenium Grid http://seleniumhq.org
Selenium IDE
Selenium IDE
Selenium IDE um plug-in para o Firefox capaz de gravar e reproduzir testes Com ele possvel exportar o teste gravado 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
Grava as aes do usurio Execuo dos comandos
Selenium IDE
Endereo do sistema que ser testado Lista das aes executadas
Selenium RC
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 requisies web.
Selenium-RC
12
Selenium GRID
Selenium-Grid
Esse componente capaz de distribuir os testes em diversas mquinas para que possam ser executados em paralelo
Tempo de execuo reduzido Testes podem ser executados em diferentes combinaes de navegador + sistema operacional Gera um relatrio agrupado de todas as mquinas de teste
Selenium-Grid
15
Comandos
Comandos
Actions: so comandos que geralmente manipulam o estado da aplicao. Por exemplo, clicar em um link ou selecionar uma opo de uma comboBox.
Normalmente, os comandos que executam aes podem ter um sufixo "AndWait", por exemplo, "clickAndWait
Accessors: examinam o estado da aplicao e armazenam os resultados em variveis, por exemplo, "storeTitle".
tambm so usados para gerar Assertions automaticamente.
Assertions: so como Acessors, mas verificam se o estado da aplicao est em conformidade com o que se espera. Por exemplo, verifica se o ttulo da pgina X, verifica se uma determinada opo est assinalada. Todas as Assertions podem ser utilizadas em trs modos: assert", "verify" e "waitFor". Por exemplo, voc pode utilizar "assertText", "verifyText e "waitForText".
click/clickAndWait
Executa um clique e, opcionalmente, espera por uma nova pgina carregar.
verifyTitle/assertTitle
Verifica o ttulo da pgina.
verifyTextPresent
Verifica se o texto esperado est na pgina.
verifyElementPresent
Verifica se um elemento UI esperado, conforme definido pelo seu cdigo HTML, est presente na pgina.
verifyText
verifica se o texto esperado e sua tag HTML correspondente esto presentes na pgina.
verifyTable
verifica o contedo esperado de uma tabela.
waitForPageToLoad
interrompe a execuo at que uma nova pgina seja carregada. Chamado automaticamente quando clickAndWait usado.
waitForElementPresent
interrompe a execuo at que um elemento da interface do usurio esperado, conforme definido pelo seu cdigo HTML, esteja presente na pgina.
18
Utilizada por equipes de teste funcional, teste de regresso e teste de aceitao do usurio A integrao no processo de build tornou fcil de implement-la em ambientes de Integrao Contnua
Selenium GRTIS
Sem custos de licenciamento. Pode ser implantada em quantas mquinas forem necessrias
21
Instalando
Instalando Selenium IDE Clique em Allow (Aceitar) para prosseguir com a instalao
Reinicie o Firefox
Instalando Selenium RC
Esse exemplo, ser feito utilizando a linguagem Java A IDE utilizada ser o Eclipse Para executar os testes, ser usado o JUnit 4
Next
3 Clique em Finish
http://seleniumhq.org/download/
Ambiente pronto
Agora, j possvel realizar testes utilizando a ferramenta Selenium em projetos Java
Gravando
Gravando utilizao
Site escolhido: www.hotmail.com
Clicar aqui
Gravando utilizao
Testar se o sistema est verificando o tamanho da senha
Passos j gravados
Gravando utilizao
Digitado: 123 Verifica se o Sistema est emitindo o alerta
Visualizando comandos
Comandos capturados
Servidor
Para executar os casos de teste, necessrio inicializar o servidor Selenium. possvel fazer isso de duas maneiras:
Via 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
Alterao no cdigo
importante ressaltar que, muita das vezes, o cdigo 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 {
Servidor
Necessrio para que a pgina seja carregada completamente
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); } @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"); Esse teste deve falhar, pois ser digitado 6 selenium.waitForPageToLoad("30000"); selenium.type("iPwd", "123456"); caracteres para a senha e, no comando assertEquals(selenium.isTextPresent("A senha deve ter mais de 5 caracteres."), true); abaixo, espera-se que seja emitido a } @After public void tearDown() throws Exception { selenium.stop(); servidor.stop(); } }
41
Executando os Testes
Clicar com o Boto direito -> Run As -> JUnit Teste
Todos os Testes da classe sero executados
Executando os Testes
Como esperado, o ltimo teste falhou
Exerccio
44