Utilizando JMeter para realizar testes de carga em aplicações WEB

Post on 24-May-2015

18.834 views 1 download

description

Utilizando JMeterpara realizar testesde carga emaplicações WEB(Robinson Castilho / Bacarin)

Transcript of Utilizando JMeter para realizar testes de carga em aplicações WEB

UtilizandoUtilizando JMeterJMeter para realizar para realizar testes de carga em aplicações testes de carga em aplicações

WebWeb

Robinson CastilhoRobinson Castilhocastilho@bacarin.com.brcastilho@bacarin.com.br

Bacarin Software LtdaBacarin Software LtdaJUGMSJUGMS

AgendaAgenda● Apresentação● Motivação● Visão Geral JMeter● Principais elementos● Teste prático● Conclusão● Perguntas & Respostas● Coffe-break :)

ApresentaçãoApresentação● Robinson Castilho

(bacarin.com.br/jugms.com.br)● Desenvolvedor C++ e Java

● Sun Certified Java Programmer

● Sun Certified Web Component Developer

● 7 anos de experiência● Atuação: Bacarin Software Ltda● Instrutor SENAC/MS● Membro do JUGMS

Será que aguenta o “tranco”?Será que aguenta o “tranco”?● Quantos usuários simultâneos

o sistema pode atender sem capotar?

● Qual pico de utilização o hardware resiste?

● Como saber o tempo médio de resposta para uma determinada quantidade de usuários?

JMeter, o que é? JMeter, o que é? ● Projeto mantido pelo grupo

Jakarta Apache.● Usado para simular e analisar

carga de uso de um recurso.● Podemos testar carga em:

– Sistemas Web– Conexões FTP– Web Services– JDBC (conexão a SGBD)– LDAP, etc

Características do JMeterCaracterísticas do JMeter● Multiplataforma (100% Java)● Interface gráfica● Multithreading

– simula multiplas requisições simultaneamente.

● Extensível – Plug-ins– Samplers

● Estatísticas e gráficos

Requisitos e DownloadRequisitos e Download● Requisito: Maquina virtual java

http://www.java.com/download/

● Download JMeter: http://jakarta.apache.org/jmeter

● Executar:– Unix: java -jar ApacheJMeter.jar– Win: jmeter.bat

Tela Inicial JMeterTela Inicial JMeter

Tela InicialTela InicialÁrvore de elementos com:● Test Plan: Agrupa os ítens

utilizados em um Plano de Teste.

● WorkBench: Área de trabalho temporária que apóia o desenvolvimento do plano de testes

Elementos do JMeterElementos do JMeter● Test Plan e WorkBench● Thread Groups: Grupo de

usuários executando solicitações

● Samplers: Solicitação (http, ftp, LDAP...)

● Logic Controllers: Controlar a execução (repetidores, randomização, etc)

Elementos do JMeterElementos do JMeter

● Listener: Visualizar resultados do teste

● Configuration Elements: Configurar dados padrão

● Assertions: Verificar respostas obtidas

Elementos do JMeterElementos do JMeter

● Pre-Processors: Gerar dados para serem processados

● Post-Processors: Processar resultados, extrair dados para análise

● Timer: Controlar tempo de execução do plano de teste

Elemento Elemento Test PlanTest Plan

Elemento Elemento Test PlanTest Plan● User Defined Variables:

Podem ser utilizadas durante o teste. Use: ${app}.

● Run Thread...: Se marcado, executa os grupos de threads em seqüência (não paralelo).

● Fuctional Test Mode: Armazena o resultado das requisições

Elemento Elemento ConfigConfig● Usado para configurar o

plano de teste● Comumente usados para

definir padrões de configuração

● Em testes WEB, configura-se:– Servidor– Protocolo– Path, ...

Elemento Elemento ConfigConfig – Http Request – Http Request

Elemento Elemento Thread GroupThread Group

● Representa um conjunto de usuários executando a mesma atividade

