30
FAPEG U NIVERSIDADE F EDERAL DE G OIÁS I NSTITUTO DE I NFORMÁTICA PAPPE I NTEGRAÇÃO Manual de Utilização da Ferramenta JMeter <Versão v1.0> Goiânia 2013

Manual de Utilização da Ferramenta JMeter - freetest.net.br · FAPEG UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA PAPPE INTEGRAÇÃO Manual de Utilização da Ferramenta

Embed Size (px)

Citation preview

FAPEGUNIVERSIDADE FEDERAL DE GOIÁS

INSTITUTO DE INFORMÁTICA

PAPPE INTEGRAÇÃO

Manual de Utilização da FerramentaJMeter

<Versão v1.0>

Goiânia2013

Esta obra está licenciada sob uma Licença Creative Commons Attribution 3.0.

PAPPE Integração

Agradecimentos

Esta conquista é resultado de apoio e ajuda de muitas pessoas que contribuírampara a realização deste trabalho.

À FAPEG e ao INF-UFG pelo auxílio financeiro e técnico.Às empresas participantes e patrocinadoras deste projeto: Canion Software,

Decisão Sistemas, Meta Tecnologia e Tron Informática.Aos nossos parceiros: Mowe Tecnologia, TupiLabs e CERCOMP-UFG.Aos colaboradores responsáveis pela execução deste projeto: Dr Auri Marcelo

Rizzo Vincenzi, Dr Cássio Leonardo Rodrigues, Dr Celso Gonçalves Camilo Junior, MscJacson Rodrigues Barbosa, Adailton Ferreira de Araújo, Andressa Martins, GuilhermeSampaio Soares, Jailton Alkimin Louzada, Malba Jacob Prudente, Paulo Marcos SoaresRodrigues e Vinicius Vieira Pessoni.

Resumo

Integração, PAPPE. Manual de Utilização da Ferramenta JMeter. Goiânia,2013. 29p. Manual Técnico. Instituto de Informática, Universidade Federal deGoiás.

Palavras–chave

Teste de software, Micro e Pequena Empresa de TI.

Conteúdo

Lista de Figuras 6

Lista de Tabelas 7

1 Introdução 81.1 Objetivos do manual 81.2 Organização do Manual 8

2 Testes de Performance, Carga e Stress 92.1 Teste de Performance 92.2 Teste de Carga 92.3 Teste de Stress 10

3 JMeter 113.1 Requisitos de Instalação 11

3.1.1 Versão Java 113.1.2 Sistema Operacional 113.1.3 Instalação 113.1.4 Executando o JMeter 12

4 Utilização da Ferramenta 134.1 Criando um Plano de Teste (Test Plan) 13

4.1.1 Adicionando usuários virtuais 134.1.2 Adicionando Requisições de Serviços ao “Thread Group” 154.1.3 Utilizando o “HTTP Request” 154.1.4 Relatórios de execução e Asserções 16

5 Executando os Testes 205.1 Preparando o Script de Teste 20

5.1.1 Setando a Quantidade de Usuários Virtuais 215.1.2 Aplicação Sob Teste 235.1.3 Apertando o Play 235.1.4 Relatórios 24

“Summary Report” 24Graph Results 25“Assertion Results” e “Response Assertion” 26

6 Conclusão 28

Bibliografia 29

Lista de Figuras

3.1 Tela inicial do JMeter 12

4.1 Caminho para o Thread Groups 144.2 Thread Groups 144.3 Caminho para os controladores de requisições 154.4 HTTP Request 164.5 Caminho para os componentes “Listener” 174.6 “Listener” adicionados ao “Test Plan” 174.7 Caminho para os componentes de asserção 184.8 “Response Assertion” 19

5.1 “Caminho para abrir o script” 205.2 “Encontrando o script de teste” 215.3 “Script completo” 225.4 “Adicionando usuários virtuais” 225.5 “Informando a URL da aplicação sob teste” 235.6 “Executando o teste” 245.7 “Summary Report” 255.8 “Graph Results” 265.9 “Response Assertion” 265.10 “Exemplo de todas as amostras com retorno correto.” 275.11 “Exemplo de amostras com valores de retorno divergente.” 27

