SERVIDOR SELENIUM

SERVIDOR SELENIUM




O Servidor Selenium, possui dentro de si um conjunto de classes em java e Javascript responsáveis por converter comandos em ações, possui toda uma interface de execução muito similar á do Selenium IDE.

O Servidor Selenium esta na sua 29ª atualização, porem com os avanços em outras interfaces Selenium há uma grande possibilidade de não haver mais atualizações.

Para a execução do Selenium RC é imprescindível que o Servidor esteja ativo, e para ativa-lo há duas formas conforme instrução abaixo:


ATIVAÇÃO VIA “PROMPT DE COMANDO” MSDOS:




1ª Crie um diretório Fixo de preferencia na Raiz do computador responsável pela execução: “C:\BaseTeste\”

2ª Cole nesse diretório o servidor Selenium “selenium-server-standalone-2.29.0.jar”.

3ª Num bloco de nodas escreva a seguinte instrução:

“cd C:\ BaseTeste

java -jar selenium-server-standalone-2.29.0.jar”

4ª Salve o arquivo com a extensão (.bat);

5ª Execute-o como Administrador da maquina.



Será aberta tela similar a imagem abaixo:









EXECUÇÂO REMOTA

EXECUÇÂO REMOTA


                O processo de execução remoto é utilizado para que o Analista execute seus testes, em ambientes específicos de forma a manter a integridade de seus testes privando-os de possíveis configurações de sua própria maquina. Para isso é necessário que o computador alvo da execução (Server), possua o Servidor Selenium Ativo, via prompt de comando.


Servidor (onde rodará os testes).



Cliente (Mandará a solicitação de execução dos testes)






TESTE CONSTRUTOR

TESTE CONSTRUTOR



          Uma das principais características de teste de software é a repetição de rotinas, com o Selenium RC podemos utilizar essas repetições a nosso favor utilizando a técnica dos construtores.
           Essa técnica tem como base elaborar uma determinada rotina e reaproveita-la de acordo com sua necessidade dando assim abertura para a personalização da mesma conforme ilustra o diagrama abaixo:






            Em uma situação onde temos de testar inúmeras variações em uma mesma tela, conforme ilustração acima (Teste variações tela de Login), uma solução é o mapeamento da rotina e a elaboração de uma função que aceite as diversas entradas que compõem nossa variação de resultados.


   Para utilizarmos a função acima criaremos um teste conforme exemplo abaixo: Download Teste_variacao_Login.java







SUITE DE TESTE

SUITE DE TESTE



              Uma Suíte de testes é o conjunto de testes e ela se torna muito necessária para o Testador quando o mesmo deseja executar um único teste inúmeras vezes ou diversos testes, a fim de explorar todo o potencial da aplicação. A baixo darei um exemplo de classe java para criarmos uma SUITE. 



Exemplo:    Download : SUITE.java

Após o comando (value = { seuTeste.class, seuTeste.class, seuTeste.class}), conforme exemplo abaixo.


EXECUÇÂO - SELENIUM

EXECUÇÂO


      Para a execução de nosso teste será necessário apenas duas validações.
      Verifique que não há erros em nosso teste.
      Verifique que o servidor Selenium esta ativo.

      Clique sobre seu teste, com o botão direito e vá até a opção (Run As), Clique em (JUnit Test).



CENTRALIZANDO VARIAVEIS & OBJETOS

CENTRALIZANDO VARIAVEIS & OBJETOS


                Um dos grandes problemas da automação de teste é sua própria autonomia que conflita diretamente com mudanças correntes na aplicação alvo dos testes. Uma solução para reduzir a manutenção de código nos testes é a centralização de objetos através do Java. 

                 Grande parte dos comandos no Selenium necessita de um campo alvo e um determinado valor (Massa de dados), porem são elementos dinâmicos e para tornar nossa automação mais inteligente utilizaremos uma estrutura de centralização conforme o diagrama abaixo: 



                   Com essa estrutura não se torna mais necessária á manutenção individual, alterando um arquivo todos os testes que fazem uso de um determinado elemento sofrem a mudança naturalmente.
                 No pacote Massa de dados em nosso projeto (Eclipse), crie uma classe com o nome Mapa, conforme o exemplo abaixo:






