Вы находитесь на странице: 1из 8

Teste de Desempenho de Aplicaes Web com

Apache JMeter
De que se trata o artigo:

Vincius Rodrigues de Souza


vrsouzainfo@gmail.com

graduando em Sistemas de Informao pela


Faculdade Metodista Granbery, graduando em
Engenharia Civil pela universidade Federal de Juiz
de Fora e estagirio na Prefeitura de Juiz de Fora
na rea de desenvolvimento e testes de software.

Ricardo Cunha Vale


valericc@gmail.com

graduando em Sistemas de Informao pela


Faculdade Metodista Granbery e estagirio na
Prefeitura de Juiz de Fora na rea de desenvolvimento e testes de software.

Marco Antnio Pereira Arajo


maraujo@granbery.edu.br

Doutorando e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ, Especialista em Mtodos Estatsticos Computacionais e
Bacharel em Matemtica com Habilitao em
Informtica pela UFJF, Professor do Curso de Bacharelado em Sistemas de Informao da Faculdade Metodista Granbery, Analista de Sistemas
da Prefeitura de Juiz de Fora, Editor da Engenharia de Software Magazine.

36

Esse artigo apresenta a configurao e


utilizao da ferramenta Apache JMeter,
capaz de executar testes de desempenho
em sistemas baseados na Web, a fim de se
antecipar a possveis problemas de sobrecarga na utilizao do software.

Para que serve:


Apache JMeter uma aplicao desenvolvida totalmente em Java que auxilia
na gerao de testes de desempenho
para aplicaes Web. Ela capaz de simular acessos simultneos na aplicao

tualmente, h uma exigncia


cada vez maior quanto boa
qualidade e conseqente confiabilidade dos softwares produzidos. Na
busca dessas caractersticas necessrias,
existem etapas importantes no ciclo de
desenvolvimento de software que devem
ser observadas de perto, dentre elas, a
fase de testes. Existem vrios tipos de
teste de software, que abrangem desde o
levantamento de requisitos at o fim da

Engenharia de Software Magazine - Teste de Desempenho de Aplicaes Web com Apache JMeter

e possibilita a visualizao dos resultados


para avaliao do desempenho por meio de
grficos e tabelas.

Em que situao o tema til:


O intuito desse processo assegurar que a
arquitetura desenvolvida para atender a uma
soluo realmente consiga suportar a quantidade de usurios previstos para acessar o aplicativo, sendo possvel mensurar alguns atributos
determinantes para um bom funcionamento
do sistema, tais como consumo de memria e
uso de CPU dos servidores, nvel de trfego na
rede e tempo de resposta.

fase de implantao do sistema.


Nesse artigo faremos um est udo
de caso a fim de demonstrar um dos
tipos de teste de software, o teste de
desempenho, atravs da configurao
e utilizao da ferramenta Apache
JMeter. A verso da ferramenta a ser
abordada neste artigo ser a 2.3.2, e
pode ser encontrada para download no
site http://jakarta.apache.org/jmeter.
Para utilizar a JMeter, deve-se observar

VA L I D A O, V ER I FI C A O E T EST E

Figura 1. Visualizao da tela inicial do sistema.

os requisitos mnimos, devendo estar


instalado a JVM (Java Virtual Machine). Essa verso da JMeter suporta
testes de desempenho em aplicaes
Web (HTTP/HTTPS), FTP, JDBC, LDAP,
Java e JUnit.
Aps o download do arquivo Zip,
basta descompactar e abrir a pasta
bin, clicando no executvel chamado
ApacheJMeter.jar. A janela inicial da
ferramenta, alm do menu superior, j
conta com uma rvore com dois elementos principais: Teste Plan e WorkBench
(ver Figura1).
O WorkBench uma rea onde os
itens existentes no so considerados
como parte de um plano de testes em

particular. So armazenados temporariamente, e no so salvos no momento


que o plano de teste salvo, tendo
funo de apoio elaborao de planos
de testes.
O TestPlan onde so definidos todos os testes que iro ser executados.
Agrupa todos os elementos possveis
de configurao dos samplers, tais como:
controladores, listeners, assertions, dentre
outros, que sero abordados ao longo do
artigo. O TestPlan pode ser configurado
para que as threads sejam executadas de
maneira seqencial ao invs de simultaneamente, selecionando Run Thread
Groups consecutively, e possvel a
configurao da ferramenta para testes

