SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Abrindo a Caixa de Ferramentas
Atirando Pedras com Jmeter
 Evandro Grezeli
 egrezeli@gmail.com
 Maio/2016
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
1
Sobre
Entusiasta em assuntos que tangem a desempenho de
aplicação
+10 anos de experiência com desenvolvimento de software Java e
otimização de sistemas em baixa plataforma
Manutenção e desenvolvimento de componentes para o Jmeter
Colunista no site http://jmeter.com.br
Especialista em capacidade e desempenho na maior companhia de
meios de pagamento do Brasil
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
2
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
3
ANTERIORMENTE
NO CMG 2015...
Em 2015...
Falando de testes de desempenho
Importância de testes de desempenho
O conceito do tempo de resposta
Reconhecimento do Ambiente
Tipos de testes de desempenho
Metodologia e Planejamento
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
4
AGENDA
Configurando o ambiente
Modos de usar o Jmeter
Melhores práticas para criar, testar e atirar
Casos complexos e saídas (MQ e Framework com visão)
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
5
Configurando o ambiente
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
6
Configurando o ambiente
Pré requisitos mínimos*:
* fonte oficial: http://jmeter.apache.org/usermanual/get-started.html
OK, e...?
… se eu quiser simular 1.000 usuários virtuais?
… utilizar recursos visuais durante o teste?
… trafegar todos os elementos da página?
… utilizar beanshell durante o teste?
… realizar validações em todos os passos do teste?
Configurando o ambiente
Jmeter é uma ferramenta que precisa de uma caixa dentro
de uma caixa
SO 2.5 GB
Jmeter
JVM
1.5 GB
Ligado diretamente com a capacidade de memória (alocação de thread)
E CPU (velocidade que as threads trabalham)
Exemplo
Intel Core i7 @ 2.20GHz
4 GB RAM DDR3
100 GB disco
Cenário simples
expressões regulares; output em arquivo;
distribuição de peso nativa
Na prática, a conta* é
para cada thread criada no Jmeter, é
necessário 2,5 MB disponível na JVM
* pode variar de acordo com a forma que o Jmeter é inicializado, para mais!
Modo de usar o JMeter
GUI (para testes e criação)
Linha de comando (apenas para teste)
Onde:
-n: indica que não deve ser aberta a GUI
-t: o caminho do script que será executado
-l: arquivo gerado com informações do teste
DICA
Interrompa os testes no
modo
non-gui utilizando os scripts
stoptest.sh ou stoptest.cmd
Modo de usar o JMeter
Mestre e Escravo
Certifique-se que: Mesma versão de Jmeter
Mesma versão de JVM
Massa de dados estão no local correto
Iniciando o(s) escravo(s)
Adicione o endereço do escravo no mestre
No arquivo jmeter.properties
Modo de usar o JMeter
Mestre e Escravo
Certifique-se que: Mesma versão de Jmeter
Mesma versão de JVM
Massa de dados estão no local correto
Iniciando o(s) escravo(s) de forma non-GUI
Onde:
-n: indica que não deve ser aberta a GUI
-t: o caminho do script que será executado
-r: endereços dos servidores escravos presentes no properties
Melhores Práticas
Criar
Basicamente, Jmeter se divide em duas áreas
Testplan: Área destinada a colocar os elementos referentes ao teste
Workbench: Área destinada a colocar os elementos que gravam requisições HTTP
O que deve se atentar:
Para facilitar na criação, na área “TestPlan”, adicione um “Thread Group”
e use-o como “Target Controller”
Agrupe as transações, definindo no combo box “Grouping”
a opção “Put each group in a new transaction controller”
Adicione as exclusões sugeridas, clicando no botão “Add suggested excludes”
View results tree serve
para visualizar a navegação
já realizada
Melhores Práticas
Testar
User Defined Variables
Sempre tenha váriaveis locais no script, para
dar fácil manutenção no mesmo
Exemplo
Endereço de diretórios para escrita de log, leitura de massa de
dados; diferentes valores de endereços web (ambiente
homologação, TI, produção)
HTTP Cookie Manager
Permita que o Jmeter gerencie os cookies da
aplicação de forma automática
HTTP Header Manager
Toda requisição Web deve ter um cabeçalho,
com este componente o mesmo é
padronizado para todas as requisições
Melhores Práticas
Testar CSV Data Set Config
Com este componente é possível utilizar um
arquivo CSV (comma-separated-value)
para massa de dados das requisições
HTTP Request Defaults
Todas as requisições Web possuem um
caminho padronizado
Response Assertion
Verifica na resposta da requisição através
de padrões de buscar por um trecho de
texto específico, URL, código de resposta HTTP e
resposta de um header
Melhores Práticas
Testar
Throughput Controller
Através deste componente é possível
definir o peso de cada umas das
requisições, em percentual
Regular Expression Extractor
Através de um motor de expressão regular
baseado em Perl, é possível extrair
informações de uma resposta web e
utiliza-la posteriormente
Melhores Práticas
Testar
View Results Tree
Uma vez criado, editado e configurado o
script, com este relatório é possível
visualizar através de um simulador de
navegador web como foi o request enviado
e qual o seu response
ATENÇÃO
Este componente consome
muita memória da JVM, portanto
não esqueça de desabilita-lo
antes de executar um teste pesado
Melhores Práticas
Atirar
Ultimate Thread Group
Uma biblioteca construída pela comunidade
que permite o incremento de threads
(ramp-up) ao longo de um
tempo pré-determinado
Exemplo
Melhores Práticas
Atirar
Simple Data Writer
Gerenciador de escrita em disco que não
interage com a interface gráfica (leve)
Exemplo de configuração
DICA
Por padrão, o Jmeter escreve o
timestamp como epoch time, altere para
uma forma mais legível alterando no
jmeter.properties
Caso 1: Teste com MQ
Nativamente, o Jmeter tem suporte ao protocolo MQ, no caso JMS
O JMS Point-to-Point envia uma mensagem única e exclusivamente
para uma destinada fila de uma aplicação de maneira assíncrona.
QueueConnection Factory
Nome JNDI (definição de um contexto que
específica aonde procurar um objeto, no
nosso caso um objeto no Websphere MQ)
da queue connection factory
(direcionamentos do depósito de
informações iniciais de filas) que será
utilizado para conectar com o sistema de
mensagem.JNDI name Request queue
Nome JNDI da fila já previamente criada Content
O conteúdo da mensagem que será enviada
Communication Style
Conforme o teste, deve ser escolhido entre request ou request-response
Caso 1: Teste com MQ
Initial Context Factory
É a definição para o JNDI aonde ele deve
começar a procura pelo contexto. Para contexto
de arquivos de sistema, preencha este campo
com
“com.sun.jndi.fscontext.RefFSContextFactory”.
Provider URL
Ao definir o contexto de busca por arquivos de sistema, neste campo é definido aonde este arquivo se
encontra, neste caso citando que ele deve abrir o arquivo presente na pasta onde o arquivo binding
foi gerado. Este campo deverá ficar preenchido da seguinte maneira: file:${caminho}.
Onde:
file: informo ao JMeter que ele deve abrir o primeiro arquivo que ele
encontrar dentro de um caminho específico
${caminho}: uma variável definida apontando o diretório onde o arquivo
se encontra do gerenciador de fila está gerado, com os apontamentos
devidos
Caso 1: Teste com MQ
O resultado de um teste para verificação,
deve ser assim:
Caso 2: Teste IceFaces e AjaxPush
Componente de visão é uma forma que o desenvolvedor tem de
armazenar a navegação do usuário entre “push” e “push back”,
do lado do cliente ou do lado do servidor
“The Horror!”
Viewstate windowstate
eventview
Expressões regulares bem aplicadas, conhecimento da aplicação
resolvem os problemas!
AjaxPush
Caso 2: Teste IceFaces e AjaxPush
Jmeter e Javascript/Ajax?
Oficialmente, não é suportado pelo Jmeter
requisições do tipo cliente side. Portanto,
para poder atualizar as requisições de uma
post, é necessário extrair dados de um
response.
DICA
O Jmeter respeita hierarquia. Uma vez
colocado expressão regular antes de
requisições, a mesma será aplicada
toda vez que as condições forem
atendidas
Exemplo de regex:
Caso 2: Teste IceFaces e AjaxPush
Desafio é conseguir simular de maneira correta o Ajax Push.
A requisição que aguarda pela atualiazação do icepush é um servlet que
bloqueia a requisição quando uma atualização da visão é realizada (tempo
padrão para este mecanismo é de 55 segundos). Se nenhuma atualização
estiver disponível após o tempo aguardado, uma resposta contendo o valor
<noop/> retorna como resposta da requisição.
SOBRE
O Ajax Push permite a aplicação atualizar qualquer parte da página em
qualquer
momento para qualquer grupo de usuários, através de requisições assíncronas
disparada pelo cliente ao servidor.
Caso 2: Teste IceFaces e AjaxPush
Para que seja visualizada uma atualização
do pushId, é necessário enviar na
requisição a ice.view daquele instante.
Logo após esta requisição, é feita uma
expressão regular para extrair a resposta
da mesma
Caso 2: Teste IceFaces e AjaxPush
Logo após a extração da resposta da requisição, é feita uma
verificação condicional através do If Controller. Caso a condição seja
satisfeita uma requisição a aplicação é feita com os novos dados
atualizados da página
IMPORTANTE
Ao final do ciclo da thread, deve ser enviado um submit
contendo o “dispose” da visão, para não sobrecarregar
a memória do servidor (simular usuário real)
Obrigado!
 Evandro Grezeli
 egrezeli@gmail.com
 http://br.linkedin.com/pub/evandro-grezeli/6/b88/719/en
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
27

