- Instalação do JMeter no Ambiente Local
O JMeter é uma ferramenta de código aberto desenvolvida pela Apache Foundation, amplamente utilizada para testes de performance e carga em aplicações web. Acesse a documentação oficial em jmeter.apache.org para informações adicionais.
1.1 Download e Instalação
Faça o download dos binários no endereço: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/
Escolha uma versão estável (recomendadas as versões 5.x) e baixe o arquivo compactado. Após extrair o conteúdo, navegue até o diretório bin e execute o comando jmeter (Linux/Mac) ou jmeter.bat (Windows) para iniciar a aplicação.
1.2 Alterando o Idioma
Por padrão, a interface do JMeter está em inglês. Para modificar para português:
- Acesse o menu Options
- Selecione Choose Language
- Clique em Portuguese (Brazil) ou Portuguese
1.3 Instalação de Plugins Essenciais
O JMeter possui plugins nativos limitados. Para расширение funcionalidades, especialmente para testes de carga graduais, siga estes passos:
- Baixe o arquivo JMeterPlugins-Manager.jar do repositório oficial
- Copie o arquivo para o diretório
/lib/extdentro da pasta de instalação do JMeter - Reinicie o JMeter
- Acesse Options → Plugins Manager
- Na aba Available Plugins, pesquise e instale os plugins desejados
Recomenda-se instalar plugins relacionados ao jpgc (JPEG Graphics Controller), que permitem criar cenários de carga progressiva (ramp-up). O plugin Stepping Thread Group é particularmente útil para simular diferentes padrões de acesso.
1.4 Configuração da Memória Heap do JMeter
Como o JMeter é uma aplicação Java, seu desempenho depende diretamente da memória heap alocada. Para servidores de teste, recomenda-se aumentar a memória disponível.
Edite o arquivo jmeter (Mac/Linux) ou jmeter.bat (Windows) e localize a linha de configuração heap:
${HEAP:="-Xms1g -Xmx8g -XX:MaxMetaspaceSize=656m"}
Ajuste os valores conforme a capacidade do seu equipamento:
- -Xms: Memória inicial alocada
- -Xmx: Memória máxima alocada
- -XX:MaxMetaspaceSize: Espaço para metadados de classes
Para verificar se a configuração foi aplicada corretamente, utilize a ferramenta jconsole para conectar ao processo JMeter e verificar os parâmetros JVM, ou utilize os comandos jps e jmap.
- Componentes Fundamentais do JMeter
2.1 Test Plan (Plano de Teste)
Ao iniciar o JMeter, você verá a interface principal contendo um Test Plan padrão. Este plano representa o arquivo .jmx que contém todas as configurações do teste de carga.
Funcionalidades importantes:
- Salvar/Exportar: Permite salvar o plano de teste para uso posterior
- Importar: Possibilita carregar planos de teste existentes
Informações de Erro
O triângulo no canto superior direito exibe mensagens de erro e status da execução. Caso o teste não execute corretamente, clique neste ícone para identificar problemas.
User Defined Variables (Variáveis Globais)
Configure variáveis globais que serão utilizadas em todo o teste. Esta abordagem facilita a manutenção, pois você altera o valor em um único lugar.
Exemplo prático: defina uma variável host com o valor api.exemplo.com. NosRequests subsequentes, utilize a sintaxe ${host} para referenciar este valor.
2.2 Configuration Elements (Elementos de Configuração)
Estes componentes definem parâmetros padrão para as requisições do teste.
2.2.1 HTTP Request Defaults
Caminho: Clique com botão direito no Test Plan → Add → Config Element → HTTP Request Defaults
Finalidade: Define valores padrão para todas as requisições HTTP do teste. Isso elimina a necessidade de configurar repetidamente os mesmos parâmetros.
Configure o protocolo (http/https), hostname e outras propriedades comuns. Use variáveis globais como ${host} para o domínio.
2.2.2 HTTP Header Manager
Caminho: Clique com botão direito no Test Plan → Add → Config Element → HTTP Header Manager
Finalidade: Gerencia cabeçalhos HTTP que serão enviados em todas as requisições.
Configure cabeçalhos frequentes como:
Content-Type: Define o tipo de conteúdo (ex: application/json)Cookie: Necessário para testes em endpoints autenticados
2.2.3 CSV Data Set Config
Caminho: Clique com botão direito no Test Plan → Add → Config Element → CSV Data Set Config
Finalidade: Permite ler dados de arquivos CSV para simular diferentes parâmetros em cada requisição.
Configuração:
- Specify CSV file path: Caminho do arquivo CSV
- Variable Names: Nomes das colunas (separados por vírgula)
- Ignore first line: Marque se a primeira linha contém cabeçalhos
NosRequests, utilize as variáveis com a sintaxe ${nomeVariavel}.
2.3 Thread Groups (Grupos de Threads)
Os thread groups controlam a simulação de usuários concorrentes. Cada thread representa um usuário virtual executando requisições simultaneamente.
2.3.1 Thread Group Padrão
Caminho: Clique com botão direito no Test Plan → Add → Thread → Thread Group
Configurações principais:
- Number of Threads: Quantidade de usuários virtuais (concorrências)
- Ramp-up Period: Tempo para iniciar todas as threads
- Loop Count: Número de execuções (-1 para infinito)
Fórmula: Total de Requisições = Number of Threads × Loop Count
Este modo mantém uma carga constante durante todo o período de teste.
2.3.2 Stepping Thread Group (Grupo de Threads Progressivo)
Caminho: Clique com botão direito no Test Plan → Add → Thread → jp@gc - Stepping Thread Group
Finalidade: Cria cenários de carga mais complexos, simulando padrões reais de acesso.
Parâmetros principais:
- This group will start: Total máximo de threads
- First, wait for: Tempo inicial antes de iniciar
- Then start: Threads iniciadas na primeira etapa
- Next, add: Threads adicionadas a cada ciclo
- Threads every: Intervalo entre adições de threads
- Using ramp-up: Tempo para cada adição de thread
- Then hold load for: Tempo para manter carga máxima
- Finally, stop: Threads removidas por ciclo
Este componente cria um padrão de "pico" de carga, ideal para identificar pontos de saturação.
2.4 Samplers (Amostradores)
Samplers definem as requisições que serão executadas. O mais utilizado é o HTTP Request.
HTTP Request Sampler
Caminho: Clique com botão direito no Thread Group → Add → Sampler → HTTP Request
Configuração:
- Server Name or IP: Domínio ou IP do servidor
- Port Number: Porta do serviço
- Path: Caminho do endpoint
- Method: GET, POST, PUT, DELETE, etc.
- Parameters: Parâmetros da requisição
- Exemplos Práticos de Testes de Carga
3.1 Teste de Carga Básico - Hello World
Cenário: API com tempo de processamento de 500ms
Exemplo de endpoint simulado:
@GetMapping("/api/teste")
public String executarTeste() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return "sucesso";
}
Passo 1 - Configurar Thread Group
- Adicione um Thread Group ao Test Plan
- Configure 100 threads
- Defina ramp-up de 60 segundos
- Loop count: 600
Passo 2 - Configurar HTTP Request
- Adicione um HTTP Request ao Thread Group
- Configure o servidor, porta e path
- Defina o método GET
Passo 3 - Adicionar Listeners para Monitoramento
- View Results Tree: Exibe detalhes de cada requisição (clique direito → Add → Listener → View Results Tree)
- Summary Report: Estatísticas consolidadas do teste (Add → Listener → Summary Report)
- Transactions per Second: Gráfico tempo real de throughput (requisições/segundo)
- Response Times Over Time: Gráfico de tempos de resposta
- Active Threads Over Time: Monitora comportamento das threads
Passo 4 - Executar o Teste
Clique com botão direito no Thread Group → Start
Interpretação dos Resultados:
- Samples: Total de requisições executadas
- Average: Tempo médio de resposta em milissegundos
- Min/Max: Tempo mínimo e máximo de resposta
- Error %: Percentual de falhas
- Throughput: Requisições processadas por segundo
3.2 Simulando Diferentes Parâmetros de Requisição
Passo 1 - Criar arquivo CSV
userId,userName
1,Maria Silva
2,João Santos
3,Pedro Oliveira
Passo 2 - Configurar CSV Data Set Config
- Adicione o componente ao Test Plan
- Specify CSV file: caminho do arquivo criado
- Variable names: userId,userName
- Recycle on EOF: True
- Stop thread on EOF: False
Passo 3 - Utilizar variáveis no HTTP Request
Nos parâmetros da requisição, utilize ${userId} e ${userName}. O JMeter lerá automaticamente diferentes valores do arquivo CSV para cada requisição.
3.3 Testando Endpoints Autenticados
Se a API utiliza autenticação baseada em cookies:
- Adicione um HTTP Header Manager ao Test Plan
- Adicione o cabeçalho
Cookie - Insira o valor do cookie de sessão
Nota: Quando o cookie expirar, será necessário atualizar manualmente o valor.
3.4 Enviando Arquivos via API
No HTTP Request:
- Selecione a opção File Upload
- No campo File Path, informe o caminho do arquivo
- No campo Parameter Name, digite "file" (ou conforme a API exigir)
- Configure o MIME Type: geralmente
application/octet-streamoumultipart/form-data
Para simular envio de diferentes arquivos, utilize a mesma abordagem do CSV, criando uma variável para o caminho do arquivo.
3.5 Executando Testes via Linha de Comando (Modo Não-GUI)
Para testes em servidores, utilize o modo CLI (non-GUI) para melhor desempenho:
jmeter -n -t [arquivo.jmx] -l [arquivo_resultados] -e -o [pasta_relatorio]
Parâmetros:
- -n: Modo não-GUI
- -t: Especifica o arquivo de teste (.jmx)
- -l: Arquivo para armazenar resultados
- -e: Gera relatório após execução
- -o: Pasta para o relatório HTML
Exemplo de execução:
jmeter -n -t plano_teste.jmx -l resultado.txt -o relatorio
Após a execução, abra o arquivo index.html gerado na pasta de relatório para visualizar os resultados em formato visual.
Alternativa: Gerar relatório separadamente
jmeter -g resultado.txt -o pasta_saida
Para visualizar detalhes de requisições específicas no formato da interface gráfica, utilize a função "Browse" do listener "View Results Tree" e importe o arquivo de resultados.