Blog > Teste de performance na nuvem com JMeter e Blazemeter

08/set

Aqui você vai encontrar conceitos básicos de performance, ferramentas, problemas existentes e como solucioná-los. Este post é uma explicação da palestra, de mesmo título, apresentada no TestTalk Florianópolis em 14/08/2014. Cada vez mais tem-se aplicado teste de performance nos projetos para garantir uma quantidade de usuários utilizando a aplicação. Há diversas formas de planejar e executar este teste, algumas que dão trabalho e mais custos e outros que nos prove serviços temporários para esta execução, que é o alvo deste post.

Slides da apresentação

Vídeo da apresentação

Primeiro vamos conceituar performance

Performance hoje é utilizada como um termo genérico na área de teste, mas é um termo específico, dentro outros, para informar qual a estratégia de performance que estamos utilizando:

  • Performance testing (desempenho): O tempo de resposta é rápido suficiente dada uma quantidade específica de usuários simultâneos?
  • Load testing (confiabilidade):
    A aplicação está preparada para lidar com cargas dentro dos limites operacionais em longos períodos de tempo?
  • Stress testing (escalabilidade): A aplicação está preparada para lidar com cargas além dos limites operacionais?

Ferramentas...

Sabemos que é impossível executar um teste de performance manualmente.

Hoje existem diversas ferramentas que podem executar diversas ações em uma página, e medir, entre outras coisas, o tempo de resposta (retorno) de uma requisição. Algumas estão listadas abaixo:

Free/OpenSource

Pagas

Existem alguns problemas referente a performance...

Ao adotar qualquer ferramenta, e neste caso adotamos o JMeter por ser Open Source e amplamente utilizado em nossa área é a simulação de usuários.

Quando executamos um teste de performance sempre utilizamos uma carga considerável de usuários (500, 1.000, 5.000, etc....). Executar esta quantidade de usuários em uma mesma máquina (ex: a sua que gravou o script e vai executar o teste e coletar os dados/métricas de performance) não é uma boa escolha.

Eu, por exemplo, utilizo uma máquina OSX (Mac) Core i5 2.3Ghz com 8GB de memória e HD SSD. Em testes que eu já executei 1.000 usuários acabam travando a máquina por alguns minutos e até trazendo informações erradas ou tardias.

Uma possível solução

O Teste Distribuído é uma solução para a execução de centenas ou milhares de usuários usando JMeter e até mesmo outras ferramentas.

Ele consiste em distribuir, em outras máquinas, a execução do teste onde temos um esquema de nó <-> escravo. A máquina controladora, que irá receber os dados/métricas de performance e que dispara os testes é chamada de nó. A máquina que executa o teste é chamada de escravo.

Cada máquina escava executa uma quantidade x de usuários e envia as informações para o nó.

Consulte sobre esta funcionalidade no JMeter através deste link http://jmeter.apache.org/usermanual/remote-test.html

Mas há problemas no Teste Distribuído...

O Teste Distribuído requer máquinas reais ou físicas para a execução. Isso implica em:

  • Custo de infraestrutura para compra de máquinas (físicas ou virtuais)
  • Tempo de configuração das máquinas remotas

Como um teste de performance, em grande parte, é pontual, teremos uma infraestrutura subutilizada sem contar no custo que esta infraestrutura gera ao longo o tempo.

Solução de menor custo para o Teste Distribuído com infraestrutura própria

Nuvem!

Ela tem se tornado uma “buzzword” porque nos dá uma nova opção em termos de utilização de infraestrutura.

Utilizar a nuvem neste contexto é ter um provedor de serviço que nos dê a possibilidade, temporária, de execução com recursos que poderiam ser indisponíveis para a nossa empresa ou com um alto custo financeiro (Ex: máquinas).

Há diversos provedores de serviços de performance na nuvem que oferecem diversas configurações de máquinas, onde a cobrança é feita por horas, mês ou anual.

Blazemeter

É um solução na nuvem para teste de performance utilizando JMeter. Há diversas modalidades de uso, entre elas uma gratuita com possibilidade de ter 50 usuários simultâneos, 10 testes e um servidor compartilhado para execução.

Há outros planos para suporta a mais usuários, testes e hardware.

Ele traz uma facilidade para a configuração do teste de performance onde iremos apenas configurar:

  • Submeter o script já pronto do JMeter ou gravar um script pelo plugin do Blazemeter
  • Utilizar as configurações de execução do JMeter ou sobrepor configurando no próprio Blazemeter
  • Configurar monitoramento, logs, velocidades de conexão, etc...
  • Executar e acompanhar o teste

Há relatórios de forma online que nos provem uma série de informações como tempo de resposta, usuários ativos, erros, transferência de dados entre outros.

Case de Performance na Nuvem

A Qualister foi contratada para executar um teste de performance em uma aplicação que está sendo migrada. O projeto com curto espaço de tempo para ser executado e com uma restrição de suporte a, pelo menos, 1.000 usuários simultâneos.

Observação: o ponto de 1.000 usuários simultâneos é onde queremos chegar, logo, nas primeiras execuções geralmente não é possível garantir que chegaremos a qualquer número.

Como o projeto foi rápido, criar uma infraestrutura para suportar a quantidade de usuários especificado por ser um pouco demorada (compra de máquinas, configurações e ajustes iniciais até a execução real do teste).

A solução adotada foi utilizar o BlazeMeter como provedor de infraestrutura onde, temporariamente, solucionamos o problema de infraestrutura para execução.

Conclusão

Aprendemos um pouco sobre Teste de Performance na Nuvem e a explicação de um case utilizando um dos serviços disponíveis.

POSTS RELACIONADOS

AGENDA

CURSOS RELACIONADOS