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

Usando JMeter para testar sua aplicação JSF

  • 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