SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Usando JMeter para 
testar sua aplicação JSF 
S 
Jadson Santos
JMeter + JSF 
S Testes de desempenho e estresse 
S Testam um sistema quanto aos seus requisitos de 
desempenho 
S Latência: tempo entre uma requisição e a resposta da operação 
S Vazão (throughput): o número de operações que o sistema é 
capaz de completar em um dado período de tempo 
S Escalabilidade: A quantidade de usuários simultâneos que o 
sistema pode lidar 
S Recursos: Processamento e Memória
JMeter + JSF 
S JMeter 
S Testes de desempenho em aplicações cliente/servidor 
S Escrita em Java 
S Suporte a diversos protocolos: HTTP, JDBC, FPT, SOAP 
S Pode ser usada para testes funcionais 
S Possui várias asserções que podem ser usadas para verificar 
resultados das requisições
JMeter + JSF 
S JMeter (instalação) 
S Baixar o arquivo em: 
S http://jmeter.apache.org/download_jmeter.cgi
JMeter + JSF 
S JMeter (instalação) 
S Descompactar e executar o arquivo 
S bin/jmeter.bat (windows) ou bin/jmeter.sh (macOS/Linux)
JMeter + JSF 
S JMeter componentes básicos: 
S Plano de Teste: Configurações do seu teste 
S Área de Trabalho: Área de armazenamento temporária 
S Grupo de Usuários: Grupo de usuários virtuais que serão os 
usuários que executarão os testes (cada usuário é uma thread 
criada pelo JMeter) 
S O JMeter funciona de forma hierárquica, o nó raiz é o 
plano de testes, abaixo dele vem o grupo de usuários, 
abaixo desse grupo os demais elementos. 
S O JMeter executa o plano de testes de acordo com a ordem 
desses elementos na árvore
JMeter + JSF 
S Plano de Teste 
S Todo teste com JMeter possui um plano de testes
JMeter + JSF 
S Grupo de Usuários 
S Para criar um teste deve-se obrigatoriamente adicionar um 
grupo de usuários ao plano de testes. 
S Adicionar -> (Threads) Users -> Grupos de Usuários
JMeter + JSF 
S Grupo de Usuários 
S Na figura abaixo estamos configurando para 1000 usuários 
executarem o teste dento de 60 segundos com 1 repetição e os 
testes devem continuar caso algum dos usuários falhe 
S Todos os demais elementos do teste devem ficar dentro do 
Grupo de Usuários
JMeter + JSF 
S Padrões de Requisição HTTP e Gerenciador de Cookie 
HTTP 
S Adicione ao grupo de usuários um padrão de requisições 
HTTP e um gerenciador de Cookie que limpe os cookies 
gerados, de forma que eles não atrapalhem o resultado do seu 
teste.
JMeter + JSF 
S Padrões de Requisição HTTP 
S Adicionar -> Elementos de Configuração -> Padrões de 
Requisições HTTP 
S Gerenciador de Cookie HTTP 
S Adicionar -> Elementos de Configuração -> Gerenciador de 
Cookie HTTP
JMeter + JSF 
S Integração com JSF 
S Para simular o parâmetro ViewState passado em toda 
requisição do JSF, adicione um extrator de expressão regular 
com os seguintes dados: 
S Adicionar –> Pós Processadores -> Extrator de Expressão 
Regular 
Nome de 
Referência 
jsfViewState 
Expressão Regular <input type="hidden" name="javax.faces.ViewState" id="javax 
.faces.ViewState" value="([^"]+)".*/> 
Modelo $1$ 
Número de 
0 
Combinações
JMeter + JSF 
S Fluxo do seu teste 
S Para um teste simples, adicione um controlador lógico que 
executa uma única vez. 
S Adicionar -> Controlador Lógico -> Controlador de Uma 
Única Vez 
S Neste ponto a estrutura do seu teste deve está confirme a 
figura abaixo:
JMeter + JSF 
S Requisições HTTP 
S A navegação pelas páginas JSF da aplicação é realizada 
por meio de requisições HTTP 
S Crie dentro do controlador uma requisição HTTP para 
chamar a página de login da sua aplicação 
S Adicionar -> Testador -> Requisição HTTP
JMeter + JSF 
S Requisições HTTP 
S Adicione as seguintes informações à requisição HTTP: 
S Nome do Servidor ou IP: localhost 
S Porta: 8080 
S Implementação: Java 
S Protocolo: Http 
S Método: GET 
S Caminho: adicione o caminho para a página JSF de login, a partir 
do contexto do sistema
JMeter + JSF 
S Requisições HTTP 
S Ao mandar executar o teste, conforme foi configurado no 
grupo de usuários, 1000 requisições em 1 minuto serão 
feitas a essa página
JMeter + JSF 
S Testando o Login 
S A próxima ação que o usuário realiza após acessar a página 
de login é digitar o usuário e a senha e realizar o login. 
S Para simular esse comportamento, crie outra requisição 
HTTP
JMeter + JSF 
S Testando o Login 
S Digite as mesmas informações utilizadas na 1ª requisição à 
tela de login (é possível duplicar as informações de outro 
elemento no JMeter). 
S A única diferença é que para simular uma ação JSF é preciso 
mudar o método da requisição HTTP de GET para POST. 
S Em seguida, deve-se digitar os parâmetros da requisição que 
serão os dado passados ao servidor para executar a ação de 
logar no sistema
JMeter + JSF 
S Testando o Login 
S Os três parâmetros abaixo são os valores dos parâmetros 
passados pelo JSF em toda requisição realizada 
S Então eles são obrigatórios em toda requisição HTTP criada 
no JMeter para realizar o teste de performance do seu 
sistema. 
Nome Valor Codificar 
myForm%3A_SUBMIT 1 false 
myForm%3A_link_hidden_ false 
javax.faces.ViewState ${jsfViewState} 
S jsfViewState é a variável criada no extrator de expressão 
regular, como esse extrator está definido dentro do mesmo 
grupo de usuários, ela é enxergada pela sua requisição 
HTTP
JMeter + JSF 
S Testando o Login 
S Após isso, deve-se informar os parâmetros que seriam os 
dados digitados pelo usuário. Sendo que o formulário a ser 
submetido deve estar entre os parâmetros 
Nome Valor Codificar 
myForm myForm false 
myForm:inputLogin joao true 
myForm:inputSenha 123 true 
myForm:buttonLogar myForm:buttonLogar true 
S Codificar = true pode usar o “:” no id do campo 
S Codificar = false deve-se digitar “%3A” em vez do “:”
JMeter + JSF 
S Testando o Login 
S Uma maneira de saber quais são os parâmetros a serem 
informados é executar a ação pelo navegador utilizando o 
FireBug ( https://getfirebug.com/ ) 
S Pelo FireBug, na aba Redes -> Clicar na página principal 
requisitada -> Postar 
S Aparecem os parâmetros que o JSF passa ao executar a ação. 
São os mesmo parâmetros que devem ser informados no 
JMeter.
JMeter + JSF 
S Testando o Login (visualizando os parâmetro da requisição 
pelo FireBug)
JMeter + JSF 
S Testando o Login 
S Uma boa prática de programação é colocar um “id” em 
todos os campos das páginas JSF. 
S Essa prática também irá ajudar a identificar os parâmetros 
necessário na requisição. Veja abaixo uma página JSF sem 
ids como fica difícil de interpretar:
JMeter + JSF 
S Visualizando os resultados 
S Para ajudar a analisar os resultados do teste, existem vários 
“ouvintes” que podem ser adicionados ao grupo de usuários. 
S Adicionar -> Ouvintes -> Gráfico de Resultados 
S Nesse gráfico é possível ver entre outra medidas: vazão, 
tempo médio das requisições, etc
JMeter + JSF 
S Visualizando os resultados por meio de um Gráfico de 
Resultados
JMeter + JSF 
S As requisições as demais páginas do sistema podem ser 
simuladas de maneira similar, adicionado outras 
requisições HTTP
JMeter + JSF 
S Um exemplo de Teste Completo no JMeter
JMeter + JSF 
S Conclusões 
S O JMeter é um ferramenta poderosa para realizar teste de 
performance do seu sistema 
S Existem centenas de outras opções que podem ser 
configuradas para testes mais complexos 
S É muito importante que pelo menos as operações mais 
utilizadas do seu sistema possuam testes de performance
Usando JMeter para 
testar sua aplicação JSF 
S 
Jadson Santos

Contenu connexe

Tendances

Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
Chat Room System using Java Swing
Chat Room System using Java SwingChat Room System using Java Swing
Chat Room System using Java SwingTejas Garodia
 
Jmeter memory profiling, server-side monitoring, memory and cpu monitoring
Jmeter memory profiling, server-side monitoring, memory and cpu monitoringJmeter memory profiling, server-side monitoring, memory and cpu monitoring
Jmeter memory profiling, server-side monitoring, memory and cpu monitoringPankaj Biswas
 
Basic of jMeter
Basic of jMeter Basic of jMeter
Basic of jMeter Shub
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
Node.js File system & Streams
Node.js File system & StreamsNode.js File system & Streams
Node.js File system & StreamsEyal Vardi
 
SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?태환 김
 
XSS Cheat Sheet
XSS Cheat Sheet XSS Cheat Sheet
XSS Cheat Sheet newedgecs
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Async Tasks with Django Channels
Async Tasks with Django ChannelsAsync Tasks with Django Channels
Async Tasks with Django ChannelsAlbert O'Connor
 
Selenium Automation in Java Using HttpWatch Plug-in
 Selenium Automation in Java Using HttpWatch Plug-in  Selenium Automation in Java Using HttpWatch Plug-in
Selenium Automation in Java Using HttpWatch Plug-in Sandeep Tol
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js IntroductionSaray Chak
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaEdureka!
 
Loadrunner vs Jmeter
Loadrunner vs JmeterLoadrunner vs Jmeter
Loadrunner vs JmeterAtul Pant
 
Ajax presentation
Ajax presentationAjax presentation
Ajax presentationengcs2008
 
Selenium interview questions and answers
Selenium interview questions and answersSelenium interview questions and answers
Selenium interview questions and answerskavinilavuG
 

Tendances (20)

Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Chat Room System using Java Swing
Chat Room System using Java SwingChat Room System using Java Swing
Chat Room System using Java Swing
 
Jmeter memory profiling, server-side monitoring, memory and cpu monitoring
Jmeter memory profiling, server-side monitoring, memory and cpu monitoringJmeter memory profiling, server-side monitoring, memory and cpu monitoring
Jmeter memory profiling, server-side monitoring, memory and cpu monitoring
 
Basic of jMeter
Basic of jMeter Basic of jMeter
Basic of jMeter
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Node.js File system & Streams
Node.js File system & StreamsNode.js File system & Streams
Node.js File system & Streams
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?
 
Selenium presentation
Selenium presentationSelenium presentation
Selenium presentation
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Aula 06 softwares
Aula 06   softwaresAula 06   softwares
Aula 06 softwares
 
XSS Cheat Sheet
XSS Cheat Sheet XSS Cheat Sheet
XSS Cheat Sheet
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Async Tasks with Django Channels
Async Tasks with Django ChannelsAsync Tasks with Django Channels
Async Tasks with Django Channels
 
Selenium Automation in Java Using HttpWatch Plug-in
 Selenium Automation in Java Using HttpWatch Plug-in  Selenium Automation in Java Using HttpWatch Plug-in
Selenium Automation in Java Using HttpWatch Plug-in
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js Introduction
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
Loadrunner vs Jmeter
Loadrunner vs JmeterLoadrunner vs Jmeter
Loadrunner vs Jmeter
 
Ajax presentation
Ajax presentationAjax presentation
Ajax presentation
 
Selenium interview questions and answers
Selenium interview questions and answersSelenium interview questions and answers
Selenium interview questions and answers
 

Similaire à Teste desempenho JSF com JMeter

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareSaulo Arruda
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeterEdlaine Zamora
 
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterAbrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterEvandro Grezeli
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
 
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
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphihildebertomelo
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
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
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de DesempenhoBase2 Tecnologia
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8maxrosan
 
18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpaitgfiles
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Rogerio Cordeiro
 
Documento de requisitos_-_especificacoes 01
Documento de requisitos_-_especificacoes 01Documento de requisitos_-_especificacoes 01
Documento de requisitos_-_especificacoes 01gtiprotec
 

Similaire à Teste desempenho JSF com JMeter (20)

Testes de carga com j meter
Testes de carga com j meterTestes de carga com j meter
Testes de carga com j meter
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Jmeter apresentacao
Jmeter apresentacaoJmeter apresentacao
Jmeter apresentacao
 
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterAbrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
Daw slide 06
Daw slide 06Daw slide 06
Daw slide 06
 
J Meter
J MeterJ Meter
J Meter
 
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
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
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
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
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
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
 
18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)
 
Documento de requisitos_-_especificacoes 01
Documento de requisitos_-_especificacoes 01Documento de requisitos_-_especificacoes 01
Documento de requisitos_-_especificacoes 01
 

Plus de Jadson Santos

Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaJadson Santos
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuJadson Santos
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous DeliveryJadson Santos
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed LockJadson Santos
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...Jadson Santos
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizadaJadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 PresentationJadson Santos
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Jadson Santos
 

Plus de Jadson Santos (18)

Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and Heroku
 
Vue.js
Vue.jsVue.js
Vue.js
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Java8
Java8Java8
Java8
 
Gradle
GradleGradle
Gradle
 
Git
GitGit
Git
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
 
Enums
EnumsEnums
Enums
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
 

Teste desempenho JSF com JMeter

  • 1. Usando JMeter para testar sua aplicação JSF S Jadson Santos
  • 2. JMeter + JSF S Testes de desempenho e estresse S Testam um sistema quanto aos seus requisitos de desempenho S Latência: tempo entre uma requisição e a resposta da operação S Vazão (throughput): o número de operações que o sistema é capaz de completar em um dado período de tempo S Escalabilidade: A quantidade de usuários simultâneos que o sistema pode lidar S Recursos: Processamento e Memória
  • 3. JMeter + JSF S JMeter S Testes de desempenho em aplicações cliente/servidor S Escrita em Java S Suporte a diversos protocolos: HTTP, JDBC, FPT, SOAP S Pode ser usada para testes funcionais S Possui várias asserções que podem ser usadas para verificar resultados das requisições
  • 4. JMeter + JSF S JMeter (instalação) S Baixar o arquivo em: S http://jmeter.apache.org/download_jmeter.cgi
  • 5. JMeter + JSF S JMeter (instalação) S Descompactar e executar o arquivo S bin/jmeter.bat (windows) ou bin/jmeter.sh (macOS/Linux)
  • 6. JMeter + JSF S JMeter componentes básicos: S Plano de Teste: Configurações do seu teste S Área de Trabalho: Área de armazenamento temporária S Grupo de Usuários: Grupo de usuários virtuais que serão os usuários que executarão os testes (cada usuário é uma thread criada pelo JMeter) S O JMeter funciona de forma hierárquica, o nó raiz é o plano de testes, abaixo dele vem o grupo de usuários, abaixo desse grupo os demais elementos. S O JMeter executa o plano de testes de acordo com a ordem desses elementos na árvore
  • 7. JMeter + JSF S Plano de Teste S Todo teste com JMeter possui um plano de testes
  • 8. JMeter + JSF S Grupo de Usuários S Para criar um teste deve-se obrigatoriamente adicionar um grupo de usuários ao plano de testes. S Adicionar -> (Threads) Users -> Grupos de Usuários
  • 9. JMeter + JSF S Grupo de Usuários S Na figura abaixo estamos configurando para 1000 usuários executarem o teste dento de 60 segundos com 1 repetição e os testes devem continuar caso algum dos usuários falhe S Todos os demais elementos do teste devem ficar dentro do Grupo de Usuários
  • 10. JMeter + JSF S Padrões de Requisição HTTP e Gerenciador de Cookie HTTP S Adicione ao grupo de usuários um padrão de requisições HTTP e um gerenciador de Cookie que limpe os cookies gerados, de forma que eles não atrapalhem o resultado do seu teste.
  • 11. JMeter + JSF S Padrões de Requisição HTTP S Adicionar -> Elementos de Configuração -> Padrões de Requisições HTTP S Gerenciador de Cookie HTTP S Adicionar -> Elementos de Configuração -> Gerenciador de Cookie HTTP
  • 12. JMeter + JSF S Integração com JSF S Para simular o parâmetro ViewState passado em toda requisição do JSF, adicione um extrator de expressão regular com os seguintes dados: S Adicionar –> Pós Processadores -> Extrator de Expressão Regular Nome de Referência jsfViewState Expressão Regular <input type="hidden" name="javax.faces.ViewState" id="javax .faces.ViewState" value="([^"]+)".*/> Modelo $1$ Número de 0 Combinações
  • 13. JMeter + JSF S Fluxo do seu teste S Para um teste simples, adicione um controlador lógico que executa uma única vez. S Adicionar -> Controlador Lógico -> Controlador de Uma Única Vez S Neste ponto a estrutura do seu teste deve está confirme a figura abaixo:
  • 14. JMeter + JSF S Requisições HTTP S A navegação pelas páginas JSF da aplicação é realizada por meio de requisições HTTP S Crie dentro do controlador uma requisição HTTP para chamar a página de login da sua aplicação S Adicionar -> Testador -> Requisição HTTP
  • 15. JMeter + JSF S Requisições HTTP S Adicione as seguintes informações à requisição HTTP: S Nome do Servidor ou IP: localhost S Porta: 8080 S Implementação: Java S Protocolo: Http S Método: GET S Caminho: adicione o caminho para a página JSF de login, a partir do contexto do sistema
  • 16. JMeter + JSF S Requisições HTTP S Ao mandar executar o teste, conforme foi configurado no grupo de usuários, 1000 requisições em 1 minuto serão feitas a essa página
  • 17. JMeter + JSF S Testando o Login S A próxima ação que o usuário realiza após acessar a página de login é digitar o usuário e a senha e realizar o login. S Para simular esse comportamento, crie outra requisição HTTP
  • 18. JMeter + JSF S Testando o Login S Digite as mesmas informações utilizadas na 1ª requisição à tela de login (é possível duplicar as informações de outro elemento no JMeter). S A única diferença é que para simular uma ação JSF é preciso mudar o método da requisição HTTP de GET para POST. S Em seguida, deve-se digitar os parâmetros da requisição que serão os dado passados ao servidor para executar a ação de logar no sistema
  • 19. JMeter + JSF S Testando o Login S Os três parâmetros abaixo são os valores dos parâmetros passados pelo JSF em toda requisição realizada S Então eles são obrigatórios em toda requisição HTTP criada no JMeter para realizar o teste de performance do seu sistema. Nome Valor Codificar myForm%3A_SUBMIT 1 false myForm%3A_link_hidden_ false javax.faces.ViewState ${jsfViewState} S jsfViewState é a variável criada no extrator de expressão regular, como esse extrator está definido dentro do mesmo grupo de usuários, ela é enxergada pela sua requisição HTTP
  • 20. JMeter + JSF S Testando o Login S Após isso, deve-se informar os parâmetros que seriam os dados digitados pelo usuário. Sendo que o formulário a ser submetido deve estar entre os parâmetros Nome Valor Codificar myForm myForm false myForm:inputLogin joao true myForm:inputSenha 123 true myForm:buttonLogar myForm:buttonLogar true S Codificar = true pode usar o “:” no id do campo S Codificar = false deve-se digitar “%3A” em vez do “:”
  • 21. JMeter + JSF S Testando o Login S Uma maneira de saber quais são os parâmetros a serem informados é executar a ação pelo navegador utilizando o FireBug ( https://getfirebug.com/ ) S Pelo FireBug, na aba Redes -> Clicar na página principal requisitada -> Postar S Aparecem os parâmetros que o JSF passa ao executar a ação. São os mesmo parâmetros que devem ser informados no JMeter.
  • 22. JMeter + JSF S Testando o Login (visualizando os parâmetro da requisição pelo FireBug)
  • 23. JMeter + JSF S Testando o Login S Uma boa prática de programação é colocar um “id” em todos os campos das páginas JSF. S Essa prática também irá ajudar a identificar os parâmetros necessário na requisição. Veja abaixo uma página JSF sem ids como fica difícil de interpretar:
  • 24. JMeter + JSF S Visualizando os resultados S Para ajudar a analisar os resultados do teste, existem vários “ouvintes” que podem ser adicionados ao grupo de usuários. S Adicionar -> Ouvintes -> Gráfico de Resultados S Nesse gráfico é possível ver entre outra medidas: vazão, tempo médio das requisições, etc
  • 25. JMeter + JSF S Visualizando os resultados por meio de um Gráfico de Resultados
  • 26. JMeter + JSF S As requisições as demais páginas do sistema podem ser simuladas de maneira similar, adicionado outras requisições HTTP
  • 27. JMeter + JSF S Um exemplo de Teste Completo no JMeter
  • 28. JMeter + JSF S Conclusões S O JMeter é um ferramenta poderosa para realizar teste de performance do seu sistema S Existem centenas de outras opções que podem ser configuradas para testes mais complexos S É muito importante que pelo menos as operações mais utilizadas do seu sistema possuam testes de performance
  • 29. Usando JMeter para testar sua aplicação JSF S Jadson Santos