de caixa preta selecionando Functional


Test Mode.
Para o incio da configurao dos
testes, deve-se incluir elementos ao TestPlan. So eles:
Thread Group: simular os usurios
que iro executar os testes. Nele podemse configurar quantos usurios iro
fazer as requisies, o tempo total do
grupo de requisies e quantas vezes
o teste ser executado. Ao selecionar
a opo Scheduler pode-se ainda
indicar a hora que ir iniciar e terminar
o teste. no Thread Group que podem
ser includos os elementos Sampler
que faro as requisies fsicas de um
determinado servidor. Podemse ainda

Edio 07 - Engenharia de Software Magazine

37

Figura 2. Janela de Configurao do HTTP Request Defaults.

Figura 3. Janela de Configurao do Thread Group.

38

Engenharia de Software Magazine - Teste de Desempenho de Aplicaes Web com Apache JMeter

incluir ao Thread Group os elementos


Logic Controller que permitem testes
customizados, como usados para fazer
randomizao ou criar laos.
Config Element: categoria de elementos
de configurao do plano de testes, podendo configurar variveis que posteriormente sero utilizadas pelo Sampler.
Timer: responsveis pelo controle mais
preciso no tempo de execuo dos testes,
estabelecem um intervalo padro ou
aleatrio entre as threads ou at delays
entre as threads.
Pre Processors: so elementos que
processam um dado antes de acionar
um Sampler. So usados para modificar um Sampler do mesmo escopo.
Podem tambm ser usados para gerar
dados dinmicos.

VA L I D A O, V ER I FI C A O E T EST E

Assertions: aplicados para conferir


se os dados esto de acordo com o
previsto pelo Sampler, como encontrar
determinado texto, ou se as requisies
tm que retornar em determinado
tempo especificados em um elemento
Assertion.
Post Processors: aplicados aps um
Sampler e servem para extrair dados de
resposta de uma requisio.
Listener: capturam os resultados gerados pelo plano de testes e apresenta-os
em um determinado formato escolhido.
Os dados podem ser visualizados por
meio de grficos ou por meio de tabelas
que informam o que ocorreu durante o
teste, indicando o tempo gasto para a
requisio ser feita, ou se ocorreu algum
erro durante o teste.

Figura 4. Tela do Simple Controller.

Criando um teste
Para exemplificar a utilizao da ferramenta, ser utilizado um aplicativo
Web previamente construdo com acesso
a um banco de dados. Primeiramente,
sero configurados testes para serem
aplicados neste sistema que acessa o
banco de dados e grava os dados de um
formulrio contendo nome e email.
Inicialmente, clicando com o boto
direito sobre TestPlan, adiciona-se um
HTTP Request Defaults, localizado dentro
do grupo Config Element. Este elemento
serve para evitar que se adicionem
vrios HTTP Request com as mesmas
configuraes de servidor. Todas as
requisies dos testes sero feitas a um
mesmo servidor j configurado neste
elemento. Como estamos utilizando um
servidor local, configura-se o campo
Server name or ip com localhost
(ver Figura 2).
Em seguida adicionamos um Thread
Group. Na janela que se abrir, definimos o nome desse grupo de teste para
Gravao, a quantidade de usurios
que faro as requisies em 1000, e o
tempo total dessas requisies para 2

Figura 5. Configurao do HTTP Request Usurio Marcos.

segundos. No sero configurados os


horrios de incio e trmino do teste,
que ser disparado manualmente (ver
Figura 3).
Neste teste, sero utilizados trs
HTTP Request para simular o cadastro

de trs registros diferentes, e como caracterstica comum, somente o campo


Path com /sistema/salvarPessoa.
php, que representa a pgina da
aplicao a ter seu desempenho testado. Este elemento responsvel por

Edio 07 - Engenharia de Software Magazine

39

Figura 6. Listeners individuais.

Figura 7. Listener de resultados em conjunto.

40

Engenharia de Software Magazine - Teste de Desempenho de Aplicaes Web com Apache JMeter

