Desenvolvimento

17 abr, 2013

Ferramentas de automação de navegador web

Publicidade

Automação de navegador web é um processo em que determinados passos no navegador são realizados repetidamente para garantir o funcionamento correto da funcionalidade dos aplicativos web. Ela pode ser aplicada para testes de controle de qualidade no processo de desenvolvimento e para o controle sobre a acessibilidade de informações do sistema e o desempenho durante a implementação. O segundo se torna cada vez mais importante quando as tendências atuais do mercado indicam que ter apenas um bom serviço não é suficiente; o serviço também deve ser altamente acessível e eficaz. Com ferramentas de automação do navegador web, é possível verificar a acessibilidade e o desempenho ao executar periodicamente alguns cenários de transação para determinados serviços.

Existem muitas ferramentas de automação do navegador web, tanto pagas free/open source. O principal objetivo dessas ferramentas é gravar um cenário de transação específica para um navegador, reproduzi-lo injetando JavaScript em sites e, em seguida, fornecer os resultados correspondentes. As ferramentas variam em muitas características: suporte para a plataforma OS, linguagens de programação suportadas, suporte para SSL, se ele usa um navegador de verdade ou simula o comportamento do navegador real etc. Abaixo é apresentadas uma comparação relativa de algumas características das ferramentas populares free/open source.

Ferramenta Simulação Navegadores Suportados Linguagens Suportadas Registro de Testes
Selenium Não Firefox, IE(parcialmente), Opera (parcialmente), Chrome (parcialmente)[1] C#, Java, Perl, PHP, Python, Ruby Sim
Watij Não No Windows somente no IE, no Linux somente no Firefox,
no Mac somente no Safari
java Sim
Windmill Não Python e JavaScript Python, JavaScript, Ruby Sim
Watir Não No Windows somente IE, Watir Web Driver -IE/FF/Chrome/Safari Ruby Sim
Watin Não IE, Chrome, Firefox linguagens de plataforma .net Sim
Sahi Não IE, Safari, Firefox, Chrome, Opera Java, Javascript Sim
Canoo WebTest Sim Sem necessidade Javascript, Python Sim
CasperJS Sim Sem necessidade Javascript Sim

* Produtos diferentes do Selenium são compatíveis, pelo menos parcialmente, com uma variedade de navegadores diferentes, mas todos eles são totalmente compatíveis com o Firefox.

Além de sua variação em termos de funcionalidade, essas ferramentas têm outra diferença essencial. Algumas delas fazem uma simulação do comportamento do navegador. Por exemplo, a ferramenta CasperJS utiliza recursos do mecanismo WebKit para simular certos casos de teste. Por um lado, as ferramentas de simulação são mais produtivas, mas, por outro, a simulação pode gerar resultados diferentes daqueles do navegador real.

As diferentes ferramentas têm suas vantagens específicas. Algumas delas funcionam com navegadores diferentes, sem desvio significativo ou dificuldade, outras proporcionam maior desempenho etc. Existem muitos artigos comparando os prós e os contras de ferramentas de automação de web, mas seria também interessante comparar o seu desempenho. Nós testamos três ferramentas diferentes: Selenium, Watij e Casperjs no mesmo host com os seguintes parâmetros: Windows 7 32 bits, 4 GB de RAM e CPU Intel i5. A partir dessas três ferramentas, o Selenium pode atualmente ser o mais popular e rico em recursos, além de oferecer vários produtos, tais como IDE, API, servidor de controle remoto (para aceitar solicitações HTTP para o navegador), servidor Grid (para testar diferentes instâncias do browser em execução máquinas remotas) etc. O Casperjs é uma ferramenta baseada em Phantomjs, e o Watij é a versão Java do Watir baseada em JxBrowser (um componente rico de navegador web para integrar Java).

Para testar as ferramentas, utilizamos 45 casos de transações com o mesmo cenário de sete passos (navegação, cliques, login, logout etc.). Um único período de operação de execução foi de 5 minutos, e a duração do teste global foi de 20 minutos. Cada ferramenta foi testada duas vezes: primeiro executando com uma thread e, depois, com cinco threads. Os resultados dos testes são mostrados abaixo:

Imagem 1

Como você pode ver, os resultados dos testes para Selenium com o navegador IE estão ausentes. O problema é que o Selenium não podia executar vários testes de transações ao mesmo tempo. Em vez de abrir várias instâncias do browser, ele mistura todos eles em uma instância do navegador. No entanto, ele não tem esse tipo de problema com o Firefox ou o Chrome. Por exemplo, executando o Selenium com as mesmas condições, mas no Firefox, os resultados foram os seguintes: tempo médio de execução de 1 teste é 15,1 segundos, o número de testes executados durante 20 minutos é 50. O tempo médio de execução de um teste de transação para essas ferramentas não é maior do que o das outras. As outras duas ferramentas gastaram uma quantidade substancial de tempo de sobrecarga se comunicando com o servidor, a partir instâncias do navegador etc.

Ao examinar o desempenho de ferramentas de automação web selecionadas, vemos que elas diferem não só em termos de funcionalidade, mas que também se comportam de forma diferente em diferentes condições (dependendo do sistema operacional, tipo de navegador, multithread ou singlethread). A principal limitação que percebemos com o Selenium é que ele é projetado principalmente para o Firefox. Todos os seus produtos suportam o Firefox e, como já vimos, ele tem problemas para trabalhar com o IE. Por outro lado, o Casperjs simula a navegação e é baseado no Webkit, por isso não vai funcionar em apenas sites IE, por exemplo. Enquanto isso, o Watij funciona com apenas um tipo de browser exclusivo para OS (IE no Windows, Firefox no Linux e Safari no Mac). Trabalhar com cenários de transação diferentes ao mesmo tempo é muito mais produtivo com as ferramentas de simulação, uma vez que consomem menos tempo.

***

Texto original da equipe Monitis, liderada por Hovhannes Avoyan, traduzido pela Redação iMasters com autorização do autor, disponível em http://blog.monitis.com/index.php/2012/12/05/web-browser-automation-tools/