Modulo II Selenium Professor Ismael H F Santos – [email protected] April 05 Prof. Ismael H. F. Santos - [email protected] 1 Bibliografia Introduction to Apache Maven 2 March 09 Tutorial ibm developerWorks: Prof. Ismael H. F. Santos 2 Ementa Traditional Build x Maven Build March 09 Prof. Ismael H. F. Santos 3 Considerações Selenium é uma framework de automação de testes de software para aplicações web. Os testes podem ser escritos em formato HTML ou codificados em várias linguagens de programação e podem ser executados diretamente nos browsers mais modernos. Selenium pode ser distribuído em sistemas Windows, Linux e Macintosh. March 09 Prof. Ismael H. F. Santos 4 Considerações Tipos de Testes Possíveis: Teste de Aceitação ou Funcional; Teste de Regressão; Teste de Desempenho. Ferramentas da framework: March 09 Selenium IDE; Selenium Remote Control; Selenium Grid. Prof. Ismael H. F. Santos 5 March 09 Prof. Ismael H. F. Santos 6 Implementação Para realizar testes com Selenium, é necessário seguir um processo básico: March 09 Criação do script de interação usando o Selenium IDE. Execução do script pela própria IDE ou através do Selenium Remote Control na linguagem de programação preferida. Prof. Ismael H. F. Santos 7 Implementação Para iniciar a criação de testes com Selenium, precisamos baixar e instalar o Selenium IDE: Abra o browser Firefox 1.5.x, 2.x ou 3.x. Instaleo se necessário. (Obs.: A versão 2.x apresentou problemas com a última versão do Selenium IDE mas a versão 3.x funcionou corretamente) March 09 Prof. Ismael H. F. Santos 8 Implementação Acesse a URL http://seleniumide.openqa.org/download.jsp Clique no link de download "Firefox extension" da versão mais recente. Na janela de instalação do plugin, clique em [Install Now]. Aguarde o download terminar e clique no botão [Restart Firefox]. Com isso, o Firefox reiniciará e o Selenium IDE estará instalado. March 09 Prof. Ismael H. F. Santos 9 Implementação Podemos agora criar um script simples: March 09 Na janela do Firefox, selecione o menu Tools > Selenium IDE. A janela do Selenium IDE será aberta em modo de gravação automaticamente. Alterne para a janela do Firefox e acesse a URL http://www.google.com.br/ Realize uma busca pelo texto "SENAC". Após o resultado ser exibido no browser, verifique a IDE e repare que os comandos foram gravados. Prof. Ismael H. F. Santos 10 Implementação Volte ao browser e acione o menu popup sobre o link "SENAC RIO" e selecione a opção "verifyTextPresent SENAC". Isso gravará um comando para verificação do texto "SENAC" na IDE. Selecione a janela da IDE e clique no botão vermelho para parar a gravação. Com isso, temos um caso de teste gravado pela IDE. March 09 Prof. Ismael H. F. Santos 11 Implementação Com o script simples gravado, podemos reproduzir o caso de teste: March 09 Na janela da IDE, clique no botão "Play current test case". Repare que todos os passos executados anteriormente foram reproduzidos e ao final houve uma verificação de texto presente na página. Repare também que a linha do comando de verificação ficou verde, indicando sucesso na verificação. Prof. Ismael H. F. Santos 12 Implementação Com a reprodução do script, alcançamos o que é conhecido como teste funcional ou teste de aceitação. Podemos, em seguida, gravar o script para realizar o mesmo teste em outra ocasião: Na janela da IDE, clique no menu File > Save Test Case. Salve o script como "teste.selenium" em qualquer pasta. O arquivo pode ter qualquer extensão mas é conveniente usar uma extensão mais adequada. March 09 Prof. Ismael H. F. Santos 13 Implementação Feche a janela da IDE e o todos os browsers Firefox que ainda estiverem abertos para ter certeza que não existirá nada em memória. Abra o Firefox novamente e o Selenium IDE novamente. Na janela da IDE, abra o arquivo gravado anteriormente "teste.selenium" através do menu File > Open... Execute o teste novamente clicando em "Play current test case". Repare que o teste foi reproduzido novamente. March 09 Prof. Ismael H. F. Santos 14 Implementação Com a execução de um script gravado anteriormente, alcançamos o que é conhecido como teste de regressão que verifica se as funcionalidades anteriormente testadas continuam executando da mesma forma. Este tipo de teste é adequado para testar novas versões de um software com o objetivo de garantir que as funcionalidades passadas não foram afetadas pelas novas mudanças. March 09 Prof. Ismael H. F. Santos 15 Integração com Maven e Eclipse Utilize uma distribuição do Eclipse 3.3 com o plugin M2Eclipse instalado. Iremos utilizar um plugin do Maven para executar o Selenium Remote Control. O Selenium Remote Control é uma ferramenta de teste que permite escrever testes automatizados para aplicações web em qualquer linguagem de programação em cima de qualquer site HTTP usando qualquer browser com JavaScript habilitado. March 09 Prof. Ismael H. F. Santos 16 Integração com Maven e Eclipse O Selenium RC possui duas partes: March 09 Um servidor que automaticamente abre e fecha browsers, e atua como um HTTP proxy para as requisições web. Bibliotecas clientes para sua linguagem de programação favorita. Prof. Ismael H. F. Santos 17 March 09 Prof. Ismael H. F. Santos 18 Integração com Maven e Eclipse Vamos agora usar o Selenium RC como plugin do Maven. Caso o Eclipse não esteja aberto, execute-o. Crie um projeto Maven com archetype quickstart: March 09 Acesse o menu File > New > Project... Escolha Maven Project e clique em Next. Clique em Next novamente. Escolha maven-archetype-quickstart na coluna Artifact Id e clique em Next. Em Group Id, digite "br.senac" Prof. Ismael H. F. Santos 19 Integração com Maven e Eclipse Em Artifact Id, digite "testeSelenium" Em Package, digite "br.senac" Clique em Finish para criar o projeto. Adicione o plugin do Selenium: March 09 Clique com o botão direito do mouse sobre o projeto e acesse o menu Maven > Add Plugin. Digite "selenium" para filtrar a lista de plugins. Selecione "org.codehaus.mojo selenium-mavenplugin". Clique em Ok. Prof. Ismael H. F. Santos 20 Integração com Maven e Eclipse O plugin foi adicionado. Basta abrir o pom.xml e verificar. Vamos configurar o maven para iniciar o servidor do Selenium RC toda vez que a execução dos testes estiver para começar e parar o mesmo servidor depois que a execução dos testes terminar: March 09 Abra o arquivo pom.xml no Eclipse com um clique duplo. Prof. Ismael H. F. Santos 21 Integração com Maven e Eclipse March 09 Clique na aba Plugins na parte inferior. Selecione o plugin do Selenium na lista de plugins. Na caixa Executions, clique no botão [Add...]. Na caixa Execution Details, digite "start" no campo Id. Selecione test-compile no campo Phase. No campo Goals, clique em [Add...]. Clique sobre o goal criado e digite "startserver". Prof. Ismael H. F. Santos 22 Integração com Maven e Eclipse Clique no link Configuration da caixa Execution Details. Inclua a seguinte configuração nesta execução após a tag goals: <configuration> <background>true</background> </configuration> March 09 Na caixa Executions, clique no botão [Add...]. Na caixa Execution Details, digite "stop" no campo Id. Prof. Ismael H. F. Santos 23 Integração com Maven e Eclipse Selecione post-integration-test no campo Phase. No campo Goals, clique em [Add...]. Clique sobre o goal criado e digite "stop-server". Salve o pom.xml. Inclua a dependência para suporte a testes com Selenium. Abra o menu popup sobre o projeto e escolha Maven > Add Dependency. Digite "selenium" para filtrar as dependencias disponiveis. Selecione org.apache.geronimo.testsupport March 09 Prof. Ismael H. F. Santos 24 Integração com Maven e Eclipse Abra o Selenium IDE novamente no Firefox. Abra o arquivo "teste.selenium" anteriormente gravado. Selecione o menu File > Export Test Case As... > Java - Selenium RC. Salve como TesteSelenium.java em qualquer pasta. Copie o arquivo TesteSelenium.java para o Eclipse na pasta src/test/java no pacote br.senac e abra o arquivo no editor do Eclipse. Mude a package para br.senac March 09 Prof. Ismael H. F. Santos 25 Integração com Maven e Eclipse Renomeie NewTest para TesteSelenium. Altere o método setUp para setUp("http://www.google.com.br/", "*iexplore"); Salve o arquivo. Para testar tudo, abra o menu popup sobre o projeto e selecione Run As > Maven install. O Selenium RC abrirá o Internet Explorer e fará os testes. Ao final teremos a info de BUILD SUCCESSFUL. March 09 Prof. Ismael H. F. Santos 26 Integração com Maven e Eclipse Para causar uma falha, basta trocar a linha: verifyTrue(selenium.isTextPresent("SENAC")) por verifyTrue(selenium.isTextPresent("SENACFALHA")) e executar novamente o Maven install. Com isso, teremos uma falha porque o texto SENACFALHA não será encontrado. March 09 Prof. Ismael H. F. Santos 27