1




TESTES FUNCIONAIS
 COM O SELENIUM
2


                          SELENIUM

●   Selenium IDE
    ●
        Extensão do FF, que permite gravar, editar, executar testes.

●   Selenium Remote Control
    ●   Bibliotecas e servidor para executar os testes.
●   Selenium Grid
    ●   Distribuição de testes em multiplas máquinas
3


              SELENIUM IDE

●   Extensão do FireFox que possibilita a
    gravação de testes na sua aplicação web.


●   Não é apenas um gravador ou editor de
    testes, é uma ferramenta completa, onde
    pode até mesmo executar os seus testes.
4


SELENIUM IDE
 Ferramentas > Selenium IDE
5


                    SELENIUM IDE
                                             URL Padrão
                                             para o teste




    Executar
     Testes


                                          Indica que está sendo
                                            gravado um testes
Suíte de Testes



Lista de comandos
    Executados
 nessa gravação




                                              Área de
                                          Novos Comandos




                             Comandos
                             Executados
6


Teste Salvo
7


            Comandos SELENIUM IDE

● Open
● Assert Title

● Click and Wait

● Click

● Type

● Wait

● Close

● Go Back

● Is Text Present

● Key Down

● Key Press

● Key Up

● Refresh

● Submit

● Uncheck

● Check

● ...
8


Executando testes pela IDE
9


      Exportando o teste para Java
             Arquivo > Exportar Teste Como.. > Java (Junit) Selenium RC

package com.example.tests;

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class busca extends SeleneseTestCase {
     public void setUp() throws Exception {
           setUp("http://change-this-to-the-site-you-are-testing/", "*iexplore");
     }
     public void testBusca() throws Exception {
           selenium.open("/admin/configuracoes/papeis/lista_usuario_papel.jsf");
           selenium.select("form:sistema", "label=SIGAA");
           selenium.select("form:sistema", "label=SIGAA");
           selenium.select("form:subsistema", "label=BIBLIOTECA");
           selenium.select("form:subsistema", "label=BIBLIOTECA");
           selenium.click("//option[@value='14000']");
           selenium.click("//option[@value='14000']");
           selenium.select("form:papeis", "label=BIBLIOTECA_ADMINISTRADOR_LOCAL");
           selenium.select("form:papeis", "label=BIBLIOTECA_ADMINISTRADOR_LOCAL");
           selenium.click("form:j_id_jsp_513967898_19");
           selenium.click("form:j_id_jsp_513967898_19");
     }
}
10


SELENIUN REMOTE CONTROL (RC)
●   Ferramenta auxiliar do Selenium IDE.
●   Realiza os testes gravados em outros browser.
●   É uma ferramenta tipo record-and-playback
●   Não permite com o teste, ou seja modifica-lo para usar várias
    condições.
●   Algumas linguagens suportadas:
    ●   Java
    ●   .Net
    ●   Python
    ●   Ruby
    ●   PHP
11
12


Servidor
13


              SELENIUM GRID

●   Distribui os testes em múltiplas
    máquinas.
●   Reduz o tempo gasto na execução de
    uma suíte de testes.
14


                 Classe TestSuite
package br.ufrn.admin.jsf.tests;

import   org.junit.AfterClass;
import   org.junit.BeforeClass;
import   org.junit.runner.RunWith;
import   org.junit.runners.Suite;
import   com.thoughtworks.selenium.DefaultSelenium;

@RunWith(Suite.class)
@Suite.SuiteClasses( { UnidadeTests.class })
public class SigadminTestSuite extends WebTestCase {

     @BeforeClass
     public static void setUp() throws Exception {
              selenium = new DefaultSelenium("localhost", 4567,
"*firefox3",
"http://localhost:8080/admin/");
              selenium.start();

               selenium.open("http://localhost:8080/admin/login.jsf");
               selenium.type("login", "mayron");
               selenium.type("senha", "mayron");
               selenium.click("logar");
               selenium.waitForPageToLoad("200000");
    }

    @AfterClass
    public static void tearDown() throws Exception {
             selenium.stop();
    }
}
15


