Testes de aceitação com o Selenium
Postado em 28. fev, 2007 por Nico Steppat em Agile
Selenium é uma ferramenta para testar aplicações web pelo browser de forma automatizada. Selenium se refere ao Acceptance Testing (ou functional testing) que involve rodar testes num sistema finalizado. Os testes rodam diretamente num browser, exatamente como o usuário faria.
Por que Selenium?
Temos que testar o nosso código, mas em uma aplicação web fica dificil de testar a camada de apresentação, o resultado final. Como testar os custom tags (por exemplo erro.tag ou select.tag)? Como testar a compatibilidade entre browser diferentes de forma automatizada? Em geral, como testar que a página renderizada tem o resultado desejado?
Para isso serve Selenium, que se preocupa basicamente com duas tarefas
- testes de funcionalidades da aplicação web
- testes de compatibilidade entre browser e plataformas diferentes
Componentes do Selenium:
Dois componentes são importante para gerar e rodar testes com Selenium:
1. Selenium RC
É um servidor escrito em java. Ele recebe chamadas http e executa os testes. As chamadas vem dos testes unitários (com junit, por exemplo). Este blog tem foco nesse componente.
2. Selenium IDE
É uma extensão do firefox. Com ela podemos criar testes. Ela funciona com um recorder e grava as ações do usuário. As ações podem ser transformadas em código em várias linguagens entre elas java.
Integração com JUnit
Vamos criar um teste de funcionalidade com Selenium e JUnit. Precisamos:
– uma aplicação web
– o selenium server
– o selenium test client com junit
Objetivo é testar um combo box numa página jsp. Vamos deixar o selenium abrir um browser, chamar a página e testar a combo box.
A página do aplicação web
Aqui tem uma página ( index.jsp) simples para testar a opção selecionada num combo box:
<html>
<head>
<title>Selenium e JUnit HowTo</title>
</head>
<body>
Size:
<select name=”size”>
<option id=”x-large”>X-Large</option>
<option id=”large”>Large</option>
<option id=”medium” selected>Medium</option>
<option id=”small”>Small</option>
<option id=”tiny”>Tiny</option>
</select>
</body>
</html>
Vamos supor que esta página é acessível pela url: http://localhost:8080/test/index.jsp
O Selenium Server
O servidor Selenium tem obviamente estar rodando antes de executar os testes de funcionalidade. Para iniciar o server precisamos o selenium-server.jar que está dentro do Selenium-RC download .
Executamos na linha de comando:
$java -jar selenium-server.jar
Existe um modo interativo do server para passar testes diretamente na linha de comando. Basta adicionar a opção -interactiv.
$java -jar selenium-server.jar -interactiv
Mais sobre o modo interativo aqui.
O selenium client
Com a aplicação web e o servidor selenium rodando podemos escrever o teste com junit. Os métodos setUp e tearDown da classe de teste vão abrir e fechar a conexão com o servidor selenium. A classe DefaultSelenium é utilizado para a conexão. Aqui o selenium-java-client-driver.jar que vem com o Selenium RC é necessário:
new DefaultSelenium("localhost", 4444, "*firefox /usr/lib/firefox/firefox-bin", "http://localhost:8080");
A porta 4444 é a padrão do Selenium, o terceiro parâmetro é o perfil do browser junto com o caminho executável (tem que ser binario mesmo), por último a url do servidor web. Existem perfis disponíveis para os browser mais usados do mercado.
Aqui temos o começo código do nosso teste unitário:
private static DefaultSelenium selenium;
@BeforeClass
public static void setup() {
String url = "http://localhost:8080";
selenium = new DefaultSelenium("localhost", 4444, "*firefox /usr/lib/firefox/firefox-bin", url);
selenium.start();
}
@AfterClass
public static void tearDown() {
selenium.stop();
}
}
Falta agora o método de teste que abre a página index.jsp e verifica a opção selecionada no combobox:
@Test
public void testSelectedIdOfSizeComboBox() {
selenium.open("/test/index.jsp");
assertEquals("medium", selenium.getSelectedId("size"));
}
Ao rodar o teste o Selenium abrirá o firefox e chamará a página. Existem muitos métodos para que o Selenium preencha campos, submeta formulários, navegue entre as páginas e muito mais. Você pode utilizar o Selenium IDE e realizar as operações que deseja testar, e o Selenium IDE vai gerar um código com tudo o que você fez durante aquela sessão no browser, depois basta você adicionar as assertions desejadas, gastando pouco esforço para codificar a simulação de cliques e preenchimento de formulários.
Problemas com Firefox 2.0
Usando Firefox 2.0.1 eu tive problemas na versão atual do Selenium. Lendo o forum li que isso já foi resolvido no snapshot do selenium (que não está disponível atualmente) e será resolvido na próxima versão.
Versões usadas
- selenium-remote-control-0.9.1-SNAPSHOT
- selenium client 0.9.0
- junit 4.1
Nico Steppat (Google+)
Mais sobre o autor
27 Respostas para “Testes de aceitação com o Selenium”
Trackbacks/Pingbacks
-
-
setembro 2, 2008
[...] aplicação usava algumas configurações corretamente, como o minimo e máximo de conexões (nos testes de integração e de aceite, o máximo era 3). Mas uma outra configuração importantíssima estava escrita de maneira errada [...]
-
-
setembro 13, 2010
[...] Se a porta do Selenium Server foi alterada (para maiores informações vide Configuração do ambiente), o segundo parâmetro do construtor deve ter o novo valor da porta. Para outras informações, aqui. [...]
-
-
abril 12, 2012
[...] permitem tal trabalho, simulando a interação de um usuário com a aplicação. Esse é o caso do Selenium que, com a assistência do JUnit, pode facilitar o trabalho de escrever tais [...]
ASSINE NOSSO RSS
Victor de Souza Couto
01. mar, 2007
Interessantíssima ferramenta.
Estou pensando seriamente em colocá-la na minha etapa de teste em um projeto que estou gerindo em programing eXtreme. Parece se encaixar perfeitamente em nosso caso.
ASOBrasil
05. mar, 2007
Muito bom o artigo! Parabéns!
Até onde sei o pessoal do Glassfish vai começar a usar o Selenium para testar toda a GUI. Estou estudando ele há um tempinho e estou gostando, muito muito prático!
Anne Caroline Rocha
04. jul, 2007
Estou tentando instalar o Selenium, mas não consegui continuar porque estou usando o windows e o comando para iniciar o firefox é do linux:
*firefox /usr/lib/firefox/firefox-bin
Alguém sabe qual comando devo colocar para executar no windows?
Nico Steppat
05. jul, 2007
Anne, nunca testei, mas tente o caminho p/ o firefox.exe.
Daniel Nascimento
11. jul, 2007
O Selenium pode ser incorporado ao Firefox como um complemento. Para isso basta ir em:
Ferramentas>Complementos>Extensões>Mais Extensões.
Será aberta uma página do Firefox onde estão armazenadas todas as atuais extensões disponíveis… para baixar o Selenium basta digitar na caixa de Busca “Selenium IDE” e logo após seguir o passo a passo.
Daniel Nascimento
11. jul, 2007
Vou aproveitar para deixar uma dúvida aqui também. Uso o Selenium Integrado ao Firefox (Windows/Linux) e queria saber como faço para utilizar o Java ou o PHP para trabalhar com descisões de fluxos no Selenium.
Para usar essas funcionalidades devo baixar um complemento? Ou devo ter apenas a linguagem instalada na minha máquina?
Joamar Cardoso
18. set, 2007
Como faço pra criar testes no Selenium????
Instalei o Selenium Core e o IDE, mas até agora só conseguí gravar testes no Selenium IDE e depois rodar no Selenium TestRunner, não sei como crio testes para rodar direto no Selenium TestRunner.
Agradeço se alguém me ajudar nisso.
Aristóteles Júnior
20. dez, 2007
Tenho a mesma dúvida do colega acima.
Preciso fazer a automação dos teste no meu trabalho e gostei do Selenium porque é mais fácil criar os scripts.
Queria saber como fazer rodá-los no firefox e no iexplore (sem o IDE e sem HTA, por favor). É possível sem o JUnit?
Já criei o servidor selenium e já rodei o TestRunner por ele, mas quando executo meu TestSuite ele dá erro logo no começo (e funciona perfeitamente no IDE).
Tenho a faca e o queijo. Como é que eu corto?
E qual a vantagem de usar outras linguagens a não ser o Selenese?
Agradeço desde já pela atenção.
Welita Lisa
31. jan, 2008
Tenho a mesma dúvida dos comentários acima.
como faço para fazer os testes no internet explorer?
Preciso entender melhor o funcionamento do selenium TestRunner, baixei ele mais não consegui executa-lo.
Existe um tutoral que fala sobre isto? sobre o selenium IDE já encontrei varios.
Aguardo respostas.
Agradeço pela atenção desde já.
Daniel Abella
20. fev, 2008
Pessoal,
Para testar no windows, é só colocar assim:
selenium = new DefaultSelenium(“localhost”, 4444,”*firefox”, url);
Apenas isso e funciona.
Parabéns pelo artigo, muito legal ;D
Ana Claudia
07. abr, 2008
Eu criei os scriptis no fire fox, mas não estou sabendo como reproduzi-los de uma única vez. Gostaria que alguém me enviasse um passo a passo.
Obrigada.
Fiamma Custódio
30. jul, 2008
Muito bom o Atigo! Parabéns.
Mas tenho um dúvida, é necessário usar o JUnit?
Não tenho ele instalado!!!!!:D
Hebert Thomé
04. set, 2008
Deixo aqui também meus elogios pelo artigo, Parabéns Nico.
Porém tenho tido problemas com a autenticação no proxy, estou a 2 dias procurando uma solução para o meu problema e nada encontro.
Seguindo a sugestão de configuração no próprio site da Openga.
java -jar selenium-server.jar -Dhttp.proxyHost=10.2.2.10 -Dhttp.proxyPort=8080 -Dhttp.proxyUser=userTest -Dhttp.proxyPassword=passTest
Eu consigo configurar o proxy numa boa, mas a autenticação não é feita. Existe alguma alternativa para esse problema?
Wallison
06. out, 2008
Gostei muito do artigo, so to com um problema to tentanto rodar no eclipse mais nao consigui.
Voce tem alguma dica ou material que posso me ajudar?
desde ja obrigado
Paulo
14. set, 2009
Bom artigo, parabéns!
Leandro
23. dez, 2009
pessoal,
eu tenho que fazer um teste que faz o selenium sair de uma pagina e ir para outra pagina, alguem sabe como se faz isso?
Shirlei
05. jan, 2010
Olá gente,
Comecei a utilizar o Selenium IDE na empresa onde trabalho e preciso gravar testes onde formulários são preenchidos e estes formulários possuem o botão Salvar, ocorre que ao gravar este teste na hora de eu executá-lo novamente ele irá preencher com os mesmos dados digitados na gravação do teste e aí dá pau, pq já contém no banco de dados.
Como fazer com que o IDE preencha algo como ana1; ana2; ana3…
leandro
20. jan, 2010
bom dia pessoal, estou como um problema com o selenium IDE, como eu faço pra fazer uma comparação de valores (comparar 2 valores xpath), alguem sabe???
leandro
28. jan, 2010
Olá Pessoal, como eu faço pra fazer o selenium verificar se existe um valor em um campo “type”, caso exista algun valor o selenium exibe erro, senao continua execução.
Cristian Pietro
05. fev, 2010
Comment by Shirlei — January 5
Olá Shirlei,
usa um while para preencher os campos por exemplo;
while (${i} < 100)
type ana${i}
erika
07. jun, 2010
Olá,
Estou começando a testar a compatibilidade do Selenium Ide, com um aplicativo de linguagem Java e arquitetura AJAX, porém, a ferramenta identifica o ComboBox como Imagem.
Alguém sabe por que isso acontece? Tem alguma solução?
Fabio Araujo
20. mar, 2011
Muito bom esse post, em menos de 10 minutos já estava fazendo uns testes interessantes aqui, isso vai agilizar muito os testes da camada de apresentação ^^
Parabéns!
Gil
29. mar, 2011
o selenium RC é indispensável?
Eudson Bambo
22. mar, 2013
Bom dia pessoal,
Sou novo numa empresa de desenvolvimento. Sempre trabalhei com programação apenas e nada de testes. foi me incumbida a missão de testar o Selenium. Encontrei este exemplo, segui todos os passos mas na execução da instrução: selenium.open(“/test/index.jsp”); da nullPointer, alguém ajuda????? por favor