5 passos simples para automatizar testes com Selenium e JMeter

Os testes contínuos e a integração contínua são as melhores maneiras de garantir que o seu produto seja executado de forma otimizada. O teste de carga com o JMeter ou outras ferramentas e testes de browser com Selenium podem ser integrados ao ciclo de CI. Este post abordará como automatizar esses testes e baseia-se na palestra de Alon Girmonsky, CEO do BlazeMeter, no Jenkins World 2016, que você pode ver neste link (em inglês).

Usando Taurus para automação de teste de carga e de navegador

Taurus, um framework de automação de teste de código aberto, pode ajudar a automatizar ferramentas de código aberto como JMeter, Selenium, The Grinder (http://grinder.sourceforge.net), Gatling, Locust e Siege. Isso permite executar testes automaticamente e em paralelo para uma melhor cobertura dos mesmos. Se executarmos os testes funcionais e de carga na nuvem, também será possível visualizar e analisar os resultados de teste para JMeter e Selenium através de relatórios detalhados e identificar problemas e tendências.

Algumas palavras sobre o Taurus: trata-se de uma ferramenta de linha de comando que permite definir o universo de teste usando YAML, que é uma linguagem legível e gravável, ou através do formato JSON. O Taurus constrói e executa os testes em tempo real através de um arquivo de configuração e, em seguida, analisa e comunica os resultados. O Taurus suporta vários locais de nuvens de diferentes fornecedores: Amazon AWS, Google, Azure etc.

Automatização de testes com JMeter e Selenium

E como tudo isso funciona? Vamos ao exemplo prático:

1. Baixe o Taurus.

2. Crie ou importe dois scripts (um para o Selenium, que automatiza o navegador, e um para os comandos JMeter) para obter escalas. Se incluir limites ao teste, eles serão exibidos na interface local do Taurus quando os resultados estiverem disponíveis.

  • O script Selenium automatiza o navegador padrão Firefox para este URL (http://www.blazedemo.com) de 5 locais diferentes, para um ramp-up de 10 segundos, uma duração de teste completa de 5 minutos e uma VU. Também adicionamos critérios de aprovação/reprovação; se o tempo de resposta médio for superior a 150 milissegundos durante mais de 30 segundos, o teste será interrompido como “failed”.
  • O script JMeter verifica duas requisições: uma solicitação GET para este URL e uma solicitação POST para o mesmo URL com dois parâmetros body. O teste é executado a partir de 5 locais diferentes para um ramp-up de 60 segundos e duração total de teste de 5 minutos e para 20 VUs.

 

Os scripts:

--- execution: 
- executor: selenium concurrency: 1 hold-for: 5m ramp-up: 10s 
locations: us-east-1: 1 us-west-1: 1 us-west-2: 1 eu-west-1: 1 eu-central-1: 1 scenario: Thread Group scenarios: Thread Group: requests: 
- label: blazedemo method: GET url: http://www.blazedemo.com/ services: 
- module: passfail criteria: 
- avg-rt of blazedemo>150ms for 30s, stop as failed --- execution: 
- executor: jmeter concurrency: 20 hold-for: 5m ramp-up: 60s 
locations: us-east-1: 1 us-west-1: 1 us-west-2: 1 eu-west-1: 1 eu-central-1: 1 scenario: Thread Group scenarios: Thread Group: requests: 
- label: blazedemo_jmeter method: GET url: http://blazedemo.com/ 
- body: fromPort: Paris toPort: Buenos Aires label: reserve method: POST url: http://blazedemo.com/reserve.php

3. Execute o teste localmente primeiro para garantir que ele seja bem executado antes de comitá-lo. Seu navegador provavelmente abrirá muitas vezes durante a execução do teste. Isso é normal.

Ambos os sistemas são operados por Taurus e executados em paralelo na máquina local. Eles podem ser visualizados em tempo real. O painel Taurus para estes dois testes é:

Taurus Dashboard

No canto superior direito é possível ver os dois testes rodando em paralelo (JMeter: Thread Group; Selenium: test_requests.py). O Taurus pode executar o Selenium de diferentes linguagens de programação, como Java, Python e Ruby. a linguagem padrão, contudo, é o Python.

No canto superior direito, é exibido o alerta para os critérios de aprovação/reprovação que estão prestes a serem atendidos.

No meio, podemos visualizar as estatísticas cumulativas (para Selenium e JMeter) das solicitações em diferentes KPIs, como latência, tempo de conexão, taxa de erro etc.

4. Agora, execute os testes na nuvem adicionando -cloud à linha de comando. Os testes serão abertos no CA BlazeMeter e executados em paralelo a partir de várias geolocações.

blazemeterblazemeter2
O CA BlazeMeter fornece relatórios detalhados para analisar diferentes correlações de KPI, tendências e descobrir gargalos. Leia mais a respeito aqui.

5. O Taurus pode ser adicionado ao Jenkins através da etapa de construção ‘Execute shell’. Leia mais sobre isso aqui.

jenkins

Agora você está pronto para automatizar seus testes JMeter e Selenium em paralelo no Taurus e como parte do ciclo de integração contínua. Clique aqui para saber mais sobre o teste de carga com o CA BlazeMeter.
 
Fonte: DZone.com
 

Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.