Guia de testes de desempenho
Versão 0.2 de 06/12/2016. Documento em construção.
Índice
- 1 Sobre este guia
- 2 Planejamento
- 2.1 Criação de cenários de teste no JMeter
- 2.1.1 Configurando um thread group
- 2.1.2 Adicionando elementos de configuração
- 2.1.3 Gravação de cenários utilizando proxy
- 2.1.4 Adicionando ouvintes
- 2.1.5 Analisando cabeçalhos/requisições/respostas HTTP com Árvore de resultados
- 2.1.6 Realizando extrações com RegExp
- 2.1.7 Configurando vazão e tempo de resposta variável
- 2.1.8 Tratando condicionais
- 2.1 Criação de cenários de teste no JMeter
- 3 Preparação do ambiente
- 4 Pré-execução
- 5 Execução dos testes
- 6 Análise dos resultados
- 7 Reexecução
Sobre este guia
Este guia visa reunir informações úteis para o aprendizado de testes de desempenho, bem como a utilização das ferramentas necessárias (JMeter, etc.).
Planejamento
A etapa de planejamento visa levantar as necessidades do projeto em relação ao teste de desempenho. Entre as questões a serem respondidas, estão:
- Qual o objetivo do teste?
- Qual pergunta deve ser respondida com o resultado do teste?
- Qual tipo de teste deve ser executado? Desempenho, Stress, Carga?
- Quais serão os cenários?
- Quais os prazos?
- Os cenários definidos são compatíveis com os prazos?
Criação de cenários de teste no JMeter
Configurando um thread group
Adicionando elementos de configuração
Gravação de cenários utilizando proxy
Adicionando ouvintes
Analisando cabeçalhos/requisições/respostas HTTP com Árvore de resultados
Realizando extrações com RegExp
Configurando vazão e tempo de resposta variável
Tratando condicionais
Preparação do ambiente
A equipe de desenvolvimento deve enviar o pacote para o DevOps realizar a atualização do ambiente de testes. A equipe do DevOps também pode auxiliar no entendimento da infra do cliente, a fim de simular o cenário ideal de teste.
Pré-execução
A etapa de pré-execução visa realizar as configurações necessárias nos softwares, ambientes e coletores, antes de iniciar o teste. As etapas são:
Preparar o relatório de resultados do JMeter
O JMeter será executado via linha de comando, a fim de que sua GUI não interfira nos contadores. Sendo assim, devemos configurar o ouvinte para salvar o relatório.
- Utilizar o ouvinte Escritor de dados simples
- Inserir um caminho no campo Nome do arquivo
Verificar se o arquivo .jmx é o mesmo no Master e nos Slaves
O arquivo .jmx deve ser o mesmo no Master e nos Slaves do JMeter.
Preparar os coletores do Perfmon nos servidores WEB, SQL e ARR
- Para cada servidor WEB, acessar o Performance Monitor / Data Collector Sets / User Defined / Nome do coletor
- Verificar o caminho onde será salvo o arquivo em cada servidor
- Dar play para começar a gravar e depois dar play no teste
Definir e configurar os Slaves
- Quantos slaves utilizar? Com 50-100 usuários, geralmente 1 slave basta. Ou quando a memória está comprometida em mais de 75%.
- Quais slaves utilizar? No Master, editar o nome dos slaves no arquivo /bin/Jmeter.properties.
Execução dos testes
- Nos slaves, iniciar o arquivo /bin/jmeter.server como admin
- Iniciar a gravação dos contatores do Perfmon em todos os servidores
- No master, iniciar o teste via prompt de comando:
- Navegar no prompt até a pasta bin do JMeter
- Executar o comando:
jmeter.bat -n -t "caminho do arquivo de teste" -l "caminho pro arquivo de log de resultado" -j "caminho pro arquivo de log do jmeter" -r
Análise dos resultados
- Acessar as VMs e coletar os arquivos de resultados do perfmon (WEB, SQL e ARR) e o CSV do JMeter.
- Separar esses arquivos em pastas por quantidade de usuários do teste, para melhor organização
- Rodar o script de Queries mais lentas
- Avg CPI Time (formatado), Tempo decorrido (formatado) e Instrução completa
- Verificar os logs de erro
- Estão em uma tabela do BD
- Em caso de dúvidas, tirar com a equipe de DEV
- Tabular os dados
A análise dos dados deve ser feita com cuidado. Não é possível analisar os contadores separadamente. É necessário analisar todo o contexto do sistema e do ambiente.
Reexecução
Para realizar nova bateria de testes, com mais usuários por exemplo:
- Restaurar o backup do BD
- Limpar os caches dos sites, se necessário
- Reiniciar o SQL, se necessário - o SQL não desaloca a memória imediatamente após a carga, o que pode impactar nos resultados de outros testes.