Usando JMeter para testar sua aplicação JSF

2.097 visualizações

Publicada em

Testes de performance são uns dos testes fundamentais que toda equipe de desenvolvimento com o mínimo de profissionalismo deveria executar.
Essa apresentação mostra um exemplo básico de com usar JMeter para realizar testes de performance em aplicações web com JSF.

Publicada em: Software
1 comentário
5 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
2.097
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
88
Comentários
1
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Usando JMeter para testar sua aplicação JSF

  1. 1. Usando JMeter para testar sua aplicação JSF S Jadson Santos
  2. 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. 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. 4. JMeter + JSF S JMeter (instalação) S Baixar o arquivo em: S http://jmeter.apache.org/download_jmeter.cgi
  5. 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. 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. 7. JMeter + JSF S Plano de Teste S Todo teste com JMeter possui um plano de testes
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 22. JMeter + JSF S Testando o Login (visualizando os parâmetro da requisição pelo FireBug)
  23. 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. 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. 25. JMeter + JSF S Visualizando os resultados por meio de um Gráfico de Resultados
  26. 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. 27. JMeter + JSF S Um exemplo de Teste Completo no JMeter
  28. 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. 29. Usando JMeter para testar sua aplicação JSF S Jadson Santos

×