OBSERVAÇÂO: É importante que as variáveis criadas nessa classe sejam (publicas , public), para que possam ser compartilhadas com o testes.

Após o mapeamento a linha de código que era dessa maneira:
selenium.type("name=loginForm:j_idt23", "itau");
Ficará da seguinte maneira:
selenium.type(mapa.Usuario , mapa.Usuario_Itau);



EVIDÊNCIA - SELENIUM

EVIDÊNCIA


                A evidência é a parte principal do teste, pois ela ilustra fisicamente a existência do teste e seu proposito. Cada teste vai exigir um tipo especifico de validação e Evidência e para isso existem alguns comandos no Selenium.
selenium.captureEntirePageScreenshot
Captura um Screenshot apenas da pagina
selenium.captureNetworkTraffic
Captura o trafico de rede e algumas interações
selenium.captureScreenshot
Captura um Screenshot ta tela inteira


                Apesar disso há uma limitação no que se refere a consistência de Evidência, para melhorar e padronizar o processo de coleta de Evidências desenvolvi uma solução mais eficaz.
A Evidência traz os seguintes itens:

 Resultado (Resultado do teste)
 Navegador (Browser utilizado)
 Cenário (Nome do Cenário executado)
 Data (Data da execução)
 Hora (Hora da execução)
 Descrição (Uma breve descrição do teste)


Modelo de Evidência.



      Para criarmos o formulário acima, precisaremos inserir o seguinte código.


o           Classe construtora Biblioteca_Selenium.java
o           Biblioteca iText-2.1.5.jar
o           Pacote de Ícones.
o                 Criar um ArrayList do tipo Imagem (List evidence = null;).
o                Criar duas variáveis String (exception e descricao), na variável descricao de um breve resumo do teste e seu objetivo:
o                E crie um método do tipo: Biblioteca_Selenium biblioteca = new Biblioteca_Selenium();

      Nossa primeira parte ficará da seguinte maneira:

        Para capturar o Screenshot utilizaremos o seguinte código:

