Apache JMeter: testar a carga do teu site passo a passo

Apache JMeter: testar a carga do teu site passo a passo

O Apache JMeter é uma ferramenta de testes de servidor que permite simular o comportamento dos utilizadores nos teus sites. Dá muito jeito quando queres testar um site antes de um acontecimento que vai fazer disparar o tráfego (por exemplo, uma loja online no arranque dos saldos). É uma ferramenta open source desenvolvida pela Apache Foundation.

Primeira utilização do JMeter

Estou longe de ser um especialista em JMeter e em testes de carga, por isso vou mostrar-te passo a passo uma primeira utilização básica do Apache JMeter e aquilo que percebi dela, deixa uma mensagem se tiveres perguntas ou observações. Começamos por clicar com o botão direito em Plano de teste -> Threads (utilizadores) -> Grupo de threads para acrescentar um grupo de threads, e obténs o seguinte no ecrã.

JMeter-1024x478.jpg

Ação a executar depois de um erro de amostra

É a ação que se segue se houver um erro durante o teste: continuar, começar uma nova iteração, parar a thread ou parar o teste, etc. Por omissão ficamos com «Começar a iteração seguinte», ou seja, os teus passos recomeçam do início.

Propriedades do grupo de threads

Seguem-se as propriedades do teu grupo de threads: o número de threads (que representa o número de utilizadores) que se vão ligar ao teu site, e a duração da subida de carga, que é o número de segundos por onde esses utilizadores se distribuem. Se tiver 100 utilizadores e indicar 10 segundos de subida, ligam-se 10 utilizadores por segundo ao meu site. Por fim, temos o número de iterações, ou seja, quantas vezes cada thread (utilizador) repete o cenário: se puser 2, uma thread percorre o cenário duas vezes.

Configuração do agendador

Já deves ter percebido: serve para definir um atraso ou uma data para o arranque do teu teste. Até aqui, nada de complicado.

Configurar os valores por omissão dos nossos pedidos HTTP

Para isso, vai a Plano de teste -> Grupo de threads -> Elemento de configuração -> Valores por omissão dos pedidos HTTP. Não é obrigatório, mas permite-te definir uma vez o nome de domínio em vez de o escreveres em cada pedido que acrescentas ao grupo de threads. Neste exemplo pus o meu blog.

JMeter2-1024x478.jpg

Repara que, durante o teste, o JMeter não vai buscar os teus recursos (CSS, JS, imagens, etc.). Para os incluíres, vai a Avançado e assinala Obter todos os recursos incorporados, atenção, o teste passa a demorar bastante mais tempo.

JMeter3-1024x478.jpg

Acrescentar um pedido HTTP

Podes agora acrescentar um pedido HTTP em Plano de teste -> Grupo de threads -> Sampler -> Pedido HTTP. Também aqui há muita informação no ecrã, mas se dedicares algum tempo a analisá-la percebes tudo muito depressa. No campo do caminho do pedido, indica um caminho relativo, desde que tenhas definido bem o teu site nos valores por omissão dos pedidos HTTP.

JMeter4-1024x528.jpg

O temporizador constante serve apenas para indicar uma pausa durante a qual o teu utilizador fictício espera (na prática, um visitante real fica mais de um segundo numa página).

Gravar automaticamente um cenário com um proxy

Podes gravar um cenário e voltar a executá-lo, configurando o JMeter para registar o que fazes num site e reproduzi-lo em forma de teste. Assim escusas de escrever o cenário à mão.

JMeter8.jpg

Para isso, configura o JMeter como proxy em Bancada de trabalho -> Elementos fora do teste -> Gravador de scripts de teste HTTP(S). Não te esqueças de iniciar o gravador e de apontar o teu navegador para esse proxy nas definições.

JMeter9-300x23.jpg

A seguir, ainda na bancada de trabalho, acrescenta um Recetor -> Árvore de resultados para mostrares os dados e poderes analisar os teus testes.

Conclusão

Descobri o Apache JMeter num curso e achei-o muito interessante para testar aplicações web do lado do servidor e ver se há pedidos que lhe exigem carga a mais. Atenção: para teres testes mais próximos da realidade, precisas de vários servidores com um agente JMeter instalado em cada um, para comandares e simulares à distância visitantes no teu site, e os resultados ficam bem mais interessantes de analisar e mais próximos do que acontece de verdade. O JMeter é muito completo e, se a ocasião surgir, tenciono escrever um artigo mais aprofundado sobre ele.

···

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.