36
Utilizando Utilizando JMeter JMeter para realizar para realizar testes de carga em aplicações testes de carga em aplicações Web Web Robinson Castilho Robinson Castilho [email protected] [email protected] Bacarin Software Ltda Bacarin Software Ltda JUGMS JUGMS

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

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 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 [email protected]@bacarin.com.br

Bacarin Software LtdaBacarin Software LtdaJUGMSJUGMS

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

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

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

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

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

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?

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

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

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

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

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

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

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

Tela Inicial JMeterTela Inicial JMeter

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

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

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

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)

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

Elementos do JMeterElementos do JMeter

● Listener: Visualizar resultados do teste

● Configuration Elements: Configurar dados padrão

● Assertions: Verificar respostas obtidas

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

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

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

Elemento Elemento Test PlanTest Plan

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

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

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

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, ...

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

Elemento Elemento ConfigConfig – Http Request – Http Request

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

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

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

Elemento Elemento Thread GroupThread Group

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

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

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

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)

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

Elemento SamplerElemento Sampler

● Executa a requisição ao servidor

● Está sempre associado a um Thread Group

● Podemos implementar Sampler customizados

● Usaremos: Http Request

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

Elemento Elemento SamplerSampler

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

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

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

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

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

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

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

Elemento Elemento ListenerListener

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

Exemplo PráticoExemplo Prático

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

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

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

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>

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

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 :)

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

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!!!

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

Perguntas & RespostasPerguntas & Respostas

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

Visite-nosVisite-nos

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

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

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

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

Elaborado e revisado por Robinson Castilho

[email protected]/09/2008

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

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.