O documento descreve como usar o JMeter para testar o desempenho de uma aplicação JSF. Ele explica como instalar e configurar o JMeter, adicionando elementos como grupos de usuários, requisições HTTP e extrator de parâmetros para simular o login e navegação em uma aplicação JSF. Além disso, fornece dicas para visualizar e analisar os resultados dos testes de desempenho executados pelo JMeter.
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
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