evidence.add(biblioteca.jPrintSCrean());
O código acima pode ser utilizado de forma ilimitada de acordo com a necessidade.
          Após o teste é importante que o código respeite a estrutura sublinhada em preto.

    try{ - Abre um conjunto de instruções que será observado.
          } catch (Exception e) { - Fecha o conjunto de instruções e captura as exceções encontradas durante a                    execução da mesma e atribui á variável (e);
exception = e.fillInStackTrace().getMessage(); - De todas as exceções encontradas no código, apenas as mensagens do “Trance” do teste serão atribuídas a nossa variável “exception”.
} finally { - Garante que independente da existência de erro ou da não existência de erro as linhas abaixo dessa instrução serão executadas.
biblioteca.GerarPDF(evidence,Teste_Login.class.getName(), descricao,exception,"*iexplore","C:\\Base\\TesteLogin.pdf"); - Função Criada na Biblioteca Selenium responsável por gerar o Formulário em PDF.

biblioteca.GerarPDF(“Lista de Imagens recém tiradas” ,”Nome do Teste”, “descrição do teste”, ”Mensagem de Erro” ,"Browser" ,"Nome e local onde o arquivo será salvo");







OBSERVAÇÂO: Deixe apenas o Browser maximizado, pois a aplicação fara um PrintScreen de toda a tela.


SERVIDOR SELENIUM - RC

SERVIDOR SELENIUM


            O Servidor Selenium, possui dentro de si um conjunto de classes em java e Javascript responsáveis por converter comandos em ações, possui toda uma interface de execução muito similar á do Selenium IDE.
            O Servidor Selenium esta na sua 29ª atualização, porem com os avanços em outras interfaces Selenium há uma grande possibilidade de não haver mais atualizações.
Para a execução do Selenium RC é imprescindível que o Servidor esteja ativo, e para ativa-lo há duas formas conforme instrução abaixo:

ATIVAÇÃO VIA “PROMPT DE COMANDO” MSDOS:


                    1ª Crie um diretório Fixo de preferencia na Raiz do computador responsável pela execução: “C:\BaseTeste\”
                 
                   2ª Cole nesse diretório o servidor Selenium “selenium-server-standalone-2.29.0.jar”.

                    3ª Num bloco de nodas escreva a seguinte instrução:

“cd C:\ BaseTeste
java -jar selenium-server-standalone-2.29.0.jar”
                
                  4ª Salve o arquivo com a extensão (.bat);
                  
                  5ª Execute-o como Administrador da maquina.

  


Será aberta tela similar a imagem abaixo:



Ativação via código Fonte

Dentro do código correspondente a seu teste adicione o código abaixo:

SeleniumServer server;
server.start();
O código fonte ficara da seguinte maneira:


OBSERVAÇÕES:
o   O Servidor deve ser iniciado antes do Selenium respentando sempre a sequencia acima.
o   Ao final do teste é importante inserir o código (server.stop();), conforme ilustração abaixo:






DISSECANDO UM TESTE

DISSECANDO UM TESTE


         Antes de iniciarmos uma execução é importante conhecer a composição do teste e a importância de cada elemento. Abaixo farei um breve relado descritivo dos componentes de nosso teste.
         A importação padrão do Selenium IDE traz para nosso teste as bibliotecas abaixo, porem de acordo com a necessidade, podemos incrementar esse pacote.
o  
                                   import com.thoughtworks.selenium.*; Biblioteca responsável por converter comandos em ações compreendida pelo Browser e a pagina WEB.
           import org.junit.After; “After” é uma instrução da biblioteca JUnit responsável por direcionar uma determinada ação do teste em seu devido tempo em uma sequencia logica. (After -> Depois de uma ação faça).
o                                 import org.junit.Before; “Before” é uma instrução da biblioteca JUnit responsável por direcionar uma determinada ação do teste em seu devido tempo em uma sequencia logica. (Before -> Antes de uma ação faça).
             import org.junit.Test; “Teste” é uma instrução da biblioteca JUnit responsável por especificar que um determinado conjunto de instruções é um teste e antes dele “Before” deve ocorrer um evento e “After” depois dele deve ocorrer outro evento especificado.
           import static org.junit.Assert.*; Biblioteca de validação e comparação.



Diagrama de Execução de uma Classe de teste.


  Bibliotecas utilizadas em nosso teste.



Como ilustrado no “Diagrama de Execução de uma Classe de teste”, antes que a ferramenta Junit execute nosso teste é necessário estabelecer algumas configurações:

o    DefaultSelenium: Vai atribuir ao Selenium algumas instruções:
o    “localhost”: execução Local pode ser substituída pelo IP de um servidor;
o    4444: porta padrão atribuída para o acesso ao servidor;
o    “*chome”: Navegador pré-definido para a execução, pode ser os seguintes códigos:

*iexplore 
Internet Explorer
*firefox
Firefox
*safari
Safari
*opera
Opera
*googlechrome
Google Chrome

o    “http://192.168.100.26:8080/”: Link correspondente a pagina que testaremos.


         O teste é composto por uma gama de comandos, da biblioteca Selenium, responsáveis por ações como clicar, aguardar um elemento, inserir um texto em um campo. Entre outros conforme exemplo abaixo. 



  Lista dos principais comandos

Comando
Alvo
Valor
Descrição
open
Link


type
Endereço do campo
1234
Imputa texto no campo especificado
click
Endereço do Botão ou CheckBox

Clica num alvo especificado
waitForPageToLoad


Aguarda a pagina ser carregada
select
Endereço do Combobox
SP
Seleciona valores em um combobox
fireEvent
Endereço do campo
blur
Atualiza o campo ativando uma ação ou serviço pre-definido.

    E com a instrução “@After” fechamos nosso teste.