● Elemento muito importante do plano de teste

● Contribui ativamente na simulação do plano de teste

Elemento Elemento Thread GroupThread Group

Elemento Elemento Thread GroupThread Group● Number of Thread: Qtde de

usuários simultâneos● Ramp-up Period: Intervalo

entre os lançamentos. É dividido pelo número de threads.

Ex: 10 (threads) / 10 (ramp-up) = 1

● Irá disparar 1 thread/segundo● Loop Count: Qtas vezes deve

executar as threads de teste

Elemento Elemento Thread GroupThread Group● Start time e End Time:

Agenda o horário de início e fim da execução, respectivamente.

● Duration: Define a duração do teste (sobrescreve End Time)

● Startup Delay: Define a espera para o início do teste (sobrescreve Start Time)

Elemento SamplerElemento Sampler

● Executa a requisição ao servidor

● Está sempre associado a um Thread Group

● Podemos implementar Sampler customizados

● Usaremos: Http Request

Elemento Elemento SamplerSampler

Elemento Elemento SamplerSampler

● Além das propriedades auto-explicativas, podemos citar:

● Send Parameters with the request: Envia parâmetros junto a requisição

● Send Files with the request: Envia arquivos junto a requisição

Elemento Elemento SamplerSampler

● Optional Tasks– Retrieve All...: Informa para

parsear e recuperar URLs internas

– Use as Monitor: Usado junto ao Monitor Result (verifica status do servidor)

– Save response...: Transforma a resposta em MD5

Elemento Elemento ListenerListener● Capturam os resultados

gerados pelo plano de teste● Apresentam os resultados em

diversos formatos:– Gráficos– Tabelas

● São associados a:– Test Plan– Sampler

Elemento Elemento ListenerListener

Exemplo PráticoExemplo Prático

Isso foi apenas uma degustação :)Isso foi apenas uma degustação :)

● Jmeter pode muito mais do que isso

● Existem outros recursos não explorados

● Outros tipos de aplicativos podem ser testados

● Podemos automatizar a execução usando ANT

Ant e JMeterAnt e JMeter● Ant é uma ferramenta para

automação de tarefas● Similar ao “make”● Utilização:

<jmeter jmeterhome="${jmeter.home}" resultlog="${basedir}/target/JMeterResults.xml"> <testplans includes="BreweryTestPlan.jmx" dir="${basedir}/tests/load"> </testplans></jmeter>

Ant e JMeterAnt e JMeter● Utilizar XSLT para exibir

resultados em HTML● Customizar o teste utilizando

parâmetros e propriedades● Passível de integração com

sistemas de integração contínua (ex: CruiseControl)[1]

● Tudo isso e muito mais. Apreciem :)

ConclusãoConclusão● Jmeter é fácil de operar● Permite simular cargas de utilização de diversos tipos de recursos

● Passível de automação com Ant

● Free!!!

Perguntas & RespostasPerguntas & Respostas

Visite-nosVisite-nos

http://www.jugms.com.brhttp://www.bacarin.com.br

BibliografiaBibliografia● [1] http://www.infoq.com/news/2008/

04/JMeter-Ant-CI

● [2] http://www.linux.com/feature/34432

● [3] http://jakarta.apache.org/jmeter/

● [4] http://www.javaworld.com/javaworld/jw-07-2005/jw-0711jmeter.html?page=1

● [5] http://www.vivaolinux.com.br/artigo/Jmeter-com-qualidade-e-performance/

● [6] http://pt.wikipedia.org/wiki/Jmeter

Acessados em 20/09/2008

Elaborado e revisado por Robinson Castilho

castilho@bacarin.com.br20/09/2008

LicençaLicença● Este material está licenciado sob a Licença

Creative-Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil

● Você pode:

– Copiar, distribuir, exibir e executar a obra

– Criar obras derivadas

● Sob as seguintes condições:

– Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.

– Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.

– Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.