O JMeter pode gerar amostras de requisições HTTP atuando como um proxy de gravação local entre um navegador e um aplicativo de destino autorizado. As versões atuais chamam esse componente de Gravador de Script de Teste HTTP(S) . Ele captura uma jornada do navegador até um Controlador de Gravação, após a qual o script deve ser limpo, correlacionado, validado e executado como um teste em nível de protocolo.
O que é o servidor proxy HTTP do JMeter?
O gravador escuta em uma porta local, geralmente 8888Um navegador envia solicitações HTTP e HTTPS para esse proxy, e o JMeter converte o tráfego correspondente em amostras sob um controlador selecionado. Durante a reprodução, o JMeter envia solicitações diretamente; ele não inicia um navegador para cada usuário virtual.
Por que gravar em vez de escrever o roteiro manualmente?
- Captura a ordem realista das requisições, redirecionamentos, formulários e APIs em segundo plano.
- Revela chamadas XHR ou fetch que são fáceis de passar despercebidas.
- Cria uma base rápida para uma jornada de usuário complexa.
- Reduz erros de transcrição em cabeçalhos e parâmetros.
A construção manual continua sendo mais limpa para uma API pequena e documentada. O registro de alterações ajuda quando o comportamento da rede do navegador ainda não é compreendido. Para terminologia, consulte nosso guia de tipos de proxy.
Como gravar um script no JMeter 5.x
- Inicie o JMeter no modo GUI para criação de scripts.
- Adicione um grupo de threads ao plano de teste.
- Adicione um Controlador de Gravação no Grupo de Threads.
- Adicione valores padrão para solicitações HTTP e um gerenciador de cookies HTTP, quando apropriado.
- Adicione o Gravador de Script de Teste HTTP(S) e selecione o Controlador de Gravação como seu destino.
- Utilize padrões de inclusão/exclusão para limitar o tráfego não relacionado.
O guia oficial de gravação do Apache JMeter é a referência definitiva específica para cada versão.
Etapa 1) Configurando o servidor proxy HTTP
8888, defina o controlador de destino e clique Começar.Configure o navegador de teste com o host proxy HTTP e HTTPS. 127.0.0.1 e a mesma porta. Se o navegador estiver sendo executado em outra máquina virtual ou contêiner, localhost se refere a esse ambiente; use um endereço privado acessível e aprovado.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Não filtre de forma muito agressiva na primeira passagem, pois a API de um aplicativo pode usar um subdomínio diferente. Registre uma vez, inspecione os hosts e, em seguida, refine os padrões.
Etapa 2) Registre sua atividade
- Inicie o gravador e confie em seu certificado temporário apenas no navegador de teste isolado.
- Abra o ambiente de teste autorizado.
- Realize uma viagem limpa em velocidade humana.
- Pare a gravação imediatamente após a última ação comercial.
- Restaure as configurações normais de proxy do navegador.
Renomeie os samplers por ação comercial e agrupe as solicitações relacionadas em Controladores de Transação. Remova análises, anúncios, atualizações de navegador, widgets de bate-papo e recursos estáticos duplicados, a menos que estejam explicitamente no escopo.
Inspecione cada amostrador em busca de segredos. As senhas devem vir de dados de tempo de execução protegidos, enquanto a alteração de tokens requer correlação.
Etapa 3) Execute seu plano de teste
Valide um usuário e uma iteração antes de adicionar carga. Use temporariamente a visualização da árvore de resultados, verifique os redirecionamentos e os corpos das respostas e adicione asserções para o resultado comercial esperado. O código HTTP 200 por si só não comprova que o login ou a finalização da compra foram bem-sucedidos.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Após a depuração, remova os listeners pesados e execute o aplicativo sem interface gráfica:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
O diretório de relatórios deve ser novo ou estar vazio. Aumente a carga gradualmente e monitore o sistema de destino, bem como o JMeter.
Etapa 4) Salve o resultado do seu teste
Salve o plano reutilizável como um .jmx Arquive e mantenha os dados gerados separados:
- JMX: Amostradores, controladores, asserções, temporizadores, variáveis e configuração.
- JTL: Resultados brutos das amostras para análise.
- Painel de controle HTML: percentis, taxa de transferência, erros e threads ativos.
- Métricas do servidor: Telemetria de CPU, memória, banco de dados, fila e serviço.
Crie versões do plano com propriedades não confidenciais e dados de teste. Registre as versões do JMeter e do Java, a compilação de destino, o ambiente, o número de usuários, o período de aumento gradual de uso e a duração.
Registro de tráfego HTTPS e certificados
Para HTTPS, o JMeter gera uma autoridade de certificação temporária quando o gravador é iniciado. Importe-a apenas para o navegador de teste dedicado, grave o site autorizado e, em seguida, remova-a.
- Inicie o gravador de script de teste HTTP(S).
- Localize o certificado ApacheJMeterTemporaryRootCA gerado.
- Importe-o como uma autoridade confiável no perfil isolado.
- Registre o percurso HTTPS aprovado.
- Remova o certificado quando terminar.
O uso de certificados de segurança, TLS mútuo, navegadores gerenciados, aplicativos móveis e protocolos de transporte mais recentes podem bloquear a interceptação. Não enfraqueça os controles de segurança de produção. Use uma versão de teste, uma especificação de API ou um método de captura alternativo aprovado.
Correlação: Tornando um roteiro gravado reproduzível
Os IDs de sessão, tokens CSRF, estado OAuth, assinaturas de requisição e IDs de recursos mudam entre execuções. A correlação extrai um novo valor de uma resposta e o substitui em requisições posteriores.
- Localize a resposta que contém o valor dinâmico em primeiro lugar.
- Adicione um extrator de JSON, CSS, XPath ou Expressão Regular.
- Armazene o resultado em uma variável nomeada do JMeter.
- Substitua os valores fixos inseridos posteriormente pela referência da variável.
- Falha evidente quando a extração não retorna nenhuma correspondência.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
A parametrização fornece dados independentes do usuário, geralmente provenientes de arquivos CSV. A correlação captura dados gerados pelo servidor durante a execução. Planos realistas geralmente precisam de ambos.
guia de solução de problemas
| Problema | Causa provável | Fixar |
|---|---|---|
| Nenhuma solicitação registrada | Proxy incorreto, gravador interrompido, conflito de portas ou regra de bypass | Confirme o host e a porta, inicie a gravação e remova as exclusões de destino. |
| Aviso HTTPS | Certificado de Autorização Temporária ausente ou expirado | Gere um novo certificado de gravação e importe-o apenas para o perfil de teste. |
| Muito trânsito | Extensões, telemetria, outras abas ou padrões gerais. | Use um perfil limpo e refine os filtros de inclusão/exclusão. |
| A reprodução do login falha | Cookies, tokens, fluxo OAuth ou correlação ausentes. | Adicione o Gerenciador de Cookies, extraia valores dinâmicos e inspecione redirecionamentos. |
| O navegador ficará offline em seguida. | Ainda aponta para o proxy local interrompido. | Restaurar configurações automáticas ou sem proxy. |
| Erro de memória do JMeter | Ouvintes de GUI ou armazenamento de respostas grandes | Utilize o modo sem interface gráfica e limite os dados de resposta salvos. |
| Diferente do navegador | O JMeter não renderiza nem executa o JavaScript da página. | Teste as APIs subjacentes e utilize as ferramentas do navegador para renderizar as métricas. |
O JMeter é uma ferramenta de avaliação de desempenho de protocolos. Ele não consegue medir eventos visuais como o Largest Contentful Paint (LCP) por si só.
Perguntas Frequentes
O que substituiu o nome do servidor proxy HTTP no JMeter?
O componente agora se chama Gravador de Script de Teste HTTP(S).
Qual porta de gravação devo usar?
Qualquer porta local não utilizada funciona. A porta 8888 é comum e o navegador deve usar o mesmo valor.
O JMeter consegue gravar tráfego HTTPS?
Sim, quando o navegador de teste isolado confia no certificado de gravação temporário do JMeter.
Por que um script gravado falha na reprodução?
Tokens dinâmicos, cookies, fluxos de autenticação, diferenças de host e dados ausentes geralmente exigem correlação e parametrização.
O JMeter consegue gravar o Chrome?
Sim. Configure um perfil limpo do Chrome para usar o gravador local do JMeter.
Devo executar testes de carga a partir da interface gráfica do JMeter?
Não. Compile e depure no modo GUI e, em seguida, execute o carregamento no modo não-GUI.
O JMeter se comporta como um navegador real?
Não. Ele envia solicitações de protocolo, mas não renderiza HTML nem executa JavaScript do navegador.
É seguro gravar um login de produção?
Dê preferência a contas de teste e de homologação. A captura em produção requer autorização explícita e tratamento rigoroso de segredos.
