Ferramentas de Teste: JMeter

segunda-feira, 9 de junho de 2008. | Post Atualizado.

(Comente)


Vou falar agora um pouco sobre o jmeter, uma ferramenta do grupo apache, para a realização de testes de performance, carga e stress. Apesar de ser este o foco do jmeter (testes de performance, carga e stress) ele também pode ser utilizado para realizar testes em webservices, banco de dados e também automatizar alguns teste funcionais, seu uso, alias, é bastante amplo. Lógico que existem ferramentas que desempenham o mesmo papel que o Jmeter como o caso WAST (Web Application Stress Test), WebLoad mas vamos aborar jmeter neste momento.

Irei mostar a seguir, o Jmeter em sua operação mais básica e nos posts decorrentes irei aprofundando na sua aplicação.

Quem vê o Jmeter pela primeira vez não deve se sentir muito confortável devido a sua relativa falta de intuitividade, mas isso logo passa depois que você entende sua estrutura, que pelo que vocês irão ver, é bem simples.

Creio que a melhor forma de entender a estrutura de elementos da árvore do Jmeter é mostrando logo de início um script do Jmeter todo pronto, pois assim fica mais prático. Irei portanto, usar como exemplo um script que escrevi para alguns testes de performance e stress, são scripts simples que mostram como é fácil usar esta ferramenta.

Antes, irei mostrar onde se encontram os elementos que serão utilizados no exemplo que irei dar, veja na imagem abaixo como chegar neles.

image

Bem agora vamos para o script com os elementos que utilizei.

image

Vamos lá, na ordem:

1. Inserindo História – Thread Group (Add > New > Thread Group)

Este é o começo de qualquer script (ou plano de teste, se preferir) no jmeter, este elemento inicia seu script, todos os outros elementos que serão interpretados pelo jmeter devem ficar obrigatoriamente abaixo deste thread group, você pode, se preferir, organizar seu script em vários thread groups sem problemas. É aqui no Thread Group que você irá indicar número de conexões simultâneas, Ramp-up e Tempo de Execução.

2. HTTP Request Defaults (Thread Group > Add > Config Element > HTTP Request Defaults)

Aqui você define o padrão de seus requests HTTP, este elemento basicamente gerência os HTTP requests que essa thread está prestes a fazer.

O que basicamente deve estar preenchido neste elemento é o campo Server Name or IP.

3. HTTP Cookie Manager (Thread Group > Add > Config Element > HTTP Cookie Manager)

Suporte a Cookies, você pode remover este elemento, mas recomendo deixar. Este elemento garante que cada Thread vai receber seu próprio cookie.

4. CSV Data Set Config (Thread Group > Add > Config Element > CSV Data Set Config)

Esta aqui é uma facilidade do jmeter, em telas de login ou qualquer tela que você tenha que passar dados para o browser, você pode usar este elemento, ele funciona da seguinte forma.

Você preenche arquivo .csv com os parâmetros que você vai querer passar, conforme imagem abaixo

image

Salve e depois volte ao elemento CSV Data Set Config e informe respectivamente nome para os valores acima admin e 1234, conforme imagem abaixo

image

Neste momento, ao rodar o script o jmeter vai vincular USER=admin e PASS=1234, e você pode chamar estes valores em qualquer lugar do script assim: ${USER} e ${PASS}.

No caso deste script irei utilizar estes valores no campo abaixo.

5. /redes2/login.do

Aqui é onde começa a interação com o browser, ou seja, onde as requisições são efetivamente realizadas, existe uma forma bem fácil de conseguir estas informações, usando uma funcionalidade chamada HTTP Proxy Server.

image

Com o HTTP Proxy Server você pode gravar ações no browser e o jmeter irá gravando tudo pra você, basta que você informe nas configurações de seu browser a porta 8080 (você pode alterar para qualquer porta disponível no seu pc) e pressionar PLAY

image

Pronto, feito isso, o jmeter deverá lhe poupar de realizar manualmente estes passos.

Como mencionado no tópico 5) irei usar os valores ${USER} e ${PASS} aqui.

image

6. Browser-derived headers

Estes controles o HTTP Proxy Server adiciona automaticamente, não se preocupe com eles.

7. /redes2/viewHome.do

Mais um request gravado pelo HTTP Proxy Server

8. Browser-derived headers

Estes controles o HTTP Proxy Server adiciona automaticamente, não se preocupe com eles.

9. /iredes2/confirmCreateNarrative.do

Mais um request gravado pelo HTTP Proxy Server

10. Browser-derived headers

Estes controles o HTTP Proxy Server adiciona automaticamente, não se preocupe com eles.

11. Counter – (Thread Group > Add > Pre Processors > Counter)

Esta aqui é outra facilidade do jmeter, quando existe a necessidade de se incluir vários registros sequencialmente no banco, a melhor forma de se fazer isso é via estes Counters, ele vai basicamente incrementar em +1 (isto no entanto é configurável)

image

No caso acima ele vai começar com 1 incrementar de 1 em 1 até 100 e o nome de referência é H, ou seja, onde você quiser utilizar este counter, basta chamar ${H} onde queres incrementar, veja imagem abaixo.

image

