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.