Mini tutorial JMeter – Teste Stress Java Web Application

Essa dica vai para os programeiros de plantão. O JMeter é uma ferramenta desenvolvida totalmente em Java pelo grupo Apache com o objetivo de realizar testes de carga e stress, a seguir faço um roteiro para realização de um teste de stress simples.

1- Primeiramente devemos baixar o JMeter, para isso clique aqui.

2- Descompactar o conteúdo do arquivo em uma pasta de sua preferência.

3- Inicie a ferramenta executando o jar <pasta jmeter>/bin/ApacheJMeter.jar.

JMeter

JMeter

JMeter Inicial

JMeter Inicial

A idéia do teste é simples,  queremos simular vários usuários(Grupo de usuários) executando um conjunto de tarefas pré definidas no sistema alvo,  por exemplo:

100 usuários executando, simultaneamente, 100 vezes cada a seguinte tafefa: Fazer login no sistema, acessar o cadastro de pessoa e cadastrar a pessoa João.

A ferramenta é bem intuitiva,  para começar vamos criar um grupo de usuários no plano de teste. Plano de teste é todo o conjunto das configurações fixadas para a realização do teste propriamente dito,  neste plano de testes temos as taferas que o grupo de usuários vai executar no sistema alvo, temos os relatórios de acompanhamento, temos os controladores lógicos etc; o grupo de usuários é a configuração realizada no JMeter para especificar a carga dos testes, ou seja: Quantidade de usuários, quantidade de vezes que cada usuário deve executar as tarefas e o tempo de execução entre um usuário e outro.

JMeter - Grupo de Usuarios

JMeter – Grupo de Usuarios

Após criado o grupo de testes, precisamos dizer a ele o que deve-se realizar. Nos testes de stress que realizo gosto de executar todo caminho percorrido pelos usuários até realizar uma determinada ação especifica no sistema(insert,update,delete,select). A forma que considero mais fácil de rastrear este caminho é utilizando uma opção que o JMeter oferece, um servidor proxy. Você configura um proxy e utiliza-o no browser quando esta acessando as funcionalidades do sistema, assim o JMeter grava todas as requisições que devem ser feitas e atribui essas “tarefas” ao seu grupo de usuários criado. Vou explicar passo a passo pra ficar mais fácil entender.

Botão direito do mouse na Área de Trabalho > Adicionar > Elementos que não são de Teste > Servidor HTTP Proxy, desta forma será criado um servidor proxy para capturar as requisições feitas ao sistema que será testado.

JMeter - Proxy

JMeter – Proxy

JMeter - Proxy Configuração

JMeter – Proxy Configuração

Após criar o servidor proxy, existem duas alterações para serem feitas antes de inicia-lo, alterar a porta para 8888, faço essa alteração para não dar conflito com as portas dos principais web servers que utilizo, alterar o “Controlador Alvo” para “Plano de Teste > Grupo de Usuários”, desta forma o proxy vai gravar todas as requisições como tarefas para o grupo de usuários. Após configurar o servidor proxy ele deve ser iniciado para que comece a gravar as requisições.

JMeter - Proxy Parametros

JMeter – Proxy Parametros

Após configurar o servidor proxy deve-se inserir as configurações no browser, eu prefiro utilizar o Firefox, então Ferramentas > Opções > Rede > Configurar Conexão > Configuração Manual de Proxy.

Firefox - Configuração Proxy

Firefox – Configuração Proxy

Feito isso, o proxy esta habilitado para começar a gravar as requisições,  agora é só acessar as funcionalidades desejadas através do navegador.

Acesar Funcionalidade 1

Acessar Funcionalidade 1

Acesar Funcionalidade 2

Acessar Funcionalidade 2

Após acessar as funcionalidades desejadas devemos interromper o proxy.

JMeter - Proxy interromper

JMeter – Proxy interromper

Agora ao verificar o nó Grupo de Usuário, podemos observar várias tarefas gravadas, essas tarefas representam as requisições que foram feitas até chegar na funcionalidade desejada.