12. View Results in Table – (Thread Group > Add > Listener > View Results in Table)

Bem aqui é a parte dos relatórios, este relatório exibirá os seguintes valores

image

13. View Results Tree – (Thread Group > Add > Listener > View Results Tree)

Os resultados estão vazios, mas ele lista aqui todos os requests e alem disso aqui você tambem pode renderizar o HTML e ver exatamente o que este request fez, ótimo para debugar caso ocorra algum problema.

image

14. Graph Results – (Thread Group > Add > Listener > Graph Results)

image

15. Save Responses to a file – (Thread Group > Add > Post Processors > Save Resonses to a file)

Salva requisições em um arquivo

16. Generate Summary Results – (Thread Group > Add > Post Processors > Generate Summary Results)

Salva um sumário em um arquivo

Você pode organizar tudo em várias threads desta forma

image

E antes de finalizar esta parte que é a mais importante

image

Estas são as propriedade de uma Thread, você deve informar nela o que você vai fazer

Number of Threads – Quantidade de Threads que será realizada

Ram-UP – Tempo que o jmeter para executar as threads informada acima

Loop - Quantas vezes ele irá realizar esta atividade

No caso acima 10 requisições em 60 segundos repetindo 5 vezes

No final consolido estes resultados em uma planilha

image

Update 08/09/2011

Download do arquivo .xls com o gráfico acima.


    


Gostou? assine o feed | Discordou? opine! ou entre em contato

19 Opinioes

     
    Gravatar





    Flávio
    11-11-2008


    O que são aquelas infomações em Graph Full e como eu pego o relatório aquele que é exibido no final?

     
  1.  
    Gravatar





    Claudio
    14-11-2008


    Valeu pelo tutorial…..vou começar a brincar com ele.

     
  2.  
    Gravatar





    Scheila
    21-01-2009


    Bom dia,

    Muito legal o post! É sempre bom conhecer novas ferramentas…
    Só gostaria de mais explicações sobre como eu faço para que a ferramenta grave as ações que farei no site para depois poder testar…
    Gostaria tbm de dicas de outros bons livros e artigos para o Jmeter.

     
  3.  
    Gravatar





    Fernando
    23-04-2009


    muito confuso o tutorial, poderia detalhar mais para facilitar o uso da ferramenta, me perdi na parte “irei usar os valores ${USER} e ${PASS} aqui.” aqui onde ? , mas valeu pela intenção de ajudar. ≈up≈

     
  4.  
    Gravatar





    eudescosta
    24-04-2009


    Fernando, obrigado pelo feedback.

     
  5.  
    Gravatar





    Edson
    23-03-2010


    Gostaria de saber como ler esses resultados apresentados nos gráficos, ou seja, o que o esá dizendo o gráfico entende?
    Se poder me ajudar,,, to precisando muito…. se vc ouber de alguns livro eu aceito….

    Valeu.

     
  6.  
    Gravatar





    joao batista
    30-06-2010


    Cara muito bom o tutorial, gostaria de saber como vc gerou.

    Consolido de resultados em uma planilha

     
  7.  
    Gravatar





    joao batista
    01-07-2010


    Como faço para consolidar o resulta e uma planilha iqual seu exemplo

    No final consolido estes resultados em uma planilha

     
  8.  
    Gravatar





    eudescosta
    17-07-2010


    João,

    É um copy & paste da tela do jmeter.

     
  9.  
    Gravatar





    Rodrigo Arriel
    16-08-2010


    Como pego o resultado do teste e monto um XLS?

     
  10.  
    Gravatar





    eudescosta
    18-08-2010


    copy + paste :)

     
  11.  
    Gravatar





    joao batista
    23-09-2010


    Boa tarde, Gostaria de saber qual ouvinte, vc utilizou para gerar este grafico.

    que esta no final de seu post.

    desde já fico grato.

     
  12.  
    Gravatar





    eudescosta
    23-09-2010


    @joão, este gráfico gerei no excel, utilizando como input inormações coletadas do ‘View Results in Table’

     
  13.  
    Gravatar





    Leandro
    03-09-2011


    Gostaria de saber se é possível disponibilizar este seu grafico?

    Grato.

     
  14.  
    Gravatar





    joao batista
    08-09-2011


    Excelente post, a minha maior duvida, e interpretar o resultado final, e passar a informação correta ao cliente. Você teria algum post explicando como analisar os resultado do Listem.

     
  15.  
    Gravatar





    eudescosta
    08-09-2011


    Leandro, Todos,

    Atualizei post com o link para download do gráfico que uso neste passo a passo.

     
  16.  
    Gravatar





    eudescosta
    08-09-2011


     
sites que referenciam este post (trackbacks e pingbacks)

  • Eudes via Rec6
    Testando Performance de Aplicações WEB com JMeter... Uma introdução a ferramenta de testes de performance, carga e stress chamada JMeter. ...

  • Ferramentas de Teste: JMeter (2) | zezologs
    [...] leitores do blog e do post me questionam sobre qual o critério usamos para determinar que uma aplicação WEB ...



  • Opine!




    Caso possua um site, preencha este campo que ele sera exibido na pagina inicial na aba "+ leitores".