Elementos do TestSuite
@Suite.SuiteClasses( {
MaterialTreinamentoMBeanTests.class,
TipoMaterialTreinamentoMBeanTests.class,
TemplateDeDocumentoTests.class,
TipoDocumentoTemplateTest.class,
MensagemAvisoTests.class,
ConfiguracaoSistemasTest.class,
DadosInstitucionaisTest.class,
MaterialDeTreinamentoTests.class,
TipoDeAmbienteTests.class,
UsuarioAmbienteTests.class,
RegistroEntradaTests.class,
ConsultaErrosTests.class,
RegistrarAcessoPuplicoTests.class,
LogOperacoesTests.class,
LogServidorTests.class,
LogJbcTests.class,
ComunicacaoGrupo.class,
NotificacaoOnline.class,
AvisoSistema.class,
DocumentosTests.class,
EventosTests.class,
SessoesTests.class,
BoletimTests.class,
ClippingTests.class,
JornalTests.class,
RecusosSistemaTests.class,
UnidadeTests.class,
PermissoesTests.class,

})
16


                   Lista de Browser
●   *mock
●   *chrome
●   *iexplore
●   *firefox3
●   *safariproxy
●   *konqueror
●   *safari
●   *opera
●   *iehta
●   *custom
17


                       Preparando a JSP

●   No form a opção prependId como false e
    ids em todos os campos de formulário.

                  <h:form id="formulario"      prependId="false">


     <h:inputText value="#{boletim.noticia.titulo}" id="noticia" style="width: 600px;"/>


<h:commandButton id="cadastrar" value="#{boletim.confirmButton}" action="#{boletim.cadastrar}"/>
18


                   Escrevendo o Teste
package br.ufrn.admin.jsf.tests.suportetecnico;

import org.junit.Test;

import br.ufrn.arq.tests.WebTestCase;
import static org.junit.Assert.*;

public class TipoDeAmbienteTests extends WebTestCase {

    @Test
    public void cadastradoComSucesso() {
        selenium.open("/admin/suporte_tecnico/TipoAmbiente/form.jsf");
        selenium.type("nomeAmbiente", "AMBIENTE2");
        selenium.click("cadastrar");
        selenium.waitForPageToLoad("30000");
        assertTrue(selenium.isTextPresent("Operação realizada com sucesso!"));

    }
}
19


Executando
20


PROCESSO
21


     OBRIGADO




     Mayron Cachina
mayroncachina@gmail.com
  http://cachina.com.br

