
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ã.

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.

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.

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.

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.

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.
![]()
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.
···