Lista de Tabelas

CAPÍTULO 1Introdução

1.1 Objetivos do manual

A proposta deste manual é demonstrar a utilização de uma importante ferramentaopen source para teste de carga, stress e performance: Apache JMeter. Esta ferramentaauxilia no dimensionamento e avaliação dos limites dos sistemas web.

1.2 Organização do Manual

CAPÍTULO 2Testes de Performance, Carga e Stress

Nos dias de hoje a Internet tem um papel fundamental na disseminação de co-nhecimento e informações diversas. Com isso, as aplicações web têm obtido uma grandeimportância no cotidiano das pessoas e por conseqüência, das empresas. A possibilidadede múltiplos usuários utilizando a aplicação, interface com sistemas heterogêneos e aces-sos remotos dos mais variados tipos têm demandado cada vez mais esforços para mantera integridade da infra-estrutura intacta.Para aferir a capacidade, a disponibilidade em casos extremos ou apenas verificar o tempode resposta de uma determina funcionalidade da aplicação, se faz necessário a utilizaçãode ferramentas que permitam a simulação do uso e a devida documentação dos resultadosobtidos.Diante desse cenário a ferramenta de teste de performance Apache JMeter tem se desta-cado por sua facilidade de uso e versatilidade.

2.1 Teste de Performance

Os testes de performance tem como finalidade verificar o desempenho do sistemaem condições normais de uso, onde o foco é obter informações relevantes da utilizaçãodas principais funções.

2.2 Teste de Carga

Os testes de carga, diferentemente dos testes de performance, tem como objetivoa verificação do comportamento do produto com uma determinada quantidade de usuá-rios. Dessa forma, o sistema é observado sobre a utilização de um número estimado deusuários próximo das condições reais.

2.3 Teste de Stress 10

2.3 Teste de Stress

O objetivo de um teste de stress é explorar os limites do sistema, aumentandoa carga indefinidamente até provocar um “crash”. A principal diferença entre o testede carga e o teste performance é que, enquanto o primeiro preocupa-se em determinarcomo o sistema se comporta em caso de um grande numero de acessos, o segundo tempor objetivo testar a quantidade máxima de usuários, determinando, assim, Seu limite deutilização.

CAPÍTULO 3JMeter

O Apache JMeter é uma ferramenta desktop para testes de performance, desen-volvida utilizando a linguagem Java e licenciada sob os termos da “Apache License, Ver-sion 2.0”. Esta ferramenta foi primeiramente utilizada para realizar testes em aplicaçõesweb, mas tem expandido suas funcionalidades, podendo realizar testes funcionais, testesem bancos de dados entre outros.

3.1 Requisitos de Instalação

3.1.1 Versão Java

Devido ao fato do JMeter utilizar apenas as API´s padrão do Java, ele requer umaJVM 6 (Java Virtual Machine) ou superior.

3.1.2 Sistema Operacional

Como o JMeter é desenvolvido 100% em Java, é possível rodá-lo em qualquersistema operacional que tenha uma implementação Java compatível.

3.1.3 Instalação