Mais conteúdo relacionado

Mais procurados

Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceAlex Barbosa Coqueiro
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeterEdlaine Zamora
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliJoao Galdino Mello de Souza
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]rafael327780
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFJadson Santos
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Automacao testes automatizados
Automacao testes automatizadosAutomacao testes automatizados
Automacao testes automatizadosCristiano Caetano
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Vanilton Pinheiro
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSFabrício Campos
 
Testes de software
Testes de softwareTestes de software
Testes de softwareteste
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosCristiano Caetano
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Fernando Palma
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 

Mais procurados (20)

Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal Performance
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro Grezeli
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]
 
Testes ágeis
Testes ágeisTestes ágeis
Testes ágeis
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSF
 
Questionario CTFL - Foundation Level
Questionario CTFL - Foundation LevelQuestionario CTFL - Foundation Level
Questionario CTFL - Foundation Level
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Automacao testes automatizados
Automacao testes automatizadosAutomacao testes automatizados
Automacao testes automatizados
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATS
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticos
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 

Semelhante a Abrindo a caixa de ferramentas: atirando pedras com Jmeter

Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
Utilizando JMeter para realizar testes de carga em aplicações WEB
Utilizando JMeter para realizar testes de carga em aplicações WEBUtilizando JMeter para realizar testes de carga em aplicações WEB
Utilizando JMeter para realizar testes de carga em aplicações WEBFreedom DayMS
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de ServletsMarcio Marinho
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Edlaine Zamora
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
2 Ads
2 Ads2 Ads
2 Adslcbj
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareSaulo Arruda
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersElias Nogueira
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoBeatriz Makiyama Celestino
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
 

