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 Instalando o JMeter
- 2.1.2 Instalando plugins
- 2.1.3 Configurando um thread group
- 2.1.4 Adicionando elementos de configuração
- 2.1.5 Gravação de cenários utilizando proxy
- 2.1.6 Adicionando ouvintes
- 2.1.7 Analisando cabeçalhos/requisições/respostas HTTP com Árvore de resultados
- 2.1.8 Realizando extrações com RegExp
- 2.1.9 Configurando vazão e tempo de resposta variável
- 2.1.10 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
Uma ferramenta opensource, desenvolvida para criar e executar testes de carga em serviços computacionais. Para a elaboração dos planos de teste, o Jmeter pode te ajudar em:
- Configurar diversos tipos de requisição;
- Criar loops e condições lógicas para cada requisição;
- Importar dados para o plano através de arquivo .csv
- Simular ataque ao servidor
Instalando o JMeter
O JMeter está disponível para download gratuito em http://jmeter.apache.org/download_jmeter.cgi
Instalando plugins
O JMeter possui diversos plugins. Estes plugins podem, pode exemplo, oferecer suporte ao JUnit, MongoDP, webdriver, oferecer novos ouvintes, monitorar servidores, etc. Os plugins estão disponíveis em https://jmeter-plugins.org
Os plugins devem ser instalados na pasta [JMETER_HOME]/lib
Principais plugins:
- Ultimate Thread Group
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.
Principais contadores
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.