• Nenhum resultado encontrado

A utilização do Selenium promete ser a uma solução com resultados positivos a longo prazo. As últimas publicações de versões estáveis, com correcção de erros reportados pela comunidade de utilizadores foram feitas dentro do intervalo de tempo no qual decorreu este projecto de Dissertação. Nestas versões foram incluídas novas funcionalidades. O mesmo se aplica relativamente à publicação de nova e mais detalhada documentação.

Está ainda em desenvolvimento, tendo sido já publicada uma versão Beta, uma versão do Selenium que fará uso de uma nova tecnologia. Os autores do Selenium apresentam esta nova versão como sendo uma fusão com um outro projecto, o WebDriver [16].

O WebDriver é um conjunto de APIs que permitem simular ou controlar o comportamento do Browser.

A diferença fulcral entre a utilização do Selenium Core e do WebDriver para controlar o

Browser reside essencialmente na forma de funcionamento dos mesmos. O WebDriver não é

uma aplicação Javascript a executar no Browser, em vez disso, consoante a situação em específico, é utilizado um mecanismo tão apropriado possível. Exemplificando, no caso do

Informação adicional sobre o Selenium

100

utilizadas as funcionalidades disponibilizados pelos seus controlos de automação. Isto é, em cada caso, são utilizadas APIs específicas do próprio Browser.

Outra possibilidade que o WebDriver oferece, é a utilização de funções do próprio Sistema Operativo. Por exemplo, é possível, usar funcionalidades do próprio Microsoft

Windows para realizar uma acção do topo "inserir texto por pressão de teclas", tornando a

simulação da utilização do teclado muito mais aproximada do real.

Para este efeito, são disponibilizadas actualmente quatro APIs distintas. Existe a

HtmlUnitDriver que não permite ver nenhuma acção do teste simulando apenas o

comportamento de um Browser. As restantes três, controlam efectivamente um Browser, sendo os seus nomes auto explicativos: FirefoxDriver, InternetExplorerDriver e SafariDriver.

Esta tecnologia será integrada no Selenium mantendo assim de um modo geral a mesma arquitectura e os mesmos princípios em termos de concepção, funcionamento e execução do teste.

Esta integração visa trazer os seguintes melhoramentos:

Suporte Multi Browser incluindo funcionalidades para controlo de Browsers não suportados;

Tratamento de múltiplas frames, múltiplos Browsers, eventos "popup" e alertas;  Simulação de seleccionar, arrastar e largar de forma mais eficiente;

 Teste em condições onde a tecnologia Ajax é utilizada.

A versão do Selenium compatível com esta tecnologia, disponível à data de início da implementação da Plataforma, é uma versão de desenvolvimento e em fase de experimentação. Trata-se portanto de uma versão instável com o propósito de ser testada e experimentada para obtenção de comentários por parte da comunidade de utilizadores.

Neste sentido, esta versão não será tida em consideração para a integração na Plataforma, porém, fica aqui devidamente documentado tanto a existência desta tecnologia alternativa ao

Selenium como a previsão da sua integração no Selenium.

Finalmente, de referir que, esta situação não traz qualquer problema ao uso do Selenium, uma vez que se trata de uma integração de novas funcionalidades e não da alteração do modo de funcionamento do Selenium RC em termos de concepção e execução do teste [16].

101

Anexo B

Informação adicional sobre o Webscarab

Este anexo existe com o propósito de explicar qual o funcionamento associado ao uso de ficheiros de teste no Webscarab. Como já referido no Anexo A, relativamente ao Selenium, também neste caso o objectivo não é expor a API, mas sim descrever quais as principais funcionalidades associadas.

As operações definidas nos ficheiros de teste são realizadas com recurso a BeanShell. Este é um interpretador da linguagem Java, atribuindo um funcionamento similar ao de uma linguagem de scripting, isto é, directamente interpretado e não compilado.

B.1 – Operações definíveis em BeanShell no Webscarab

De uma forma muito sintética, o Webscarab permite que um pedido HTTP interceptado, seja convertido numa cadeia de caracteres. Esta pode ser manipulada programaticamente da forma que as necessidades estipulem. Para isso, podem ser utilizados quaisquer métodos da API do Java.

