Upload
edlaine-zamora
View
232
Download
6
Embed Size (px)
Citation preview
Testes de Performance com JMeterComo interpretar resultados e otimizar a execução
Edlaine ZamoraDesenvolvedora Java Web
Beatriz CelestinoAnalista de testes
Agenda
•Introdução aos testes de Performance
•Estratégias de testes de Performance
•Ferramenta JMeter
•Exemplos de melhorias detectadas no teste
•Hands-on
•Dicas e sugestões de boas práticas
Introdução aos testes de PerformancePor que testar o desempenho?
Introdução aos testes de Performance
Teste de performance é aquele em que submetemos o sistema a uma avaliação de carga, stress ou desempenho para avaliar se os resultados estão de acordo com o esperado, garantindo assim a qualidade do sistema.
Estratégias de testes de performance
● Teste de carga
Testa o software sob as condições normais de uso. Ex.: tempo de resposta, número de transações por minuto, usuários simultâneos etc. O teste é iniciado com uma carga baixa e vai aumentando gradativamente.Quantas transações serão suportadas por minuto quando aumentarmos os usuários simultâneos para 2.000, 3.000, 4.000?
Estratégias de testes de performance● Teste de desempenho (estabilidade)
Testa se o sistema se mantém funcionando de maneira satisfatória após um período de uso. Serve para medirmos o que a aplicação já suporta. É executado com uma carga constante e mantido por horas. Neste caso, é feita a análise do tempo de resposta do sistema. A aplicação suporta 1.000 transações por minuto com 1.000 usuários simultâneos?
Estratégias de testes de performance
● Teste de stressTesta o software sob condições extremas de uso. Grande volume de transações e usuários simultâneos. Picos excessivos de carga em curtos períodos de tempo.Quantas transações por minuto solicitadas por 5.000, 6.000, 7.000 usuários simultâneos, serão suportadas pela aplicação sob condições não especificadas do software e até mesmo do próprio hardware?
Processo
Ferramenta
JMeter
• Gratuito e Multiplataforma• Gera dados em CSV, Gráficos e Tabelas• Execução distribuída• Controle de variáveis• Suporta programação• Suporta diversos tipos de servidores: web - HTTP,
HTTPS, SOAP, Database via JDBC, LDAP, JMS, MAIL - POP3, etc.
JMeter - Processo
Ferramenta
JMeter
• Tempo da amostra: Tempo total da requisição em m/s.
• Estado: Mostra se a requisição foi executada com sucesso ou se houve falhas.
• Bytes: Quantidade de dados retornados pelo servidor.
Exemplos melhorias detectadas nos testes
Aumentar recursos de
hardware do servidor
(CPU, RAM, discos).
Exemplos melhorias detectadas nos testes
Diminuir tamanho ou número de
arquivos como CSS, imagens,
JavaScript, ícones, entre outros.
(Minificação e Sprite CSS)
Exemplos melhorias detectadas nos testes
Otimizar algoritmos.
Exemplos melhorias detectadas nos testes
Utilizar cache de dados que
possui um maior desempenho
ou otimizar o atual banco de
dados.
Hands-on• Infraestrutura: JMeter, Firefox e Java.• Qual sistema vamos testar?
Sistema alvo: http://jmeterapp.herokuapp.com/
Hands-on
• Adicionar e configurar Grupo de usuário (Thread Group)
Hands-on
• Adicionar Área de trabalho (WorkBench)
Hands-on• Configurar Área de trabalho
Hands-on• Configuração do Firefox
Hands-on
• Salvar o Plano de teste
Hands-on
- Gravar o Cenário Acessar o sistema
Hands-on- Adicionar “Ouvinte”
Hands-on
- Tempo de execução- Tempo de Carga - Latência
- Número dos usuários ativos- Limpar os testes
Hands-on
• Refatorar os testes• Renomear as requisições
Hands-on
• Adicionar variáveis
- Plano de teste
Hands-on
- Variáveis Definidas Pelo Usuário
Hands-on
• Gravação de Login• Refatorar• Executar
Hands-on
• Erro da execução
• Correlação de dados• EX: TOKEN, VIEWSTATE, JSESSIONID...
Hands-on
• Adicionar o “Debug pós-processador”
- Executar
Hands-on
• Adicionar o Extractor de Expressão Regular• CSRF-TOKEN=(.*)
Hands-on
• Adicionar o “Gerenciador de Cookie HTTP”
Hands-on
- Substituir as variáveis
- Executar
Hands-on
• Continuar a gravação… • Terminar o Cenário 1 com o logout
• Cenário 2: Cadastro de Pessoa
Hands-on• Parametrização com DDT
• Criar um arquivo “.txt”
• Configuração dos dados CSV
Hands-on
Outra opção: Dados randômicos
__Random(1,10000000)
Hands-on
- Relatório de Sumário
Hands-on
• Adicionar asserções• Asserção de Duração
Hands-on
• Adicionar asserções• Asserção de Resposta
Hands-on
• Configuração Asserções de Resposta
Hands-on
• Extractor XPath• Não é recomendável.
• Localização por xpath
html/head/title/text()
Hands-on
• Configuração da Conexão JDBC
URL do Banco:
jdbc:postgresql://ec2-54-243-249-144.compute-1.amazonaws.com:5432/d6bvvp0adntg09?ssl
=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
Classe driver JDBC:org.postgresql.Driver
user: lgwbjatlrtmhga
senha: Xw1tyF-dMibSMfWulBQHfsP0Xk
Cuidado com o espaço vazio
Hands-on
Hands-on
• Requisição JDBC
Hands-on
• Configuração Requisição JDBC
Hands-on
• Passar parâmetro
Remote Control
• São divididas entre: Master e Slave;
• Para configuração da Master:• Configuração do jmeter.properties
Remote Control
• Para configuração SLAVE:• Configuração do jmeter.properties
• Executar o jmeter-server.bat com a porta
Ferramentas
- Web Page Analyzerhttp://www.websiteoptimization.com/services/analyze/
- PageSpeed Insightshttps://developers.google.com/speed/pagespeed/insights/
- Medir banda largahttp://www.brasilbandalarga.com.br/index.php/speedtest
Ferramentas
• JVisualVM
• Monitor de desempenho
• NewRelic*
• BlazeMeter*
• BlazeMeter Sense*
14 dicas e sugestões de boas práticas
1. Use o mínimo de “ouvintes” possíveis na execução.
14 dicas e sugestões de boas práticas
2. Use “árvore de resultados” apenas com o log de erros ativo.
14 dicas e sugestões de boas práticas
3. Aumente a memória heap do JMeter para até 75% da capacidade
do computador que está executando os testes.
Evite o Out Of Memory Error.
14 dicas e sugestões de boas práticas
4. Mantenha seu banco de dados controlado.
14 dicas e sugestões de boas práticas
5. Analise a capacidade do computador.
14 dicas e sugestões de boas práticas
6. Use o modo não-GUI: jmeter -n -t teste.jmx -l test.jtl
14 dicas e sugestões de boas práticas
7. Habilite/mexa nas propriedades do JMeter, seja curioso (a).
• Habilitar Cookie/ RMI / LOG são os principais
14 dicas e sugestões de boas práticas
8. Saiba da existência do redirecionamento de hosts
• C:\Windows\System32\drivers\etc\hosts
14 dicas e sugestões de boas práticas
9. Mantenha a infra-estrutura de testes o mais próximo possível do
ambiente de produção.
14 dicas e sugestões de boas práticas
10. Envolva testadores, administradores de banco de dados, arquiteto
de rede, de software e desenvolvedores no processo.
14 dicas e sugestões de boas práticas
11. Salve os dados em CSV em vez de XML.
14 dicas e sugestões de boas práticas
12. Não execute os testes na rede local.
14 dicas e sugestões de boas práticas
13. Execute o mesmo conjunto de testes várias vezes no mesmo
dia e durante vários dias na semana para garantir que os resultados
são consistentes.
14 dicas e sugestões de boas práticas
14. Stakeholders não querem relatório com gráficos e tabelas
confusas, eles querem conclusões e sugestões
Refênciashttp://jmeter.apache.org/usermanual/index.html
http://www.freetest.net.br/downloads/Ferramentas/JMeter/Manual_JMeter.
https://msdn.microsoft.com/en-us/library/bb924375.aspx
http://jmeter.com.br/2013/02/como-rodar-o-jmeter-sem-interface-grafica/
http://jmeter.com.br/2013/04/extraia-o-maximo-de-performance-do-jmeter/
http://www.w3ii.com/en-US/jmeter/jmeter_best_practices.html