Leandro Martins

Usando Selenium e PHPUnit, para efetuar testes

by Leandro Martins on set.18, 2008, under Framework, Testing

Nesse tutorial vamos apreender como usar o PHPUnit  junto com Selenium, para elaborar testes em sua aplicação PHP.

Ferramentas usadas nesse tutorial:

  • Selenium IDE e RC Server
  • XAMPP (PHP + PHPUnit)

Selenium IDE:

Primeiro passo, é instalar a extensão do Selenium IDE no Firefox, usando o link abaixo.

Após instalado, abra ele pelo menu Ferramentas>Selenium IDE, do Firefox. Assim que aberto, ele já estará gravando as ações executas no browser, clique na luz vermelha para parar a gravação e vá no Selenium IDE menu Opções>Formato> aqui escolhe a linguagem que você deseja utilizar para executar o test, vamos usar o PHP. Selecionado o formato, clique na luz para iniciar a gravação, e inicie sua rotina de teste, executando as ações no browser. Após ter terminando, salve o test, usando o menu Arquivo>Salvar Teste como NomeDoTeste.php, numa pasta, de preferencia no na mesma unidade do XAMPP.

Agora vamos baixar e configurar o Selenium RC Server responsável executar o teste junto com o PHPUNit e o XAMPP que é um conjunto de servidores, nele o PHPUnit já vem configurado, sem precisar configurar.

Selenium RC Server:

Salve o arquivo de preferencia na raiz da unidade C, e extraia os arquivos.

XAMPP:

Salve o arquivo de preferencia na raiz da unidade C, e extraia os arquivos e executa o arquivo setup_xampp.bat, que vai configurar os caminhos usado pelo XAMPP. Vamos defini o caminho do php.exe, no path do windows. Para isso temos que ir em Meu Computador>Propriedade>Avançado>Variáveis do Ambiente>Variáveis do sistema>Variável Path.

De dois clique no item, e você verá algo parecido com isso “C:\Perl\site\bin;C:\Perl\bin;%SystemRoot%\system32;%SystemRoot%;” os caminhos definido aqui, variam. Escreva o caminho completo do php.exe, exemplo:

C:\Perl\site\bin;C:\Perl\bin;%SystemRoot%\system32;%SystemRoot%;C:\xampp\php

    Estrutura das pastas:

    Você deverá ter algo desse tipo:

    C:

    |_>xampp

    |_>selenium-testes

    |_> NomeDoTeste.php

    |_> selenium server

    Rodando o teste:

    Antes de rodar nosso teste, vamos abrir o arquivo de teste criado no inicio usando o Selenium IDE, e defini algumas configurações. O que está em negrito foi adicionando, para deixar o teste mais dinâmico e também coloquei alguns comentários.

    require_once ‘PHPUnit/Extensions/SeleniumTestCase.php’;
    //Nome da classe de testes.
    class NomeDoTeste extends PHPUnit_Extensions_SeleniumTestCase {
    var $afb = ‘abcdefghijlmnopqrstuvxz’;
    var $num = ‘0123456789′;
    //Gera numeros, caracteres ou numeros e caracteres aleatoriamente.
    function RandNC($type = ‘1′, $limit = ‘15′) {
    switch ($type) {
    case ‘1′:
    $rand_ar = str_split($this->num);
    break;
    case ‘2′:
    $rand_ar = str_split($this->afb);
    break;
    case ‘3′:
    $rand_ar = str_split($this->afb.$this->num);
    break;
    }
    for ($i = 0; $i < $limit; $i++ ) {
    $rand_ar_key = array_rand($rand_ar);
    $rand .= $rand_ar[$rand_ar_key];
    }
    return $rand;
    }

    function setUp() {
    //Defini o broswr onde será o teste.
    $this->setBrowser(”*iexplore”);
    //Defini o url principal do site ou aplicação a ser testada.
    $this->setBrowserUrl(”http://site.com”);
    }

    //Rotina com as ações.
    function testMyTestCase() {
    $this->open(”http://site.com”);
    $this->type(”matricula”, $this->RandNC());
    $this->type(”senha”, $this->RandNC(’3′, ‘8′));
    $this->click(”//input[@name='Acessar!']“);
    }

    }

    ?>

    Salve as alterações e feche o arquivo. Agora vamos rodar esse teste, usando os seguinte passos:

    1. Abra o prompt de comando e vá até a pasta do selenium server e digite esse comando para rodar o Selenium RC Server:

      • C:\selenium-testes\selenium-server-1.0-beta-1>java -jar selenium-server.jar

    1. Abra outro prompt de comando e vá até a pasta do arquivo de teste e digite esse comando para rodar o teste:

      • C:\selenium-testes>phpunit NomeDoTeste.php

    Se tudo ocorrer certo, ele mostrarar algo parecido na tela onde foi executado o teste. E na tela do selenium server, as requisições para executar a ação.

    PHPUnit @package_version@ by Sebastian Bergmann.

    Time: 5 seconds

    Tests: 1, Assertions: 0, Errors: 0.

    É isso, até mais.

    :, ,
    2 comments for this entry:
    1. Ronaldo Bitencourt

      Muito bom Leandro!

      Já vou usar no meu trabalho pra fazer uma rotina de testes nos nossos softwares de gestão de conteúdo.

      Parabens!
      :-)

    2. Electric Shower %0B

      *`. I am really thankful to this topic because it really gives up to date information *”"

    Leave a Reply

    Pesquisar