Seria muito trabalhoso e pouco eficiente se não houvesse funcionalidades de apoio, pelo que o Webscarab fornece já um conjunto de métodos de apoio à manipulação dos pedidos.

A seguinte lista apresenta as funcionalidades mais relevantes de apoio à manipulação de tráfego HTTP:

 Retorno do tráfego somente em caso de ser pedido;  Retorno do tráfego somente em caso de ser resposta;  Registo de dados em ficheiro;

Informação adicional sobre o Webscarab

102

 Identificação do tipo de pedido (GET, POST, PUT);

 Retorno para uma cadeia de caracteres de um determinado elemento do protocolo HTTP (Ip de destino, user-agent, etc.);

 Reencaminhamento de tráfego HTTP.

Finalmente, para conhecimento das funções propriamente ditas, deverá ser consultada a documentação da API, fornecida com o código fonte ou disponível na página Web da ferramenta [25,44].

103

Anexo C

Resultados das Sessões de Teste

Neste anexo estão as tabelas relativas às sessões de teste descritas no capítulo 4, Caso de Estudo. Os dados aí apresentados devem ser interpretados de uma forma global. Porém ficam documentados neste anexo, todos os resultados individuais obtidos nos diversos ensaios.

Resultados das Sessões de Teste

104

Tabela 20 – Comparação do tempo de execução do JIC entre Safari e Mozzila Firefox (servidor livre de

carga).

Ensaio JIC

Tempo (ms)

Safari (v4.0.4) Mozzila Firefox (v3.6.3)

1 776 1140 2 651 1180 3 703 1150 4 643 1220 5 637 1120 6 743 1120 7 625 1090 8 641 1360 9 594 1110 10 626 1140 t médio 664 1163

Resultados das Sessões de Teste

105

Tabela 21 – Tempos de execução do JIC no Safari com servidor em carga.

Ensaio do JIC

Tempo Safari (ms)

Servidor sem carga (valores da tabela 12)

Servidor com carga (ensaio 1)

Servidor com carga (ensaio 2)

Servidor com carga (ensaio 3) 1 776 671 731 742 2 651 677 1040 645 3 703 683 884 618 4 643 715 873 677 5 637 726 1170 644 6 743 731 966 1470 7 625 737 681 628 8 641 905 736 635 9 594 957 791 657 10 626 998 862 819 t médio 664 780 873 754

Resultados das Sessões de Teste

106

Tabela 22 – Resultados descriminados de quatro sessões de teste de carga com de igual configuração.

Sessão de teste

Número total de pedidos

realizados

Tempo (s) Total de Erros

Mínimo Máximo Médio Número Percentagem

1 11 472 0,009 3,083 0,052 0 0 7 336 0,012 3,105 0,081 0 0 2 12 382 0,009 0,184 0,048 0 0 7 375 0,009 3,153 0,008 0 0 3 7 323 0,010 3,046 0,080 0 0 11 576 0,008 4,303 0,051 0 0 4 11 697 0,008 3,108 0,051 0 0 7 349 0,010 3,095 0,080 0 0

Resultados das Sessões de Teste

107

Tabela 23 - Resultados discriminados de várias sessões de teste de carga.

Sessão de teste

Número total de pedidos realizados

Tempo (s) Total de Erros

Mínimo Máximo Médio Número Percentagem

1 27 703 0,006 4,327 0,219 0 0 2 571 910 0,006 0,069 0,267 0 0 577 255 0,019 3,164 0,944 0 0 307 326 0,176 2,561 1,258 0 0 3 445 473 0,005 0,584 0,169 0 0 331 785 0,008 3,611 0,308 0 0 4 422 878 0,005 9,433 0,204 54 182 12,8 217 966 0,009 9,484 0,349 15 312 7,0 438 928 0,009 9,505 0,524 51 241 11,6 289 084 0,006 9,430 0,229 20 403 7,1 232 968 0,007 9,926 0,782 12 650 5,4 5 71 324 0,004 0,520 0,154 0 0 72 194 0,013 3,324 0,731 0 0 38 789 0,047 1,775 0,891 0 0 38 023 0,007 3,477 0,237 0 0 1 442 0,007 0,481 0,235 0 0