Para instalar o JMeter basta efetuar o download da versão mais recente(http://jmeter.apache.org/) e descompactar o arquivo no diretório em que será insta-lado. A versão 2.9, segue a seguinte estrutura de diretórios 1:

apache-jmeter-2.9apache-jmeter-2.9/binapache-jmeter-2.9/docs

1Você pode renomear o diretório raiz (ou seja, apache-jmeter-2.9), se quiser, mas não altere os nomesde sub-diretório.

3.1 Requisitos de Instalação 12

apache-jmeter-2.9/extrasapache-jmeter-2.9/lib/apache-jmeter-2.9/lib/extapache-jmeter-2.9/lib/junitapache-jmeter-2.9/printable_docs

3.1.4 Executando o JMeter

Para executar o JMeter, execute o arquivo “ApacheJMeter.jar”. Esse arquivo éencontrado no diretório bin. Após uma breve pausa, a GUI (Graphical User Interface)JMeter deve aparecer (figura 3.1).

Figura 3.1: Tela inicial do JMeter

CAPÍTULO 4Utilização da Ferramenta

4.1 Criando um Plano de Teste (Test Plan)

O “TestPlan” é o componente básico para a criação de qualquer script (.jmx)utilizando o JMeter e descreve uma série de passos que a ferramenta irá executar quandorodar os testes. A ele é adicionado os demais componentes pertinentes aos testes que serãoexecutados. Os principais componentes adicionados ao “TestPlan” são:

• Listeners - elementos que capturam os resultados gerados pelo plano de testes eapresenta-os em um determinado formato, com vinculo ou não a um “TestPlan”;

• Assertions - possibilidade de adicionar pontos de afirmação para verificação sedeterminada resposta está de acordo com alguma afirmação colocada no elementoSampler;

• Thread Groups - representação de um grupo de usuário executando determinada(s)solicitação (ões);

• Samplers - representação de uma solicitação, que pode ser HTTP, FTP, SOAP,JDBC, LDAP e Java.

4.1.1 Adicionando usuários virtuais

Para simular as ações dos usuários o JMeter permite a adição de um componentechamado “Thread Groups”. Este componente agrega todos os demais elementos neces-sários para a execução de nossos testes, controlando as ações de pseudos usuários nosistema. Para adicioná-lo ao “Test Plan” basta acionar: “Edit/Add/Threads(Users)/ThreadGroups”. Conforme figura 4.1.

4.1 Criando um Plano de Teste (Test Plan) 14

Figura 4.1: Caminho para o Thread Groups

Conforme podemos ver, figura 4.2, o “Thread Group” contém o “Thread Proper-ties” que permite controlar o número de usuários alterando o item “Number of Threads(users)” que por definição vem setado com o valor de 1 (um) usuário.

Figura 4.2: Thread Groups

4.1 Criando um Plano de Teste (Test Plan) 15

4.1.2 Adicionando Requisições de Serviços ao “Thread Group”

Para efetuar uma requisição a um determinado serviço que queremos testaro JMeter faz uso de controladores chamados, genericamente, de “Sampler”. Existemvários tipos de “Sampler”, para os mais variados tipos de serviços, sendo que, osmais comuns são: HTTP Request1, FTP Request, SOAP/XML-RPC Request , JDBCRequest, LDAP Request e Java Request. O caminho para os controladores de requisiçãoé: “Edit/Add/Sampler”, conforme figura 4.3.

Figura 4.3: Caminho para os controladores de requisições

4.1.3 Utilizando o “HTTP Request”

Este componente é responsável por gerenciar as requisições HTTP enviadas auma página web qualquer. O “HTTP Request” possui, na seção Web Server, um campochamado “Server Name or IP”. Esse campo é onde devemos informar a URL ou o IPpara a página web que será alvo dos testes. Existe, ainda, o campo “Port Number” ondedeve-se informar a porta de comunicação para a página indicada, caso seja omitido estainformação o JMeter admite a porta como sendo a 80. Veja figura 4.4.

1Este manual se limitará a mostrar o funcionamento do HTTP Request, por se tratar do controlador derequisição mais largamente utilizado.

4.1 Criando um Plano de Teste (Test Plan) 16

Figura 4.4: HTTP Request

4.1.4 Relatórios de execução e Asserções

Após termos criando um “Test Plan”, adicionado um “Thread Group” paragerenciar a quantidade de usuários virtuais e adicionado um controlador de requisições“HTTP Request”, chegou a hora inserir componentes para a coleta e avaliação dos dadosobtidos com a execução do script.Para tanto, temos os elementos “Listener” que são elementos que monitoram a execuçãodo script, coletam e apresentam os dados em determinados formatos para uma analise emtempo de execução e/ou analise posterior. O caminho para adicionarmos alguns desseselementos estão em: “Edit/Add/Listerner”. Conforme figura 4.5.

4.1 Criando um Plano de Teste (Test Plan) 17

Figura 4.5: Caminho para os componentes “Listener”

Neste manual utilizaremos os seguintes “Listener”: “Summary Report”, “Graph

Results” e o “Assertion Results” (figura 4.6).

Figura 4.6: “Listener” adicionados ao “Test Plan”

As vezes precisamos verificar se os testes que estamos executando atingiramuma meta pré-estabelecida, como por exemplo: responderam dentro de um dado limite detempo ou responderam com um determinado código de retorno. Para validar as respostas

4.1 Criando um Plano de Teste (Test Plan) 18

do servidor, existem os componentes de asserções, “Assertions”. Podemos introduzir um“Assertion” pelo caminho: “Edit/Add/Assertion” (figura 4.7).

Figura 4.7: Caminho para os componentes de asserção

Para este manual utilizamos o elemento de asserção “Response Assertion”, quepermite configurar quais tipos de respostas HTML esperamos para os nossos testes.Perceba que o valor 200|302, no campo “Patterns to Test”, foi setado para dizer aoJMeter que esperamos como resposta os códigos HTML 200 (o servidor retornou a páginacom sucesso) ou código HTML 302 (página movida temporariamente ou sua página foiredirecionada), figura 4.8.

4.1 Criando um Plano de Teste (Test Plan) 19

Figura 4.8: “Response Assertion”

Agora podemos salvar o script, preferencialmente em um servidor de controle deversão2 assim, poderá ter um total controle das alterações ocorridas.

2Existem vários tipos de servidores de versão open source, onde os mais populares são: Servidores SVN,GitHub e CVS.

CAPÍTULO 5Executando os Testes

Agora que já criamos o script para o JMeter, só nos falta executar os testes.Deve-se ter em mente que o ambiente para execução dos testes de performance, cargae principalmente os testes de stress devem ser exclusivos para esta finalidade. Como aintenção é criar um grande volume de usuários acessando a aplicação, a rede e o servidorsob teste estarão sobrecarregados impossibilitando o acesso por usuários reais.

5.1 Preparando o Script de Teste

Em nosso exemplo faremos um teste de carga simples em um website qualquer.Para isso, usaremos o script criado no capítulo anterior.Abra o JMeter e vá em: “File/Open”, como podemos ver na figura 5.1.

Figura 5.1: “Caminho para abrir o script”

5.1 Preparando o Script de Teste 21

O aplicativo abrirá um pop-up para a escolha do script que usaremos nos testes,escolha o que criamos anteriormente e clique em open, figura 5.2.

Figura 5.2: “Encontrando o script de teste”

5.1.1 Setando a Quantidade de Usuários Virtuais

No capitulo 4 foi criado um script básico com os seguintes componen-tes: “Test Plan”, “Thread Group”, “HTTP Request”,“Summary Report”,“Graph Re-

sults”,“Assertion Results”,“Response Assertion” e “WorkBench”, conforme figura 5.3.

5.1 Preparando o Script de Teste 22

Figura 5.3: “Script completo”

Vamos agora acrescentar 10 usuários virtuais, alterando o campo “Number ofTreads (Users)” do componente “Thread Group”. Com isso, teremos uma carga de 10usuários acessando nossa aplicação simultaneamente, figura 5.4.

Figura 5.4: “Adicionando usuários virtuais”

5.1 Preparando o Script de Teste 23

5.1.2 Aplicação Sob Teste

Foi criado um plano de teste contendo uma porção de componentes, cada qualcom suas particularidades, mas ainda não dissemos ao JMeter qual o caminho para aaplicação que gostaríamos de testar. O elemento que usaremos para informar qual a URLou o IP do sistema sob teste é o “HTTP Request”.Este componente contem um campo chamado “Server Name or IP”, onde setaremos o aURL da aplicação sob testes, figura 5.5.

Figura 5.5: “Informando a URL da aplicação sob teste”

Desta forma indicamos o caminho onde o JMeter deve efetuar os testes. Comonão informamos a porta, ele utilizará a porta web padrão 80.

5.1.3 Apertando o Play

Agora que já indicamos a quantidade de usuários que irão acessar a aplicaçãoe já informamos o caminho para o servidor web que está localizado o sistema, podemosexecutar nossos testes.Podemos executar os teste através do menu “‘Run/Start” ou simplesmente clicando noicone “Start”, conforme figura 5.6.

5.1 Preparando o Script de Teste 24

Figura 5.6: “Executando o teste”

5.1.4 Relatórios

Ao executar os testes precisaremos coletar as métricas necessárias para a analisedo comportamento do sistema. Aí entra em ação os componentes “Listener”.

“Summary Report”

Este elemento apresenta um resumo do comportamento do servidor ao executaros testes, figura 5.7. As métricas apresentadas por ele são:

• “Label” - Rotulo do elemento de requisição de serviço adicionado ao “Test Plan”,em nosso caso “HTTP Requeste”.

• “Samples” - Quantidade de amostras, isto é, pedidos de requisição HTTP queocorreu para o determinado segmento.

• “Average” - Tempo médio, em milissegundos, de resposta para determinado pedidode requisição HTTP.

• “Min” - Tempo mínimo, em milissegundos, de resposta para um determinadopedido de requisição HTTP.

• “Max” - Tempo maximo, em milissegundos, de resposta para um determinadopedido de requisiçao HTTP.

• “Std. Dev” - O desvio padrão apresenta os casos em que determinadas amostrasse distanciam do comportamento médio das demais amostras em razão do tempode resposta. Quanto menor este valor mais consistente é o padrão de tempo dasamostras coletadas.

5.1 Preparando o Script de Teste 25

• “Error %” - Porcentagem de erros nas amostra executadas.• “Throughput” - É a medida da quantidade de requisições por unidade de tempo.• “KB/sec” - Medida do “Throughput” em Kilobytes por segundo.• “Avg. Bytes” - Tamanho médio das respostas das amostras em bytes.

Figura 5.7: “Summary Report”

Graph Results

O comportamento da aplicação pode ser analisado, também, de maneira gráficaem tempo de execução. Para isto, usamos o elemento “Graph Results”, figura 5.8, queapresenta alguns dos seguintes parâmetros:

• “Average” - Média entre o tempo e o número de requisições;• “Median” - Mediana é um valor que divide as amostras em duas partes iguais.

Metade das amostras são menores que a média e a outra metade maior que a média,podendo ter algumas amostras com valor igual a média;

• “Deviation” - É a medida da variação de um dado conjunto de dados;• “Throughput” - Número de amostra por unidade de tempo.

5.1 Preparando o Script de Teste 26

Figura 5.8: “Graph Results”

“Assertion Results” e “Response Assertion”

Vimos no capítulo 4 que é possível determinar valores para avaliarmos osresultados. Utilizando o elemento “Response Assertion”, podemos determinar os valoresesperados e todos os outros serão considerados como incorretos, conforme figura 5.9.

Figura 5.9: “Response Assertion”

Após indicarmos quais valores são esperados para uma correta execução, preci-samos avaliar o resultado dos testes. Verificando se o comportamento do sistema está de

5.1 Preparando o Script de Teste 27

acordo com o especificado. Para efetuarmos esta verificação utilizamos o elemento “As-sertion Results”. A figura 5.10 mostra um exemplo onde todas as amostras obtiveram umvalor de retorno igual ao esperado, conforme indicado no “Response Assertion”.

Figura 5.10: “Exemplo de todas as amostras com retorno correto.”

Em caso de obtermos valores de retorno diferente do indicado, o “AssertionResults” apresenta erro para cada amostra que obteve valor divergente do estabelecido,conforme figura 5.11.

Figura 5.11: “Exemplo de amostras com valores de retorno diver-gente.”

CAPÍTULO 6Conclusão

O Apache JMeter é uma excelente ferramenta para teste de performance, cargae stress. Mas ela não se limita apenas a estes tipos de testes, podendo ser utilizada paraefetuar testes em bancos de dados, testes funcionais e vários outros. Além da grandevariedade de componentes inclusos na ferramenta, ainda é possível adicionar extensõespara desempenhar as mais variadas tarefas.

Bibliografia