Introdução aos testes de desempenho usando o JMeter
*1. Visão geral *
Neste artigo, vamos usar o Apache JMeter para configurar e executar testes de desempenho.
===* 2. Configurando o JMeter *
Vamos download do JMeter, descompacte-o, vá para a pasta bin e execute o executável ( . Bat para Windows e . Sh para Linux/Unix).
Em seguida, basta adicionar esta pasta à variável de ambiente do caminho, para que seja acessível a partir da linha de comando.
A versão mais estável no momento da redação deste documento é a 3.3 - podemos verificar a versão mais recente aqui.
*3. Criando scripts JMeter *
Agora* vamos escrever nosso primeiro script JMeter (um arquivo que contém uma descrição técnica de nossos testes). *
Essa API é um link simples:/spring-boot-start [SpringBoot] aplicativo que expõe uma API REST.
Vamos atualizar o Test plan one e mudar seu nome primeiro, depois adicionar um Thread Group.
Um Thread Group permite conhecer o fluxo do usuário e simula como ele interage com o aplicativo, clique com o botão direito do mouse no nome do script na GUI e siga o menu selecionado:
link:/wp-content/uploads/2017/12/thread-group-menu-blur-1-1.png [imagem:/wp-content/uploads/2017/12/thread-group-menu-blur-1- 1-300x180.png [imagem, largura = 993, altura = 596]]
Agora vamos para a parte de configuração do Thread Group, onde especificamos o número de usuários que solicitam nosso aplicativo em paralelo:
link:/wp-content/uploads/2017/12/create-thread-group-blur.png [imagem:/wp-content/uploads/2017/12/create-thread-group-blur.png [imagem]]
Aqui, especificamos parâmetros como:
*-* _Name: _ o nome que queremos dar ao grupo de threads
-
_O número de threads (usuários) _: o número de usuários paralelos
-
Ramp-up time: tempo necessário para ir de 0 ao número declarado de usuários
-
Loop count: número de repetições
Adicione uma HTTP Request, que simularemos como proveniente de cada um dos 5 usuários.
Vamos preencher as informações para abordar nossa API descrita lá em cima, como na imagem abaixo:
link:/wp-content/uploads/2017/12/http-request-blur.png [imagem:/wp-content/uploads/2017/12/http-request-blur.png [imagem]]
Apenas preenchemos o endereço do site, a porta e o caminho específico.
Em seguida, vamos simular as solicitações dos usuários após adicionar uma View Tree Results (Use View Results in Table se os resultados forem uma lista de registros) seguindo o menu “_Add> Listener” _.
Aperte o botão direito da seta verde na parte superior para executar o teste e ver os dados da resposta:
link:/wp-content/uploads/2017/12/http-request-view-result-blur.png [imagem:/wp-content/uploads/2017/12/http-request-view-result-blur.png [ imagem]]
Podemos ver uma representação mais detalhada da resposta na guia Sampler result.
Vamos terminar adicionando uma Duration Assertion na HTTP Request, para que cada solicitação que dure mais de dez milissegundos seja considerada um teste com falha:
link:/wp-content/uploads/2017/12/duration-assertion-blur.png [imagem:/wp-content/uploads/2017/12/duration-assertion-blur.png [imagem]]
Depois de executar novamente o teste, vemos que existem alguns usuários (aqui são 3) que não conseguem obter as listas de alunos em menos de dez milissegundos:
link:/wp-content/uploads/2017/12/duration-assertion-failed-blur.png [imagem:/wp-content/uploads/2017/12/duration-assertion-failed-blur.png [imagem]]
Agora, vamos salvar o teste com a extensão .jmx na pasta de recursos da API.
Mais elementos estão disponíveis para configurar nosso arquivo de teste:
-
JDBC Request: útil para enviar uma solicitação JDBC (consulta SQL) para um banco de dados, antes de usá-lo, precisamos configurar um https://jmeter Elemento .apache.org/usermanual/component_reference.html # JDBC_Connection_Configuration [configuração de conexão JDBC]
-
XML Assertion: testa se os dados de resposta são de um documento XML corretamente correto
-
Size Assertion: afirma que a resposta contém o número certo de bytes nela *https://jmeter.apache.org/usermanual/component_reference.html#JMS_Publisher[JMS Publisher]: para publicar mensagens em um determinado destino (tópico/fila) seguindo a especificação J2EE para envio de mensagens
Todos os componentes disponíveis estão detalhados no manual do usuário.
===* 4. Execute os testes JMeter *
Existem duas maneiras de executar os testes do JMeter, um deles consiste em usar o plug-in Maven disponível e o outro no aplicativo JMeter autônomo no modo não GUI.
De qualquer forma, ambos precisam saber onde alcançar o script JMeter que configuramos anteriormente.
====* 4.1 Plug-in do JMeter Maven *
JMeter Maven Plugin * * é um plug-in do Maven que oferece a facilidade de executar testes do JMeter como parte de nossa compilação; sua última versão agora is 2.6.0 que é compatível com o Apache JMeter 3.3.
Vamos adicioná-lo ao pom.xml do nosso projeto:
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.6.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesDirectory>${project.basedir}/src/main/resources</testFilesDirectory>
<resultsDirectory>${project.basedir}/src/main/resources</resultsDirectory>
</configuration>
</plugin>
Depois disso, podemos executar todos os nossos testes com mvn confirm ou apenas os JMeter com mvn jmeter: jmeter; aqui está a saída do console do comando:
link:/wp-content/uploads/2017/12/run-jemeter-log.png [imagem:/wp-content/uploads/2017/12/run-jemeter-log.png [imagem]]
Nota: Aqui nós especificamos o diretório em que nossos testes estão localizados no projeto, o padrão (_ $ \ {project.basedir}/src/test/jmeter_) será escolhido; da mesma forma, está configurado o diretório de resultados; caso contrário, o diretório padrão será _ $ \ {project.basedir}/target/jmeter/results_.
A documentação completa do plug-in pode ser acessada em here.
====* 4.2 Modo não GUI *
A outra maneira de fazer isso é através do executável JMeter, supondo que ele esteja disponível na linha de comando.
jmeter -Jjmeter.save.saveservice.output_format = xml
-n -t src/main/resources/JMeter.jmx -l src/main/resources/JMeter.jtl
Definimos XML como o formato de saída, que preenche o arquivo de teste exato e o resultado.
*Nota: é recomendável não usar o modo GUI para teste de carga, apenas para criação e depuração de teste.*
5. Conclusão
Neste tutorial rápido, configuramos o Apache JMeter em um aplicativo SpringBoot para executar testes de desempenho com um plug-in Maven enquanto procuramos praticamente como projetar um teste básico de desempenho.
Como sempre, o código fonte deste artigo pode ser encontrado over no GitHub.