Manual de Utilização da Ferramenta JMeter

Transcrição

Manual de Utilização da Ferramenta JMeter
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
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íram
para 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, Msc
Jacson Rodrigues Barbosa, Adailton Ferreira de Araújo, Andressa Martins, Guilherme
Sampaio Soares, Jailton Alkimin Louzada, Malba Jacob Prudente, Paulo Marcos Soares
Rodrigues 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 de
Goiás.
Palavras–chave
Teste de software, Micro e Pequena Empresa de TI.
Conteúdo
Lista de Figuras
6
Lista de Tabelas
7
1
8
8
8
Introdução
1.1
1.2
2
Testes de Performance, Carga e Stress
2.1
2.2
2.3
3
Requisitos de Instalação
3.1.1
Versão Java
3.1.2
Sistema Operacional
3.1.3
Instalação
3.1.4
Executando o JMeter
Utilização da Ferramenta
4.1
5
Teste de Performance
Teste de Carga
Teste de Stress
JMeter
3.1
4
Objetivos do manual
Organização do Manual
Criando um Plano de Teste (Test Plan)
4.1.1
Adicionando usuários virtuais
4.1.2
Adicionando Requisições de Serviços ao “Thread Group”
4.1.3
Utilizando o “HTTP Request”
4.1.4
Relatórios de execução e Asserções
Executando os Testes
5.1
Preparando o Script de Teste
5.1.1
Setando a Quantidade de Usuários Virtuais
5.1.2
Aplicação Sob Teste
5.1.3
Apertando o Play
5.1.4
Relatórios
“Summary Report”
Graph Results
“Assertion Results” e “Response Assertion”
6
Conclusão
9
9
9
10
11
11
11
11
11
12
13
13
13
15
15
16
20
20
21
23
23
24
24
25
26
28
Bibliografia
29
Lista de Figuras
3.1
Tela inicial do JMeter
12
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Caminho para o Thread Groups
Thread Groups
Caminho para os controladores de requisições
HTTP Request
Caminho para os componentes “Listener”
“Listener” adicionados ao “Test Plan”
Caminho para os componentes de asserção
“Response Assertion”
14
14
15
16
17
17
18
19
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
“Caminho para abrir o script”
“Encontrando o script de teste”
“Script completo”
“Adicionando usuários virtuais”
“Informando a URL da aplicação sob teste”
“Executando o teste”
“Summary Report”
“Graph Results”
“Response Assertion”
“Exemplo de todas as amostras com retorno correto.”
“Exemplo de amostras com valores de retorno divergente.”
20
21
22
22
23
24
25
26
26
27
27
Lista de Tabelas
CAPÍTULO 1
Introdução
1.1
Objetivos do manual
A proposta deste manual é demonstrar a utilização de uma importante ferramenta
open source para teste de carga, stress e performance: Apache JMeter. Esta ferramenta
auxilia no dimensionamento e avaliação dos limites dos sistemas web.
1.2
Organização do Manual
CAPÍTULO 2
Testes de Performance, Carga e Stress
Nos dias de hoje a Internet tem um papel fundamental na disseminação de conhecimento e informações diversas. Com isso, as aplicações web têm obtido uma grande
importância no cotidiano das pessoas e por conseqüência, das empresas. A possibilidade
de múltiplos usuários utilizando a aplicação, interface com sistemas heterogêneos e acessos remotos dos mais variados tipos têm demandado cada vez mais esforços para manter
a integridade da infra-estrutura intacta.
Para aferir a capacidade, a disponibilidade em casos extremos ou apenas verificar o tempo
de resposta de uma determina funcionalidade da aplicação, se faz necessário a utilização
de ferramentas que permitam a simulação do uso e a devida documentação dos resultados
obtidos.
Diante desse cenário a ferramenta de teste de performance Apache JMeter tem se destacado por sua facilidade de uso e versatilidade.
2.1
Teste de Performance
Os testes de performance tem como finalidade verificar o desempenho do sistema
em condições normais de uso, onde o foco é obter informações relevantes da utilização
das principais funções.
2.2
Teste de Carga
Os testes de carga, diferentemente dos testes de performance, tem como objetivo
a 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 de
usuários próximo das condições reais.
2.3 Teste de Stress
2.3
10
Teste de Stress
O objetivo de um teste de stress é explorar os limites do sistema, aumentando
a carga indefinidamente até provocar um “crash”. A principal diferença entre o teste
de carga e o teste performance é que, enquanto o primeiro preocupa-se em determinar
como o sistema se comporta em caso de um grande numero de acessos, o segundo tem
por objetivo testar a quantidade máxima de usuários, determinando, assim, Seu limite de
utilização.
CAPÍTULO 3
JMeter
O Apache JMeter é uma ferramenta desktop para testes de performance, desenvolvida utilizando a linguagem Java e licenciada sob os termos da “Apache License, Version 2.0”. Esta ferramenta foi primeiramente utilizada para realizar testes em aplicações
web, mas tem expandido suas funcionalidades, podendo realizar testes funcionais, testes
em bancos de dados entre outros.
3.1
3.1.1
Requisitos de Instalação
Versão Java
Devido ao fato do JMeter utilizar apenas as API´s padrão do Java, ele requer uma
JVM 6 (Java Virtual Machine) ou superior.
3.1.2
Sistema Operacional
Como o JMeter é desenvolvido 100% em Java, é possível rodá-lo em qualquer
sistema 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á instalado. A versão 2.9, segue a seguinte estrutura de diretórios 1 :
apache-jmeter-2.9
apache-jmeter-2.9/bin
apache-jmeter-2.9/docs
1 Você
pode renomear o diretório raiz (ou seja, apache-jmeter-2.9), se quiser, mas não altere os nomes
de sub-diretório.
3.1 Requisitos de Instalação
12
apache-jmeter-2.9/extras
apache-jmeter-2.9/lib/
apache-jmeter-2.9/lib/ext
apache-jmeter-2.9/lib/junit
apache-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 4
Utilizaçã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 quando
rodar os testes. A ele é adicionado os demais componentes pertinentes aos testes que serão
executados. Os principais componentes adicionados ao “TestPlan” são:
• Listeners - elementos que capturam os resultados gerados pelo plano de testes e
apresenta-os em um determinado formato, com vinculo ou não a um “TestPlan”;
• Assertions - possibilidade de adicionar pontos de afirmação para verificação se
determinada resposta está de acordo com alguma afirmação colocada no elemento
Sampler;
• 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 componente
chamado “Thread Groups”. Este componente agrega todos os demais elementos necessários para a execução de nossos testes, controlando as ações de pseudos usuários no
sistema. Para adicioná-lo ao “Test Plan” basta acionar: “Edit/Add/Threads(Users)/Thread
Groups”. 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 Properties” 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)
4.1.2
15
Adicionando Requisições de Serviços ao “Thread Group”
Para efetuar uma requisição a um determinado serviço que queremos testar
o JMeter faz uso de controladores chamados, genericamente, de “Sampler”. Existem
vários tipos de “Sampler”, para os mais variados tipos de serviços, sendo que, os
mais comuns são: HTTP Request1 , FTP Request, SOAP/XML-RPC Request , JDBC
Request, 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 a
uma página web qualquer. O “HTTP Request” possui, na seção Web Server, um campo
chamado “Server Name or IP”. Esse campo é onde devemos informar a URL ou o IP
para a página web que será alvo dos testes. Existe, ainda, o campo “Port Number” onde
deve-se informar a porta de comunicação para a página indicada, caso seja omitido esta
informação o JMeter admite a porta como sendo a 80. Veja figura 4.4.
1 Este
manual se limitará a mostrar o funcionamento do HTTP Request, por se tratar do controlador de
requisiçã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” para
gerenciar 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 dados
obtidos com a execução do script.
Para tanto, temos os elementos “Listener” que são elementos que monitoram a execução
do script, coletam e apresentam os dados em determinados formatos para uma analise em
tempo de execução e/ou analise posterior. O caminho para adicionarmos alguns desses
elementos 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 atingiram
uma meta pré-estabelecida, como por exemplo: responderam dentro de um dado limite de
tempo 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”, que
permite 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 ao
JMeter que esperamos como resposta os códigos HTML 200 (o servidor retornou a página
com sucesso) ou código HTML 302 (página movida temporariamente ou sua página foi
redirecionada), figura 4.8.
4.1 Criando um Plano de Teste (Test Plan)
19
Figura 4.8: “Response Assertion”
versão2
Agora podemos salvar o script, preferencialmente em um servidor de controle de
assim, poderá ter um total controle das alterações ocorridas.
2 Existem vários tipos de servidores de versão open source, onde os mais populares são: Servidores SVN,
GitHub e CVS.
CAPÍTULO 5
Executando 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, carga
e principalmente os testes de stress devem ser exclusivos para esta finalidade. Como a
intenção é criar um grande volume de usuários acessando a aplicação, a rede e o servidor
sob 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 componentes: “Test Plan”, “Thread Group”, “HTTP Request”,“Summary Report”,“Graph Results”,“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 of
Treads (Users)” do componente “Thread Group”. Com isso, teremos uma carga de 10
usuários acessando nossa aplicação simultaneamente, figura 5.4.
Figura 5.4: “Adicionando usuários virtuais”
5.1 Preparando o Script de Teste
5.1.2
23
Aplicação Sob Teste
Foi criado um plano de teste contendo uma porção de componentes, cada qual
com suas particularidades, mas ainda não dissemos ao JMeter qual o caminho para a
aplicação que gostaríamos de testar. O elemento que usaremos para informar qual a URL
ou o IP do sistema sob teste é o “HTTP Request”.
Este componente contem um campo chamado “Server Name or IP”, onde setaremos o a
URL 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. Como
nã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ção
e já informamos o caminho para o servidor web que está localizado o sistema, podemos
executar nossos testes.
Podemos executar os teste através do menu “‘Run/Start” ou simplesmente clicando no
icone “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 analise
do comportamento do sistema. Aí entra em ação os componentes “Listener”.
“Summary Report”
Este elemento apresenta um resumo do comportamento do servidor ao executar
os 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 que
ocorreu para o determinado segmento.
• “Average” - Tempo médio, em milissegundos, de resposta para determinado pedido
de requisição HTTP.
• “Min” - Tempo mínimo, em milissegundos, de resposta para um determinado
pedido de requisição HTTP.
• “Max” - Tempo maximo, em milissegundos, de resposta para um determinado
pedido de requisiçao HTTP.
• “Std. Dev” - O desvio padrão apresenta os casos em que determinadas amostras
se distanciam do comportamento médio das demais amostras em razão do tempo
de resposta. Quanto menor este valor mais consistente é o padrão de tempo das
amostras 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áfica
em tempo de execução. Para isto, usamos o elemento “Graph Results”, figura 5.8, que
apresenta 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 os
resultados. Utilizando o elemento “Response Assertion”, podemos determinar os valores
esperados 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, precisamos 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 “Assertion Results”. A figura 5.10 mostra um exemplo onde todas as amostras obtiveram um
valor 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 “Assertion
Results” 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 divergente.”
CAPÍTULO 6
Conclusão
O Apache JMeter é uma excelente ferramenta para teste de performance, carga
e stress. Mas ela não se limita apenas a estes tipos de testes, podendo ser utilizada para
efetuar testes em bancos de dados, testes funcionais e vários outros. Além da grande
variedade de componentes inclusos na ferramenta, ainda é possível adicionar extensões
para desempenhar as mais variadas tarefas.
Bibliografia

Documentos relacionados

Apostila do JMeter

Apostila do JMeter consideração o fato de que a maioria dos problemas críticos de desempenho advém de decisões feitas em estágios iniciais do ciclo de desenvolvimento do software [2]. Testes de estresse normalmente ...

Leia mais

Análise Comparativa de Ferramentas de Teste para

Análise Comparativa de Ferramentas de Teste para a coluna exibida nos resultados é possível saber que tipo de dado é armazenado na coluna. Os resultados das instruções SQL podem ser exportados para os formatos: TXT, SQL, HTML, XML ou Microsoft Ex...

Leia mais