usando jmeter para testar sua aplicação jsf
TRANSCRIPT
S
Usando JMeter para testar sua aplicação JSF
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 Combinações
0
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.
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
Nome Valor Codificar
myForm%3A_SUBMIT 1 false
myForm%3A_link_hidden_ false
javax.faces.ViewState ${jsfViewState}
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
S Codificar = true pode usar o “:” no id do campo
S Codificar = false deve-se digitar “%3A” em vez do “:”
Nome Valor Codificar
myForm myForm false
myForm:inputLogin joao true
myForm:inputSenha 123 true
myForm:buttonLogar myForm:buttonLogar true
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
S
Usando JMeter para testar sua aplicação JSF
Jadson Santos