Testes Funcionais com Selenium

  • 1.
  • 2.
    2 SELENIUM ● Selenium IDE ● Extensão do FF, que permite gravar, editar, executar testes. ● Selenium Remote Control ● Bibliotecas e servidor para executar os testes. ● Selenium Grid ● Distribuição de testes em multiplas máquinas
  • 3.
    3 SELENIUM IDE ● Extensão do FireFox que possibilita a gravação de testes na sua aplicação web. ● Não é apenas um gravador ou editor de testes, é uma ferramenta completa, onde pode até mesmo executar os seus testes.
  • 4.
  • 5.
    5 SELENIUM IDE URL Padrão para o teste Executar Testes Indica que está sendo gravado um testes Suíte de Testes Lista de comandos Executados nessa gravação Área de Novos Comandos Comandos Executados
  • 6.
  • 7.
    7 Comandos SELENIUM IDE ● Open ● Assert Title ● Click and Wait ● Click ● Type ● Wait ● Close ● Go Back ● Is Text Present ● Key Down ● Key Press ● Key Up ● Refresh ● Submit ● Uncheck ● Check ● ...
  • 8.
  • 9.
    9 Exportando o teste para Java Arquivo > Exportar Teste Como.. > Java (Junit) Selenium RC package com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern; public class busca extends SeleneseTestCase { public void setUp() throws Exception { setUp("http://change-this-to-the-site-you-are-testing/", "*iexplore"); } public void testBusca() throws Exception { selenium.open("/admin/configuracoes/papeis/lista_usuario_papel.jsf"); selenium.select("form:sistema", "label=SIGAA"); selenium.select("form:sistema", "label=SIGAA"); selenium.select("form:subsistema", "label=BIBLIOTECA"); selenium.select("form:subsistema", "label=BIBLIOTECA"); selenium.click("//option[@value='14000']"); selenium.click("//option[@value='14000']"); selenium.select("form:papeis", "label=BIBLIOTECA_ADMINISTRADOR_LOCAL"); selenium.select("form:papeis", "label=BIBLIOTECA_ADMINISTRADOR_LOCAL"); selenium.click("form:j_id_jsp_513967898_19"); selenium.click("form:j_id_jsp_513967898_19"); } }
  • 10.
    10 SELENIUN REMOTE CONTROL(RC) ● Ferramenta auxiliar do Selenium IDE. ● Realiza os testes gravados em outros browser. ● É uma ferramenta tipo record-and-playback ● Não permite com o teste, ou seja modifica-lo para usar várias condições. ● Algumas linguagens suportadas: ● Java ● .Net ● Python ● Ruby ● PHP
  • 11.
  • 12.
  • 13.
    13 SELENIUM GRID ● Distribui os testes em múltiplas máquinas. ● Reduz o tempo gasto na execução de uma suíte de testes.
  • 14.
    14 Classe TestSuite package br.ufrn.admin.jsf.tests; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Suite; import com.thoughtworks.selenium.DefaultSelenium; @RunWith(Suite.class) @Suite.SuiteClasses( { UnidadeTests.class }) public class SigadminTestSuite extends WebTestCase { @BeforeClass public static void setUp() throws Exception { selenium = new DefaultSelenium("localhost", 4567, "*firefox3", "http://localhost:8080/admin/"); selenium.start(); selenium.open("http://localhost:8080/admin/login.jsf"); selenium.type("login", "mayron"); selenium.type("senha", "mayron"); selenium.click("logar"); selenium.waitForPageToLoad("200000"); } @AfterClass public static void tearDown() throws Exception { selenium.stop(); } }
  • 15.
    15 Elementos do TestSuite @Suite.SuiteClasses({ MaterialTreinamentoMBeanTests.class, TipoMaterialTreinamentoMBeanTests.class, TemplateDeDocumentoTests.class, TipoDocumentoTemplateTest.class, MensagemAvisoTests.class, ConfiguracaoSistemasTest.class, DadosInstitucionaisTest.class, MaterialDeTreinamentoTests.class, TipoDeAmbienteTests.class, UsuarioAmbienteTests.class, RegistroEntradaTests.class, ConsultaErrosTests.class, RegistrarAcessoPuplicoTests.class, LogOperacoesTests.class, LogServidorTests.class, LogJbcTests.class, ComunicacaoGrupo.class, NotificacaoOnline.class, AvisoSistema.class, DocumentosTests.class, EventosTests.class, SessoesTests.class, BoletimTests.class, ClippingTests.class, JornalTests.class, RecusosSistemaTests.class, UnidadeTests.class, PermissoesTests.class, })
  • 16.
    16 Lista de Browser ● *mock ● *chrome ● *iexplore ● *firefox3 ● *safariproxy ● *konqueror ● *safari ● *opera ● *iehta ● *custom
  • 17.
    17 Preparando a JSP ● No form a opção prependId como false e ids em todos os campos de formulário. <h:form id="formulario" prependId="false"> <h:inputText value="#{boletim.noticia.titulo}" id="noticia" style="width: 600px;"/> <h:commandButton id="cadastrar" value="#{boletim.confirmButton}" action="#{boletim.cadastrar}"/>
  • 18.
    18 Escrevendo o Teste package br.ufrn.admin.jsf.tests.suportetecnico; import org.junit.Test; import br.ufrn.arq.tests.WebTestCase; import static org.junit.Assert.*; public class TipoDeAmbienteTests extends WebTestCase { @Test public void cadastradoComSucesso() { selenium.open("/admin/suporte_tecnico/TipoAmbiente/form.jsf"); selenium.type("nomeAmbiente", "AMBIENTE2"); selenium.click("cadastrar"); selenium.waitForPageToLoad("30000"); assertTrue(selenium.isTextPresent("Operação realizada com sucesso!")); } }
  • 19.
  • 20.
  • 21.
    21 OBRIGADO Mayron Cachina mayroncachina@gmail.com http://cachina.com.br