Wednesday, May 17, 2006

Testando o Motiro

Desde o início do projeto, o Motiro tem algumas suítes de teste automáticos. Estes testes são uma ótima forma de manter a aplicação em ordem, evitando que erros apareçam misteriosamente. Eles estão organizados entre testes unitários, funcionais e de aceitação. A diferença entre estes dois últimos é mais tecnológica do que conceitual. Ambos fazem testes da aplicação do ponto de vista do usuário. Ou seja, ao rodar estes testes você está basicamente pedindo ao computador para fazer o que um macaco testador faria: executar a aplicação, clicar em certos lugares e verificar se certas coisas aparecem na tela. A diferença é que tudo é feito automaticamente e, em geral, há menos erros do que na execução manual. É claro que eles não são infalíveis, afinal foram escritos pelas mesmas duas mãos que escreveram este texto que você está lendo. Estou olhando para elas agora e posso ver que são demasiado humanas e propensas ao erro.

Neste primeiro artigo, vamos tentar executar os testes de aceitação. Eles são escritos utilizando uma tecnologia de nome Selenium, que permite testar aplicações web independentemente da tecnologia utilizada para implementação. Isso quer dizer que, ao invés de ser escrito em Ruby, o Motiro poderia usar Java, PHP, Zope ou qualquer outra coisa que permita escrever aplicações web e os testes ainda funcionariam.

O código de testes é escrito em Ruby, mas é necessário rodar um serviço específico Selenium para executar os testes. A equipe Selenium preferiu escrever este serviço em Java e disponibilizá-lo como um pacote JAR executável. No fim das contas, isso quer dizer que você precisa de um interpretador Ruby e de um interpretador Java para rodar os testes de aceitação. Essas coisas são fáceis de achar, pode ir procurar que eu espero.

Depois que você tiver os dois interpretadores e código-fonte do Motiro devidamente obtido do nosso repositório Subversion, a última coisa que você vai precisar é o servidor Selenium. Isso você pode encontrar no endereço www.openqa.org/selenium-rc.

O código de teste vai usar o servidor Selenium como intermediário para enviar os comandos para o seu navegador. Atualmente o código de teste está desenhado para usar o navegador Firefox, que está disponível para download gratuito. Mas, se você não quiser baixá-lo, pode facilmente configurar os testes para utilizarem outro navegador no arquivo vendor/selenium.rb. Por volta da linha 821, no método create_interpreter dentro da classe SeleniumTestCase, você vai achar o seguinte trecho de código:

Selenium::SeleneseInterpreter.new("localhost", 4444,
"*firefox", "http://localhost:3000", 15000)

Só é preciso mudar a palavra "firefox" (que está destacada), pelo nome do navegador que você quer executar. Alguns nomes válidos estão listados no tutorial do Selenium.

Para rodar o servidor é só executar o pacote JAR. Você pode fazer isso do jeito que você preferir, um modo é entrar onde você colocou o Selenium e dizer

java -jar server/selenium-server.jar

Depois que o servidor Selenium estiver rodando normalmente, é preciso iniciar o Motiro em modo de teste. Para fazer isso, só é preciso passar a opção -e test para o script server. Dentro do diretório do Motiro, tente fazer isso:

ruby script/server -e test

Agora você já deve estar pronto para apertar o botão e ver os testes rodando. É só executar o script Ruby em test/acceptance/ts_all_suites.rb:

ruby test/acceptance/ts_all_suites.rb

Se tudo der certo, isto deve começar a execução dos testes de aceitação. Seu navegador será iniciado e fechado várias vezes em seqüência. Se você observar bem, vai notar que do lado direito da janela há uma lista crescente. Estes são os comandos que estão sendo enviados pelos scripts de teste. Eles servem para instruir a máquina a clicar em um link, verificar a presença de algum item ou digitar algum texto, por exemplo.

Enquanto os testes estão sendo executados, você só precisa esperar. Para mim uma execução completa demoram em média 2 minutos, mas seus resultados podem ser diferentes. Depois que tudo tiver rodado, você vai receber um relatório dizendo se houve algum erro encontrado durante os testes. Se houver, relate seu erro para que ele possa ser corrigido.

0 Comments:

Post a Comment

<< Home