Prefeitura de Belo Horizonte PBH Empresa de Informática e Informação de Belo Horizonte S/A PRODABE Superintend!ncia de Ar"uitetura Ar"uitetura de Sistemas # SAS
Manual de Utilização do Jmeter
Autor$ %at&an Ro'ert (ariano Re)ina (árcia Rodri)ues
Belo Horizonte* +aneiro ,-.0
S1(2RIO 1. INTRODUÇÃO........................................................................................... 3 2. Instalação................................................................................................ 3 3. Utilização do JMeter................................................................................. 5 3.1
Criando ! "lano de Testes...............................................................#
3.1.1
$di%ionando s&rios.................................................................. '
S1(2RIO DE 3I41RAS (i)ra 1 * "&)ina +ara Do,nload do JMeter...................................................(i)ra 2 * strtra de diret/rios do JMeter...................................................(i)ra 3 * Tela ini%ial do JMeter......................................................................5 (i)ra - * "rin%i+ais %o!+onentes do "lano de Teste.....................................0
.0 I%5ROD167O
Nos dias de hoje o desenvolvimento de aplicações para internet tem tido um papel fundamental para a disseminação de conhecimento e informações diversas. O que tem gerado uma grande mudança na vida das pessoas e das empresas. A possibilidade de múltiplos usuários utiliando a aplicação! interfaces com outras aplicações e acessos remoto dos mais variados tipos tem dificultado a manutenção da infraestrutura. "ara verificar se a arquitetura desenvolvida # capa de atender a responder a quantidade de usuários previstos! o tempo de resposta de uma determinada funcionalidade! entre outras se fa necessário $ utiliação de ferramentas que permitam a simulação do uso e a devida documentação dos resultados obtidos. Atualmente não contamos com muitos padrões. O que temos são tecnologias isoladas. %iante deste cenário uma das ferramentas que se destacam # o Apache &'eter como ferramenta open source para teste de desempenho! principalmente por sua facilidade de uso e versatilidade. O Apache &'eter # uma ferramenta des(top para testes de desempenho! desenvolvida utiliando a linguagem &ava. O proposito deste manual # ser um recurso para os usuários compreenderem a instalação e utiliação da ferramenta.
,0 I%S5AA67O Antes de iniciar a instalação do &'eter # necessário saber os pr#)requisitos para seu funcionamento. •
&*' + ,&ava *irtual 'achine- ou superior
Na data de publicação desse manual! a versão mais recente # a ./! que pode ser
bai0ada
gratuitamente
no
seguinte
http122jmeter.apache.org2do3nload4jmeter.cgi ! como mostra a 5igura /.
lin(
Figura 1 – Página para Download do JMeter
O &'eter vem empacotado no formato ip ou tg ,tar-. Optamos por faer o do3nload no formato ip por ser o mais conhecido. %escompactar o arquivo no diret6rio de prefer7ncia. A versão ./! segue a seguinte estrutura de diret6rios como mostra a 5igura .
Figura 2 – Estrutura de diretórios do JMeter
"ara e0ecutar o &'eter! e0ecute o arquivo &'eter.bat. 8sse arquivo # encontrado no diret6rio bin. Ap6s uma breve pausa! será e0ibida a janela como mostra a 5igura 9.
Figura 3 – Tela inicial do JMeter
Os dois itens apresentados! por padrão! na árvore são os principais e tem os seguintes nomes1 •
"lano de :este ,:est "lan-1 agrupa itens que representam a simulação de múltiplos usuários no plano de teste ,samplers-! al#m de configuradores e controladores de l6gica de e0ecução dos testes;
•
80 15II9A67O DO +(E5ER 3.1
Criando u Plano de Testes
O "lano de :estes # o componente básico para criação de qualquer script utiliando o &'eter e descreve uma s#rie de passos que a ferramenta irá e0ecutar quando e0ecutar os testes. > no "lano de :estes que # adicionado os demais
componentes pertinentes aos testes que serão e0ecutados. Os principais componentes são ,5igura ?-1 •
:hread @roups ,@rupo de suários-1 Bepresenta um grupo de usuário e0ecutando determinada,s- solicitação ,ões-;
•
Camplers ,:estador- D Bepresenta uma solicitação! que pode ser E::"! 5:"! COA"! &%FG! H%A" e &ava;
•
Hogic Gontrollers ,Gontrolador H6gico-1 Bepresentam elementos que ajudam a controlar a e0ecução das requisições atrav#s de repetidores! m6dulos! randomiação entre outros;
•
Histerner ,Ouvinte-1 elementos que visualiam resultados que podem ser representados por gráficos! tabelas! entre outros;
•
Gonfiguration 8lements ,8lementos de configuração-1 "ara configuração padrão de dados. Gom ele conseguimos! por e0emplo! configurar o mesmo servidor E::" para uma determinada solicitação;
•
Assertions ,Asserções-1 elementos que possibilitam adicionar pontos de afirmação para verificação se determinada resposta está de acordo com alguma afirmação colocada no elemento Campler;
•
"re)processors ,"r#)processadores-1 elementos que podem produir dados para enviar como parte de uma solicitação. "or e0emplo! em teste de uma rotina de inclusão de dados no sistema! devemos alternar alguns dados que são e0clusivos por definição. :emos pr#)processadores que são capaes de gerar nome4/! nome4! nome49! etc.
•
"ost "rocessors ,"6s)processadores-1 processadores de resultados de requisições programadas. "ode e0trair uma determinada parte da resposta do servidor utiliando e0pressões regulares.
•
:imer ,:emporiador-1 elementos que permitem um controle avançado no intervalo de e0ecução das requisições.
Figura ! – Principais coponentes do Plano de Teste
Os componentes apresentados acima devem obedecer a uma determinada hierarquia no seu plano de teste. Na tabela abai0o são especificados quais componentes podem ser adicionados em quais componentes1
:omponente
:omponente "ue podem ser adicionados
"lano de :este
Gontrolador H6gico! :estador! 8lementos de Gonfiguração! 8lementos que não são de teste.
@rupo de suários
Gontrolador H6gico! Ouvinte! :estador! :imer! 8lementos de Gonfiguração! "r#)processadores! "6s)processadores.
:estador
8lementos de Gonfiguração! Asserções! :imer! "r#)processadores! "6s)processadores.
Gontrolador H6gico
Gontrolador H6gico! Ouvinte! :estador! :imer! 8lementos de Gonfiguração! "r#)processadores! "6s)processadores.
Ouvinte
Nenhum
8lementos de Gonfiguração
Nenhum
Asserções
Nenhum
"r#)processadores
Nenhum
"6s)processadores
Nenhum
:imer
Nenhum
80.0.
Adicionando 4rupo de 1suários ;5&read 4roups<
"ara simular as ações dos usuários o &'eter permite a adição de um componente chamado I:hread @roups ,@rupo de suários-J. 8ste componente agrega todos os demais componentes necessários para os nossos testes! controlando as ações de usuários fictKcios no sistema. "or esse motivo # um dos componentes mais importantes no seu plano de teste e deve ser configurado com bastante cuidado para que seja criado um plano de teste que simule de fato a realidade. "ara adicionar um @rupo de suários ao "lano de :este clique em 8ditar2Adicionar2:hreads ,sers-2@rupo de suários! como mostra a 5igura L.
Figura " – #dicionado $rupo de %suários
Cerá e0ibida a janela @rupo de suários! como mostra a 5igura +.
Figura & – $rupo de %suários
"reencher os seguintes campos com os dados referentes ao teste1 •
Número de usuários *irtuais ,threads-1 Muantidade de usuários simultneos
•
:empo de nicialiação ,Bamp)u "eriod- ,segundos-1 ntervalo entre os lançamentos de requisições. O valor informado será dividido pelo número de requisições! e o resultado será o intervalo entre cada requisição. "or e0emplo! se informar /P usuários e o tempo de inicialiação igual a /P ,/P 2 /P Q /-! teremos um disparo de atividade a cada segundo.
•
Gontador de teração ,Hoop Gount-1 quantidade de vees que as threads serão e0ecutadas. 8ste número multiplicado pela quantidade de usuários o que resulta no total de requisições que serão enviadas;
•
nfinito ,5orever-1 Ce selecionado! ignora o valor configurado no Gontador de teração e e0ecuta as tarefas at# que seja cancelado a e0ecução no "lano de :este;
•
Agendador ,Cchedule-1 "ermite que seja feito o agendamento do disparo do @rupo de suários em um determinado dia e horário.
*oc7 pode adicionar um ou mais @rupo de suários em um "lano de :estes. O &'eter por padrão dispara os @rupos de suários em paralelo! ou seja! simultaneamente. "ara alterar este comportamento! vá ao "lano de :este e selecione a opção I80ecutar @rupos de suários consecutivamenteJ.
80.0, Adicionando 5estadores ;Samplers< :estadores ,Camplers- são componentes que farão a requisição fKsica para um determinado servidor. No &'eter e0istem vários tipos de testadores para os mais variados tipos de serviços! sendo que! os mais comuns são1 •
E::" Bequest1 tiliado para simular requisições E::"! faendo com que o &'eter atue como um bro3ser;
•
COA"2R'H)B"G Bequest1 tiliado para requisições simples via COA". Gonfigurando uma BH e um R'H para enviar para o servidor;
•
5:" Bequest1 tiliado para efetuar do3nloads via 5:";
•
&%FG Bequest1 tiliado para testes de carga em banco de dados via &%FG. "ode ser utiliado tamb#m para tarefas simples como criar tabelas! e0cluir dados antes de iniciar os testes.
•
H%A" Bequest1 tiliado para testes em servidores H%A"
•
&ava Bequest1 tiliado para e0ecução de testes em classes customiadas. > um ponto de e0tensão do frame3or( &'eter
"ara adicionar um :estador ,Camplers- clique em 8ditar2Adicionar2:estador ,Camplers-! como mostra a 5igura S.
Figura ' – #dicionando Testador ()aplers*
tiliaremos como e0emplo o uso do :estador o E::" Bequest pelo fato de ser o mais utiliado ,5igura T-.
Figura + – ,TTP -euest
80.08 Adicionando Ou=inte ;istern< Cão elementos que capturam os resultados gerados pelo "lano de :este e permite visualiá)lo na forma de tabelas! gráficos! árvores ou te0to simples em alguns arquivos
de log. 8les fornecem acesso virtual aos dados obtidos pelo &'eter quando um caso de teste # e0ecutado. "ara adicionar um Ouvinte ,Histern- ao @rupo de suários clique em 8ditar2Adicionar2Ouvinte! como mostra a 5igura U.
Figura / – #dicionando u 0uinte
O &meter tra os seguintes Ouvintes ,Histerns- por padrão1 •
Assertion Besults1 Muando utiliamos assertions ,verificações nas respostas dos samplers-! este listener apresenta se determinada amostra está de acordo com a Assertion ou não.
•
@raph 5ull Besults1 Não funciona corretamente na versão /.U do &'eter! teoricamente deveria apresentar um gráfico de linha completo! com todas as respostas dos Camplers.
•
@raph Besults1 Apresenta um gráfico simples e útil. Gom m#dia! mediano! desvio padrão! mKnimo e má0imo do tempo de resposta das requisições.
•
'ailer *isualier1 Não disponKvel
•
Cimple %ata %river1 Histener que tem a capacidade de armaenar os dados de resposta em um arquivo R'H.
•
Cpline *isualier1 @ráfico que apresenta uma linha continua com todos os resultados de tempo de resposta em milisegundos dos testes efetuados. Gomposto por /P pontos! cada ponto cont#m a m#dia /PV das amostras. Fastante útil para analisar impacto de performance e estabilidade.
•
Aggregate Beport1 'ostra totaliações diversas do resultado.
•
*ie3 Besults in :able1 Besultado individual de cada amostra! indicando seu tempo de resposta e seu obteve sucesso ou não.
•
*ie3 Besults :ree1 Apresenta cada requisição e resposta retornada pelo servidor. 80celente ferramenta para testes de cai0a preta.
Gada Ouvinte ,Histern- e0ibe o mesmo resultado de forma diferente. "or e0emplo! a ordem para visualiar o formulário gráfico de dados estatKsticos do tempo de resposta! voc7 pode querer usar o Beport Aggregate. %a mesma forma! para visualiar o relat6rio estatKstico dos mesmos dados
em forma de tabela utiliando o CummarW
Beport ou Aggregate Beport. *oc7 pode tamb#m escolher a forma em que gostaria de visualiar as requisições selecionando qualquer um destes ouvintes! mas eles escrevem os mesmos dados brutos em um arquivo com e0tensão.jtl.
80.0> Adicionando 5emporizador ;5imer< :imer # um componente opcional na construção do "lano de :este. 8le fa com que o &meter faça uma pausa por um determinado perKodo de tempo entre dois pedidos sucessivos. Gomo o &meter! por padrão! envia um pedido imediatamente ap6s o outro! o que pode sobrecarregar o servidor! adicionando um timer irá reduir o risco de quebrar o desempenho do servidor. "odemos! por e0emplo! estabelecer um intervalo de tempo padrão entre todas as threads do plano de testes! delaWs aleat6rios entre threads e tamb#m controle de frequ7ncia de vaão. m timer # e0tremamente útil se voc7 estiver testando o soft3are no aspecto funcional. "ara adicionar um :emporiador ,:imer- ao @rupo de suários clique em 8ditar2Adicionar2:emporiador ,:imer-! como mostra a 5igura /P.
Figura 1 – #dicionando Teporiador (Tier*
A seguir lista contendo todos os :imer disponKveis no &meter1 •
Gonstant :imer1 "ermite que voc7 estabeleça um intervalo em milissegundos padrão entre as threads;
•
@aussian Bandom :imer1 "ermite intervalos aleat6rios entre threads;
•
niform Bandom :imer1 "ermite intervalos aleat6rios entre threads;
•
Gonstant :hroughput :imer1 'ant#m a frequ7ncia de acesso de um determinado Campler.
80.0 Adicionando Assertions ;Afirmação< Assertions permitem que voc7 inclua afirmações no "lano de :este para verificar se determinada resposta está de acordo com alguma afirmação colocada no Campler. "ara adicionar um :emporiador ,:imer- ao @rupo de suários clique em 8ditar2Adicionar2Asserção ,Assertions-! como mostra a 5igura //.
Figura 11 – #dicionando #ssertions (#sser45o – a6ira45o*
O &meter permite que voc7 especifique suas afirmações utiliando 80pressões regulares
80.0? Adicionando Pr@#processador ;Pre Processors< 80.0 Adicionando Ps#processador ;Post Processors<