JMeter - Tarefas

JMeter – Tarefas

Agora temos todas as requisições feitas ao sistema gravadas em nosso plano te testes,  antes de iniciar os testes devemos adicionar um relatório para capturar os resultados, eu particularmente gosto do gráfico agregado.

JMeter - Grafico Agregado

JMeter – Gráfico Agregado

JMeter - Grafico Agregado 2

JMeter – Gráfico Agregado 2

Após adicionar o gráfico basta executar o teste Executar > Iniciar, então o JMeter vai iniciar o grupo de usuários que irão executar as tarefas gravadas. Os resultados podem ser conferidos em tempo real, basta acessar o gráfico agregado depois que o teste é iniciado. Neste exemplo estou realizando um teste com 10 usuários(threads) simultâneos executando as tarefas 100 vezes cada, com um intervalo de 1seg entre as execuções.

JMeter Executar

JMeter Executar

JMeter - Resultados

JMeter – Resultados

Este é um exemplo básico, com o JMeter ainda é possível fazer teste de carga em webservices, métodos Java, banco de dados etc.  usar variáveis, dados de arquivos externos … mas isso fica pra próxima.

[]s

33 comentários em “Mini tutorial JMeter – Teste Stress Java Web Application

    • Obrigado pelo FeedBack Adriane, até o momento não preparei mais nenhum exemplo de teste, se necessitar de algum caso especifico fique a vontade para dar sugestões de testes para que eu possa adicionar ao blog.
      []s

      • Jean, até um mês atraz não conhecia a ferramenta, na fábrica em que trabalho não existe teste automatizado, pra falar a verdade, nem equipe de teste tem, sou apenas eu. Agora me deram a responsabilidade de instalar e aprender por conta própria a trabalhar com a ferramenta. Em todos os sites pesquisados encontro apenas exemplos básicos, o melhor que consegui foi o seu tutorial, por isso perguntei se foram blogados mais teste no JMeter.
        Se vc tiver algum material q explique melhor o funcionamento do JMeter, me envie por e-mail por favor.
        Desde já agradeço.

        • Eu tive os mesmos problemas que você ao utilizar o JMeter. O material que encontrei na web era bem pobre, a melhor forma de aprender sobre a ferramenta e conhecer todas suas funcionalidade é acessar o site do próprio projeto http://jakarta.apache.org/jmeter/usermanual/index.html , apesar do conteúdo estar em inglês é relativamente fácil compreender os principais tópicos. Já tive de realizar testes de stress em banco de dados e métodos Java, utilizei o jMeter e foi bem tranqüilo, a lógica é a mesma do tutorial.

      • olá, estou montando um script mas surgiu uma duvida.
        Quero simular o acesso a uma aplicação de call center.
        Por exemplo 30 threads. Montei a massa de teste com vários usuários entrando em contato com a central.. Mas nao sei como faço para incluir o dado de 10 atendentes de call center simultaneamente. Sabe como posso fazer isso? È possivel?
        Tks

  • Ótimo tutorial! Simples e objetivo. Parabéns!
    Agora preciso aprender a analisar todas as informações geradas pelos Listeners. Adicionei quase todos para ver como funcionam.
    Valeu!

    • Obrigado pelo feedback Wagner, em breve vou postar um teste de stress para banco de dados, bem legal para testar Store Procedures e Sql mais elaborados.

  • Boa tarde
    preciso da ajuda de vcs, estou colocando um servidor proxy na empresa que trabalho, porem após colocar o mesmo em produção os usuarios começaram a reclamar de lentidão na internet, e que nao funciona e etc.
    tenho quase certeza que essa reclamação é em decorrer do bloqueio de sites como, orkut, msn e webmail e etc.
    ai os usuarios ficam reclamando.
    eu necessito de um software para efetuar 2 testes,
    testes de navegação com o proxy tendo respostas, de tempo de resposta do site e etc, e teste sem o proxy, pois preciso comparar ambos acessos.
    tentei efetuar os testes com o jmeter, porem nao foi possivel entender os graficos, enfim, não sei se fiz corretamente, mas gostaria de saber se o jmeter poderia me auxiliar nesses testes.

    desde ja agradeço

    • Boa tarde Wanderson, o JMeter pode te auxiliar sim nestes testes mas recomendo que você utilize uma outra ferramenta. Existe um complemento para o firefox, chama-se firebug; com ele é possivel verificar o tempo total de carregamento de um site, é só instalar o complemento e depois acompanhar o tempo na aba “REDE”. Assim você pode fazer uma comparação por amostragem, pega o tempo de carregamento de um site 10x com proxy, 10x sem proxy tira a média e verifica se o tempo é muito diferente. Um pouco de atraso vai acontecer naturalmente, pois o proxy realiza processamento das requisições, este tempo só não pode ser exagerado. Qualquer coisa me add la no msn que eu te auxilio.

    • Opa Sérgio blz, para criar o grupo de usuários clique com o botão direito do mouse em cima do plano de testes > Adicionar > Threads (Users) > Grupo de Usuários. Espero ter ajudado []s

  • Olá, Preciso de uma ajuda de voces!!!
    Eu fiz meu script de teste no jmeter.
    Coloquei para rodar apenas 1 vez para ver o tempo que ele leva para percorrer por todo o script. Demorou 40 segundos. Acontece que eu preciso simular um cenario real.. E na realidade percorrer todas as ações do script levaria em média 5 minutos. Como posso fazer isso no Jmeter?
    Tks

    • Boa noite Iara, não entendi direito o que vc precisa, se o script demorou 40seg porque é tão elevado o tempo no “cenario real” ? Existe a possibilidade no JMeter de adicionar pausas entre as ações basta usar os elementos do grupo “Temporizador”, espero ter ajudado []s.

  • Boa tarde Jean,
    Gostei do seu exemplo, muito simples de fazer, consegui configurar e executar, sem muitos problemas, porem sou um pouco leigo em testes web e me surgiu uma duvida. Trabalhando desse modo, o jmeter grava a na navegação na sua maquina, quando rodo novamente o script alterando apenas a quantidade de usuarios, o resultado apresentado e do refere-se a aberturar das paginas na minha maquina ou de fato ele faz nova conexão ao servidor real?

    Nas minhas pesquisas achei esse site que tem algumas plugins para o JMeter: http://code.google.com/p/jmeter-plugins/

    • Não entendi muito bem sua pergunta Claudio, mas todo o script realizado pelo jmeter é feito com conexões direto ao servidor, cada usuário simulado é como se fosse um browser independente acessando o seu serviço.
      []s

  • Oi Jean, Boa Tarde!
    Na arvoré de resultados gerada pelo JMeter eu percebi que ele seta estado de alerta quando a requisição é JavaScript. Realizei algumas pesquisar e percebi que o JMeter não executa código JavaScript, existe alguma meneira dele ignorar essas requisições?

  • Opa Jean, blz? Eu to tentando fazer um teste de stress e de carga com uma aplicação web que fiz, rodando em localhost, mas o proxy não grava as tarefas para localhost. Você sabe como posso fazer isso? Valeu.

    • Boa tarde Thiago, provavelmente você deve ter errado em alguma das etapas da configuração do servidor proxy. Veja se no browser ta configurado pra usar o proxy criado, veja também se na hora de começar a fazer os passos na aplicação o servidor proxy está ativo, outra coisa importante é configurar o proxy para gravar as requisições no seu grupo de testes.

  • Bom dia, gostaria de saber o que significa as informações que ele gera na tabela… ‘#Amostras, Média, Mediana, Linha de 90%, Min, Max…’, poderiam me ajudar por gentileza ?

    Obrigado desde já!

  • Boa Dia Jean, estou fazendo um teste no Mysql com o Jmeter, minha base de dados é textual, ao realizar um busca textual, colocando o ouvinte como ver resultado em tabela, todas as amostra tem resultado em alerta, você tem ideia do que possa estar ocorrendo?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.