Semelhante a Abrindo a caixa de ferramentas: atirando pedras com Jmeter (20)

Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Testes de carga com j meter
Testes de carga com j meterTestes de carga com j meter
Testes de carga com j meter
 
Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2
 
Utilizando JMeter para realizar testes de carga em aplicações WEB
Utilizando JMeter para realizar testes de carga em aplicações WEBUtilizando JMeter para realizar testes de carga em aplicações WEB
Utilizando JMeter para realizar testes de carga em aplicações WEB
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 
Curso de Servlets
Curso de ServletsCurso de Servlets
Curso de Servlets
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
2 Ads
2 Ads2 Ads
2 Ads
 
Jmeter apresentacao
Jmeter apresentacaoJmeter apresentacao
Jmeter apresentacao
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
apache+ssl+Jserv
apache+ssl+Jservapache+ssl+Jserv
apache+ssl+Jserv
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 

Abrindo a caixa de ferramentas: atirando pedras com Jmeter

  • 1. Abrindo a Caixa de Ferramentas Atirando Pedras com Jmeter  Evandro Grezeli  egrezeli@gmail.com  Maio/2016 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 1
  • 2. Sobre Entusiasta em assuntos que tangem a desempenho de aplicação +10 anos de experiência com desenvolvimento de software Java e otimização de sistemas em baixa plataforma Manutenção e desenvolvimento de componentes para o Jmeter Colunista no site http://jmeter.com.br Especialista em capacidade e desempenho na maior companhia de meios de pagamento do Brasil Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 2
  • 3. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 3 ANTERIORMENTE NO CMG 2015...
  • 4. Em 2015... Falando de testes de desempenho Importância de testes de desempenho O conceito do tempo de resposta Reconhecimento do Ambiente Tipos de testes de desempenho Metodologia e Planejamento Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 4
  • 5. AGENDA Configurando o ambiente Modos de usar o Jmeter Melhores práticas para criar, testar e atirar Casos complexos e saídas (MQ e Framework com visão) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 5
  • 6. Configurando o ambiente Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 6
  • 7. Configurando o ambiente Pré requisitos mínimos*: * fonte oficial: http://jmeter.apache.org/usermanual/get-started.html OK, e...? … se eu quiser simular 1.000 usuários virtuais? … utilizar recursos visuais durante o teste? … trafegar todos os elementos da página? … utilizar beanshell durante o teste? … realizar validações em todos os passos do teste?
  • 8. Configurando o ambiente Jmeter é uma ferramenta que precisa de uma caixa dentro de uma caixa SO 2.5 GB Jmeter JVM 1.5 GB Ligado diretamente com a capacidade de memória (alocação de thread) E CPU (velocidade que as threads trabalham) Exemplo Intel Core i7 @ 2.20GHz 4 GB RAM DDR3 100 GB disco Cenário simples expressões regulares; output em arquivo; distribuição de peso nativa Na prática, a conta* é para cada thread criada no Jmeter, é necessário 2,5 MB disponível na JVM * pode variar de acordo com a forma que o Jmeter é inicializado, para mais!
  • 9. Modo de usar o JMeter GUI (para testes e criação) Linha de comando (apenas para teste) Onde: -n: indica que não deve ser aberta a GUI -t: o caminho do script que será executado -l: arquivo gerado com informações do teste DICA Interrompa os testes no modo non-gui utilizando os scripts stoptest.sh ou stoptest.cmd
  • 10. Modo de usar o JMeter Mestre e Escravo Certifique-se que: Mesma versão de Jmeter Mesma versão de JVM Massa de dados estão no local correto Iniciando o(s) escravo(s) Adicione o endereço do escravo no mestre No arquivo jmeter.properties
  • 11. Modo de usar o JMeter Mestre e Escravo Certifique-se que: Mesma versão de Jmeter Mesma versão de JVM Massa de dados estão no local correto Iniciando o(s) escravo(s) de forma non-GUI Onde: -n: indica que não deve ser aberta a GUI -t: o caminho do script que será executado -r: endereços dos servidores escravos presentes no properties
  • 12. Melhores Práticas Criar Basicamente, Jmeter se divide em duas áreas Testplan: Área destinada a colocar os elementos referentes ao teste Workbench: Área destinada a colocar os elementos que gravam requisições HTTP O que deve se atentar: Para facilitar na criação, na área “TestPlan”, adicione um “Thread Group” e use-o como “Target Controller” Agrupe as transações, definindo no combo box “Grouping” a opção “Put each group in a new transaction controller” Adicione as exclusões sugeridas, clicando no botão “Add suggested excludes” View results tree serve para visualizar a navegação já realizada
  • 13. Melhores Práticas Testar User Defined Variables Sempre tenha váriaveis locais no script, para dar fácil manutenção no mesmo Exemplo Endereço de diretórios para escrita de log, leitura de massa de dados; diferentes valores de endereços web (ambiente homologação, TI, produção) HTTP Cookie Manager Permita que o Jmeter gerencie os cookies da aplicação de forma automática HTTP Header Manager Toda requisição Web deve ter um cabeçalho, com este componente o mesmo é padronizado para todas as requisições
  • 14. Melhores Práticas Testar CSV Data Set Config Com este componente é possível utilizar um arquivo CSV (comma-separated-value) para massa de dados das requisições HTTP Request Defaults Todas as requisições Web possuem um caminho padronizado Response Assertion Verifica na resposta da requisição através de padrões de buscar por um trecho de texto específico, URL, código de resposta HTTP e resposta de um header
  • 15. Melhores Práticas Testar Throughput Controller Através deste componente é possível definir o peso de cada umas das requisições, em percentual Regular Expression Extractor Através de um motor de expressão regular baseado em Perl, é possível extrair informações de uma resposta web e utiliza-la posteriormente
  • 16. Melhores Práticas Testar View Results Tree Uma vez criado, editado e configurado o script, com este relatório é possível visualizar através de um simulador de navegador web como foi o request enviado e qual o seu response ATENÇÃO Este componente consome muita memória da JVM, portanto não esqueça de desabilita-lo antes de executar um teste pesado
  • 17. Melhores Práticas Atirar Ultimate Thread Group Uma biblioteca construída pela comunidade que permite o incremento de threads (ramp-up) ao longo de um tempo pré-determinado Exemplo
  • 18. Melhores Práticas Atirar Simple Data Writer Gerenciador de escrita em disco que não interage com a interface gráfica (leve) Exemplo de configuração DICA Por padrão, o Jmeter escreve o timestamp como epoch time, altere para uma forma mais legível alterando no jmeter.properties
  • 19. Caso 1: Teste com MQ Nativamente, o Jmeter tem suporte ao protocolo MQ, no caso JMS O JMS Point-to-Point envia uma mensagem única e exclusivamente para uma destinada fila de uma aplicação de maneira assíncrona. QueueConnection Factory Nome JNDI (definição de um contexto que específica aonde procurar um objeto, no nosso caso um objeto no Websphere MQ) da queue connection factory (direcionamentos do depósito de informações iniciais de filas) que será utilizado para conectar com o sistema de mensagem.JNDI name Request queue Nome JNDI da fila já previamente criada Content O conteúdo da mensagem que será enviada Communication Style Conforme o teste, deve ser escolhido entre request ou request-response
  • 20. Caso 1: Teste com MQ Initial Context Factory É a definição para o JNDI aonde ele deve começar a procura pelo contexto. Para contexto de arquivos de sistema, preencha este campo com “com.sun.jndi.fscontext.RefFSContextFactory”. Provider URL Ao definir o contexto de busca por arquivos de sistema, neste campo é definido aonde este arquivo se encontra, neste caso citando que ele deve abrir o arquivo presente na pasta onde o arquivo binding foi gerado. Este campo deverá ficar preenchido da seguinte maneira: file:${caminho}. Onde: file: informo ao JMeter que ele deve abrir o primeiro arquivo que ele encontrar dentro de um caminho específico ${caminho}: uma variável definida apontando o diretório onde o arquivo se encontra do gerenciador de fila está gerado, com os apontamentos devidos
  • 21. Caso 1: Teste com MQ O resultado de um teste para verificação, deve ser assim:
  • 22. Caso 2: Teste IceFaces e AjaxPush Componente de visão é uma forma que o desenvolvedor tem de armazenar a navegação do usuário entre “push” e “push back”, do lado do cliente ou do lado do servidor “The Horror!” Viewstate windowstate eventview Expressões regulares bem aplicadas, conhecimento da aplicação resolvem os problemas! AjaxPush
  • 23. Caso 2: Teste IceFaces e AjaxPush Jmeter e Javascript/Ajax? Oficialmente, não é suportado pelo Jmeter requisições do tipo cliente side. Portanto, para poder atualizar as requisições de uma post, é necessário extrair dados de um response. DICA O Jmeter respeita hierarquia. Uma vez colocado expressão regular antes de requisições, a mesma será aplicada toda vez que as condições forem atendidas Exemplo de regex:
  • 24. Caso 2: Teste IceFaces e AjaxPush Desafio é conseguir simular de maneira correta o Ajax Push. A requisição que aguarda pela atualiazação do icepush é um servlet que bloqueia a requisição quando uma atualização da visão é realizada (tempo padrão para este mecanismo é de 55 segundos). Se nenhuma atualização estiver disponível após o tempo aguardado, uma resposta contendo o valor <noop/> retorna como resposta da requisição. SOBRE O Ajax Push permite a aplicação atualizar qualquer parte da página em qualquer momento para qualquer grupo de usuários, através de requisições assíncronas disparada pelo cliente ao servidor.
  • 25. Caso 2: Teste IceFaces e AjaxPush Para que seja visualizada uma atualização do pushId, é necessário enviar na requisição a ice.view daquele instante. Logo após esta requisição, é feita uma expressão regular para extrair a resposta da mesma
  • 26. Caso 2: Teste IceFaces e AjaxPush Logo após a extração da resposta da requisição, é feita uma verificação condicional através do If Controller. Caso a condição seja satisfeita uma requisição a aplicação é feita com os novos dados atualizados da página IMPORTANTE Ao final do ciclo da thread, deve ser enviado um submit contendo o “dispose” da visão, para não sobrecarregar a memória do servidor (simular usuário real)
  • 27. Obrigado!  Evandro Grezeli  egrezeli@gmail.com  http://br.linkedin.com/pub/evandro-grezeli/6/b88/719/en Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 27