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.
- Selenium IDE: https://addons.mozilla.org/pt-BR/firefox/addon/2079
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:
- Selenium RC Versão 1.0: http://selenium-rc.openqa.org/download.html
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:
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:
-
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
-
-
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.
setembro 18th, 2008 on 9:28
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!
janeiro 27th, 2011 on 20:42
*`. I am really thankful to this topic because it really gives up to date information *”"