Guia de testes de desempenho

De MSTECH wiki
Revisão de 13h21min de 6 de dezembro de 2016 por Andre.iguera (Discussão | contribs) (Criação de cenários de teste no JMeter)

Ir para: navegação, pesquisa
Versão 0.2 de 06/12/2016. Documento em construçã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.