configurar caractersticas de cada tipo


de requisio, incluindo o caminho de
cada diretrio do arquivo especfico a
ser testado. O grupo Logic Controller
tem como funo controlar as execues das requisies dentro de um
Thread Group de forma personalizada.
Possui controladores lgicos que permitem a criao de laos, modularizao e randomizao. Para agrupar
esses elementos HTTP Request citados,
utilizaremos o Simple Controller, localizado dentro do grupo Logic Controller,
com o nome de Insero no Banco de
Dados. Ele tem simplesmente a funo organizacional. Cada requisio
vai conter seu rtulo correspondente
e seus parmetros especficos para
serem passados para a pgina em questo, definidos na janela com o ttulo
Send Parameters With The Request.
Simularemos o cadastro de trs usurios quaisquer, com os nomes definidos
aleatoriamente por Marcos, Lcia e
Roberto. No caso, todos os parmetros

VA L I D A O, V ER I FI C A O E T EST E

sero passados por mtodo GET, que


tambm deve ser definido na caixa de
seleo (ver Figuras 4 e 5).
Para cada HTTP Request configurado,
utilizaremos como visualizadores os
elementos Graph Results e Summary
Report. O Graph Results contm um
grfico Execues X Tempo, exibindo
os resultados, a mdia, a mediana, os
sucessos e os erros nas requisies. O
Summary Report exibe os mesmos resultados, mas de maneira mais especfica,
apresentando os valores coletados no
teste (ver Figura 6).
Todos os listeners adicionados anteriormente esto configurados para funcionar de maneira individual, mas o JMeter
permite tambm a observao de resultados em conjunto, por isso, como filhos
do elemento ThreadGroup, mais trs
listeners so adicionados: Graph Results,
Summary Report e View Results in Table,
que listam numa tabela, os resultados
de todas as requisies individualmente.
Isso permite saber em que ponto exato
ocorreu uma possvel falha e obter suas
caractersticas (ver Figura 7).
Depois de feito esse processo, a parte
de configurao do teste est concluda.
Partimos agora para a execuo dos testes.
No menu superior, h o item Run, dentro
dele a opo Start. Ao clicar, os testes
iro iniciar e durar o tempo previamente
determinado, no caso, dois segundos.
Durante o perodo de execuo, os resultados so mostrados em tempo real, e
possvel acompanhar todo o processo.

Avaliando os Resultados
Aps o teste ter sido realizado, os
elementos Listener iro exibir os dados
correspondentes para todos os HTTP
Request configurados, e ainda os resultados em conjunto. Analisaremos os
Listeners correspondentes s requisies
feitas ao banco.
Para as requisies feitas ao banco,
analisaremos primeiro os elementos

Figura 8. Graph Results referente ao HTTP Request Usurio Marcos.

Figura 9. Summary Report referente ao HTTP Request Usurio Marcos.

Graph Results e Summary Report (ver


Figuras 8 e 9). Esses elementos exibiro os dados correspondentes somente
ao HTTP Request Usurio Marcos. Note
que no Graph Results existem vrias
linhas de diferentes cores. Essas linhas
representam dados como mdia (Average), mediana (Median), desvio padro

(Deviation) e o mnimo e mximo do


tempo de resposta das requisies, sendo possvel ento analisar visualmente
o comportamento da aplicao em relao ao desempenho apresentado.
O Summary Report nos mostra de forma mais precisa o que ocorreu durante
as requisies do HTTP Request Cadastro

Edio 07 - Engenharia de Software Magazine

41

Figura 10. Summary Report referente a todos os HTTP Request do teste.

Figura 11. Graph Result referente a todos os HTTP Request usados.

42

Engenharia de Software Magazine - Teste de Desempenho de Aplicaes Web com Apache JMeter

Joao. Nesse exemplo ele mostra que a


