sábado, 10 de novembro de 2007

PHP Now! - Evento de PHP no Rio

A cidade imperial vai se tornar reduto de estudantes e profissionais de TI.

Acontece em Petrópolis o PHP Now!, workshop organizado pelo LNCC - Laboratório Nacional de Computação Científica, instituto do Ministério da Ciência e Tecnologia, juntamente com a Calepino (empresa de desenvolvimento Web), com apoio do Sebrae, da Fundação Parque de Alta Tecnologia - Funpat e do Movimento Petrópolis-Tecnópolis.

A programação será composta de assuntos como:
  • Aplicações desktop com PHP-GTK
  • PHP e Flex
  • Criação de gráficos dinâmicos
  • Integração PHP + Java
  • Segurança em PHP
  • Web 2.0
  • E muito mais
O evento conta com diversos palestrantes como Pablo Dall'Oglio (autor de livros como "PHP - Programando com Orientação a Objetos" e intusiasta do PHP-GTK) e Manuel Lemos (mantenedor do PHPClasses.org o maior e mais conhecido repositório de classes PHP do mundo).

Data e horário:
- 24 de novembro de 2007, sábado, das 8h às 18h.

Local:
- LNCC - Av. Getúlio Vargas, 333 - Quitandinha - Petrópolis - RJ

Investimento (inclui subsídio a almoço no restaurante do LNCC):
- R$ 20,00


mais informações visite o site http://www.calepino.com/phpnow/

terça-feira, 6 de novembro de 2007

Usando Selenium e PHP para testes de aceitação automatizados

Este é um guia rápido para você utilizar o Selenium e o SimpleTest em testes de aceitação automatizados.

Selenium é uma ferramenta para testar aplicações web pelo navegador de forma automatizada, exatamente como o usuário faria.

SimpleTest é uma ferramenta para estrutura de testes unitários automáticos, seguindo o padrão XUnit.

Suponho que você já tenha instalado um servidor WEB com PHP e PEAR rodando. Além de ter uma JRE configurada.

Vamos começar instalando o Selenium
Baixe o Selenium Remote Control no endereço http://www.openqa.org/selenium-rc/ e o descompacte.

Terá uma pasta selenium-server-0.9.2 (esta é a versão que peguei), eu a copiei próxima da raiz, mas você pode deixar aonde quiser.

O selenium-server.jar é o nosso principal arquivo, ele é que interpreta os comandos e aciona o navegador.

Para acionar o servidor basta usar o comando java -jar selenium-server.jar no prompt de comando.

Uma dica importante:
Ao iniciar o servidor pela primeira vez irá aparecer à janela do Firewall do Windows, perguntando se deseja manter o aplicativo bloqueado, permita o acesso. Caso tenha escolhido outra opção, encerre o java/javaw.exe no Gerenciador de Arquivos do Windows e inicie o selenium-server novamente e desse vez permita o acesso.

Beleza, agora que o selenium já está funcionado você pode testa-lo pelo prompt mesmo, encerre com Ctrl+C e inicie novamente agora em modo interativo com java -jar selenium-server.jar -interactive. O modo interativo permite que você envie comandos a serem interpretados pelo navegador.

Inicia uma sessão de navegador do Firefox, se preferir Internet Explorer use “iexplore”.
cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com

O prompt retorna a sessão em que o selenium vai conversar com o navegador. No meu caso 260113, substitua as chamadas daqui para frente pelo nº que aparecer aqui.
Got result: OK,260113 on session 260113

Abre o navegador com o endereço indicado.
cmd=open&1=http://www.google.com/webhp&sessionId=260113

Escreve a frase ola mundo na caixa de texto.
cmd=type&1=q&2=ola mundo&sessionId=260113

Clica no botão de pesquisa
cmd=click&1=btnG&sessionId=260113

Pega o título da página
cmd=getTitle&sessionId=260113

O resultado é o titulo da página
Got result: OK,ola mundo - Google Search on session 260113

Encerra a sessão e fecha o navegador
cmd=testComplete&sessionId=260113

Durante a execução dos comandos você pode reparar que uma janela do navegador é aberta e obedece aos comandos do servidor.

Nessa hora você me pergunta:
Ótimo, posso fazer o que fazia no navegador por meio de uma programinha e checar os resultados!!! Mas não tem um jeito mais fácil de fazer isso?
Claro que sim, vamos usar o selenium-cliente PHP e o SimpleTest para isso.

Copie a pasta selenium-php-client-driver-0.9.2 para o seu diretório www. Lá está o cliente selenium para php. Já temos um servidor para atender aos testes e agora mão a obra.
Corrija os caminhos do require_once antes de testar. Se precisar use a função set_include_path.

require_once"simpletest/simpletest.php";
require_once"simpletest/autorun.php";
require_once "Testing/Selenium.php";

class GoogleTest extends UnitTestCase{

private $selenium;

/**
* Metodo é executado antes de cada teste.
* Testing_Selenium e inicia a sessão.
*/
public function setUp(){
$this->selenium = new Testing_Selenium("*firefox", "http://www.google.com");
$this->selenium->start();
}


/**
* Metodo é executado após a execução de cada teste.
* Encerra a sessão.
*/
public function tearDown(){
$this->selenium->stop();
}


/**
* Testa uma busca no google.
* É aberto o navegador.
* Escreve a frase ola mundo na caixa de texto.
* Clica no botão de pesquisa.
* Aguarda o carregamento ou 10s.
* testa se o padrão /ola mundo/ está no titulo da página.
*/
public function testGoogle(){
$this->selenium->open("/");
$this->selenium->type("q", "ola mundo");
$this->selenium->click("btnG");
$this->selenium->waitForPageToLoad(10000);
$this->assertPattern("/ola mundo/",$this->selenium->getTitle());
}
}
?>