mdia foi de 7959 milissegundos e o
desvio padro de 4658 milissegundos.
O tempo, medido em milissegundos,
gasto foi no mnimo de 158 e no mximo
de 18431. Exibe tambm que houve 4,4%
de erro nas execues das requisies
realizadas pelo teste, que pode ser,
inclusive, da incapacidade do servidor
de processar este nmero de requisies
dentro da faixa de tempo estipulada.
Tomando como base os dados referentes dos dois elementos Listeners, podemos concluir que foram feitas muitas
gravaes em perodo muito curto de
tempo, mas o teste no ficou isento de
erros. Isso pode ter sido causado por
vrios fatores, dentre eles: configurao
de mximo de conexes simultneas no
banco de dados, demora no processamento por parte do servidor, alm de
problemas fsicos.
Agora iremos analisar os listeners adicionados como filhos do Thread Group.
Esses elementos iro exibir os dados correspondentes a todos os HTTP Request
utilizados durante o teste, os referentes
ao cadastro dos usurios Marcos, Lcia
e Roberto. Aqui colocamos trs listeners:
Graph Results, Summary Report e View
Results in Table.
Analisaremos primeiramente o Summary Report. Esse elemento exibir os
dados de todos os HTTP Request usados,
alm de exibir um Total dos HTTP Request (ver Figura 10).
Em nos so te ste, por exemplo, o
cadastro do Usurio Marcos possui
tempo mnimo de 158 milissegundos,
enquanto o cadastro do Usurio Lucia

VA L I D A O, V ER I FI C A O E T EST E

Figura 12. View Results in Table.

Concluso
Vimos neste artigo que a ferramenta
JMeter auxilia o desenvolvedor a testar
se sua aplicao possui o desempenho
esperado, possibilitando saber se o

sistema ir suportar o nmero de requisies que os usurios podero fazer.


Para isso, necessrio elaborar os testes
de maneira que retratem a realidade do
uso da aplicao, sendo um importante
mecanismo de preveno de falha por
desempenho ruim ou insatisfao do
usurio, possibilitando que a aplicao
seja melhorada.

D
s

D seu feedback sobre esta edio!

eu

Feedback

A Engenharia de Software Magazine


tem que ser feita ao seu gosto.
Para isso, precisamos saber o que voc,
leitor, acha da revista!
D seu voto sobre este artigo, atravs do link:

edio
ta

e o estado da requisio. Observa-se


os estados das requisies das threads,
indicando sucesso ou erro, sendo apresentadas pelo smbolo exibido na coluna
status. Caso algum erro ocorra durante
o teste, esse tambm seria exibido no
Summary Report por meio de porcentagem, ou seja, no seria possvel saber
qual thread falhou. Com o View Results
in Table pode-se saber qual thread conseguiu fazer a requisio ou no, alm
de exibir a mdia e o desvio padro
total do teste.

www.devmedia.com.br/esmag/feedback

Edio 07 - Engenharia de Software Magazine

43

sobre e
s

de 24 milissegundos e o do Usurio
Roberto de 48 milissegundos. J o
tempo mximo do cadastro do Usurio Marcos 18431 milissegundos,
enquanto o do cadastro do Usurio
Lcia de 16598 milissegundos e o do
Usurio Roberto 16771 milissegundos.
Com isso possvel comparar diferentes comportamentos de diferentes
requisies, todos efetuando a mesma
ao. Numa aplicao real, pode-se
avaliar o comportamento de diferentes
pginas de uma aplicao Web, no
necessariamente mesma pgina como
apresentado neste estudo de caso.
Iremos agora demonstrar o Graph Result
(ver Figura 11). Ele mostra as linhas dos
trs grupos de requisies em diferentes posies. Por isso bom que ele seja
colocado tambm como filho de um
HTTP Request, j que aqui so mostrados
dados correspondentes a todos os Http
Request usados.
Este tipo de grfico apresenta uma
forma bastante til de anlise dos dados.
O eixo vertical, por apresentar o tempo
gasto pelas requisies, pode ser utilizado como balizador do desempenho da
aplicao, possibilitando definir o que
considerado aceitvel para o tempo
de resposta, confrontado com o comportamento apresentado pelas linhas
do grfico.
Iremos agora analisar outro tipo de
Listener, chamado de View Results in Table
(ver Figura 12).
Com o View Results in Table, possvel
observar o estado de cada requisio
feita. Ele exibir as threads com seus respectivos nomes, o tempo da requisio

Вам также может понравиться