Tutorial de Teste de Carga com JMeter



Visão Geral do Teste de Carga com JMeter

Cada aplicação web tem uma capacidade máxima de carga, e ultrapassá-la pode levar a lentidões, erros ou ineficácia geral. O teste de carga é crucial para avaliar o desempenho de uma aplicação web. Este tipo de teste é um componente vital do ciclo de vida do desenvolvimento de software e aplicações, especialmente ao lidar com aplicações web, sites ou APIs que se espera lidarem com tráfego significativo de usuários. Para garantir que suas aplicações possam performar sob condições de pico ou tráfego intenso sustentado, é essencial empregar ferramentas de teste de desempenho. Apache JMeter é uma escolha popular para esse propósito, e se você é novo em testes de desempenho, pode estar se perguntando o que é JMeter? E como o JMeter funciona? Vamos examinar o JMeter e como usar o JMeter para testes de desempenho.

O que é Teste de Carga?

Teste de carga é um tipo de teste de desempenho para determinar como sua aplicação web se comporta durante condições normais e de pico de carga ou até mesmo para encontrar o ponto de ruptura. É a prática de simular o uso do mundo real, ou carga, em qualquer software, site, aplicação web, API ou sistema para analisar e identificar fatores como capacidade de resposta, degradação e escalabilidade.

Ferramentas para Teste de Carga

Ferramentas de Teste de Carga são extremamente importantes para agilizar suas necessidades de teste de carga e melhorar seu desempenho digital. Não há fim na quantidade e variedade de ferramentas e plataformas disponíveis no mercado hoje, com uma variedade de recursos. Existem muitas ferramentas de teste de carga como:

    • LoadView
    • Apache JMeter
    • WebLOAD
    • LoadRunner
    • Tricentis NeoLoad
    • LoadNinja

Para este guia, vamos focar no teste de carga com JMeter. Responderemos algumas perguntas como: o que é JMeter, como fazer testes de carga com JMeter e como usar JMeter para teste de desempenho de API.

O que é Teste de Carga com JMeter?

Apache JMeter, também conhecido como JMeter, é um software open-source amplamente utilizado, projetado como uma aplicação 100% pura em Java para realizar testes de carga do comportamento funcional e avaliação de desempenho. É uma ferramenta preferida entre desenvolvedores e equipes de desenvolvimento de software para testes de desempenho devido à sua extensa documentação, forte suporte da comunidade e melhores práticas estabelecidas. Além disso, por ser gratuito e open-source, é uma opção econômica, mas como é 100% Java, pode demandar que sua equipe dedique tempo e recursos adicionais para iniciar os processos de teste.

JMeter suporta uma variedade de protocolos, incluindo HTTP, HTTPS, FTP e mais, tornando-o versátil para testar diferentes tipos de aplicações. Usuários podem criar e executar planos de teste que definem vários cenários, como simular interações de usuários, monitorar desempenho do servidor e analisar tempos de resposta.

O teste de carga com JMeter é projetado para conduzir testes de carga no comportamento funcional e medir seu desempenho. Você pode usar o JMeter para analisar e medir o desempenho de aplicações web ou serviços. Ao analisar os dados coletados e gerar relatórios, você pode observar o comportamento da aplicação e identificar gargalos de desempenho, fornecendo insights valiosos sobre áreas onde melhorias na aplicação são necessárias.

Por que usar o JMeter?

  • Open source: JMeter é totalmente gratuito, e os desenvolvedores podem usar o código fonte.
  • Independente de Plataforma: JMeter é 100% Java e pode ser executado em múltiplas plataformas.
  • Suporte a Multi-Protocolo: JMeter suporta tanto testes de aplicações web quanto desempenho de serviços de banco de dados. Ele suporta todos os protocolos básicos como HTTP, JDBC, LDAP, SOAP, JMS e FTP.
  • Gravação & Reprodução: JMeter permite que você grave a atividade do usuário em um navegador para ser simulada e depois você pode reproduzir essa gravação.
  • Relatórios Personalizáveis: Visualize seus resultados de teste em diferentes formatos como gráficos, tabelas, ou arquivos de árvore e log.
  • Suporte da Comunidade: Existe uma grande comunidade com ajuda, orientações e tutoriais.
  • Extensibilidade: JMeter pode ser estendido com plugins para ampliar sua funcionalidade, permitindo aos usuários ajustar a ferramenta às suas necessidades específicas.

Benefícios do Teste de Carga com JMeter

JMeter é uma ferramenta fantástica para teste de carga que oferece muitas vantagens que a tornam favorita entre testadores. Para começar, é totalmente gratuita e open-source, o que significa que você não precisa se preocupar com restrições orçamentárias — é acessível a todos! Além disso, é poderosa o suficiente para simular cenários do mundo real que fornecem uma visão clara de como sua aplicação se comporta sob diferentes tipos de carga.

Uma das melhores características do JMeter é sua escalabilidade. Quer você esteja rodando testes pequenos ou simulando tráfego em larga escala, ele pode lidar com tudo sem dificuldades. E não podemos esquecer de seus detalhados recursos de geração de relatórios e análise. Essas ferramentas ajudam a identificar problemas de desempenho rapidamente, facilitando muito a otimização de sua aplicação e mantendo-a funcionando sem problemas.

Outra coisa que adoramos no JMeter é sua facilidade de uso! Você não precisa ser um expert em programação para criar cenários de teste complexos, pois o JMeter mantém tudo simples e intuitivo. E seus recursos integrados de geração de relatórios e visualização facilitam a análise dos resultados dos testes e a identificação de eventuais gargalos de desempenho. No geral, o JMeter é uma ferramenta confiável e fácil de usar que ajuda a garantir que suas aplicações possam suportar qualquer desafio!

    Como Realizar Teste de Carga com JMeter

    Vamos analisar alguns dos passos envolvidos em como usar o JMeter para teste de carga e como configurar um teste de carga básico.
     

    Passo 1: Verificar Compatibilidade do Sistema para Instalação do JMeter

    Antes de prosseguir com a instalação do JMeter, é crucial garantir que seu sistema atenda aos requisitos. O JMeter é baseado em Java, então você precisa ter o Java 8 ou uma versão superior instalada em seu sistema. Confirme que seu sistema operacional é compatível com o JMeter. O JMeter foi projetado para funcionar em vários sistemas operacionais, incluindo Windows, Linux e macOS.

    Depois de confirmar que seu sistema atende a esses requisitos básicos, você está pronto para prosseguir com a instalação do JMeter. Isso garante uma configuração tranquila e desempenho ideal durante o teste de carga.
     

    Passo 2: Baixar e Instalar o JMeter no Seu Sistema

    Após garantir que seu sistema atende a todos os requisitos necessários, prossiga para baixar a versão mais recente do JMeter — escolhendo entre binários ou arquivos fonte conforme suas necessidades específicas. Os arquivos binários, compostos por versões pré-compiladas do JMeter, podem ser executados imediatamente, enquanto os arquivos fonte oferecem flexibilidade para configuração manual e compilação por desenvolvedores ou equipes. Normalmente, as versões binárias são preferidas pela facilidade de instalação. Estão disponíveis diferentes tipos de arquivo para download, como .zip e .tgz.

    Depois de selecionar sua versão preferida, faça o download para seu sistema. Você pode então abrir o arquivo, movê-lo para uma localização designada ou criar uma nova pasta para acesso futuro. Inicie o processo de extração, que pode levar alguns minutos. Note que os passos de instalação podem variar dependendo do seu sistema operacional, mas uma vez instalado, a funcionalidade do JMeter permanece consistente.
     

    Passo 3: Criar um Plano de Teste de Carga

    Usuários do JMeter podem começar a criar seu plano de teste de carga do zero ou também selecionar entre vários modelos de plano de teste localizados no menu suspenso Arquivo. Os modelos incluem Plano de Teste de WebService SOAP, Plano de Teste Web básico e avançado, Plano de Teste FTP (Protocolo de Transferência de Arquivos), Plano de Teste Funcional, e muitos outros. Esses modelos de teste incluirão todos os elementos, seções e campos específicos necessários que você usará para criar e construir seu plano de teste de carga.

    Para criar um Plano de Teste, simplesmente navegue até Arquivo e selecione Novo ou escolha o botão Novo na Barra de Ferramentas. É importante notar que você deve executar o JMeter no modo GUI para criar o Plano de Teste. O CLI, ou interface de linha de comando, é usado para executar o teste de carga. A seguir, falaremos sobre a especificação do número de usuários para seu teste de carga, também conhecido como Grupo de Threads.
     

    Passo 4: Adicionar e Configurar o Grupo de Threads no JMeter

    Para incorporar um Grupo de Threads, siga estes passos: clique com o botão direito em Plano de Teste, passe o mouse sobre Threads (Usuários), e clique em Grupo de Threads.

    Na caixa de diálogo do Grupo de Threads que surgir, você pode editar várias Propriedades do Thread como Número de Threads (Usuários), Período de Ramp-up (em segundos), e Contagem de Loop (iterações do teste). Além disso, especifique ações como atrasos, defina horários de início e término do teste, e defina respostas para erros do Sampler. As propriedades do thread são:

      • Número de Threads: Representa a quantidade de usuários virtuais conectando ao servidor.
      • Período de Ramp-up: Denota o tempo que o JMeter leva para colocar o número especificado de threads em estado ativo.
      • Contagem de Loop: Indica o número de vezes que cada thread executa a tarefa.
      • Contagem de Loop Infinita: Quando ativado, ignora a contagem de loop, causando um loop infinito até ser parado manualmente.
      • Atraso na Criação do Thread até ser necessário: Adia a criação do thread até que um valor especificado (em segundos) seja alcançado.
      • Agendador: Permite configurações de agendamento para testes em horários específicos quando ativado.

    Este passo permite uma customização meticulosa dos parâmetros do teste de carga, oferecendo aos usuários controle sobre concorrência, duração e condições específicas do teste.
     

    Passo 5: Configurar o Sampler no JMeter

    No JMeter, os Samplers permitem que o JMeter envie diferentes tipos de solicitações. Por exemplo, podem ser uma requisição HTTP (para um site, aplicação, ou API), requisição FTP, requisição SMTP, requisição TCP, entre outras. A partir daqui, você insere detalhes adicionais como o Protocolo (HTTP/S), Nome do Servidor ou IP, Caminho (para página web específica), e o tipo de requisição, como GET, POST, HEAD, PUT, etc., que podem ser usados para teste de carga de API.
     

    Passo 6: Configurar Listeners

    Para analisar os resultados do Sampler no JMeter, o próximo passo envolve configurar o que é chamado de Listeners. Na janela do Plano de Teste do JMeter, você pode escolher entre vários Listeners, incluindo Relatório Resumo, Gráfico Agregado, Visualizar Árvore de Resultados, Visualizar Resultados em Tabela, e muitos outros, para inspecionar e analisar detalhadamente os resultados do seu teste. Além disso, você tem a flexibilidade de adicionar múltiplos Listeners a um Plano de Teste do JMeter. Uma vez concluído, seu Plano de Teste está pronto, e você pode prosseguir para executar o teste.
     

    Passo 7: Gravar os Scripts de Teste de Carga

    Se seu objetivo é conduzir testes básicos de HTTP ou no nível de protocolo sem configuração extensa, não é necessário nenhum ajuste adicional. Porém, se você precisa de um teste que se assemelhe às ações do seu usuário, será necessário utilizar o Gravador de Scripts de Teste HTTP(S) no JMeter.

    No Grupo de Threads, você deve adicionar o Controlador de Gravação. Este controlador permite que você navegue em um site ou aplicação, gravando suas ações por meio de requisições HTTP/S. Você também pode incluir múltiplos Controladores de Gravação por página, o que economiza seu tempo para não precisar adicionar cada requisição manualmente.

    A desvantagem é que sua gravação é feita com requisições HTTP/S e não registra dentro de um navegador real sob a perspectiva do usuário. Você também pode gravar navegadores usando o Servidor Proxy do JMeter, mas isso pode ser um processo tedioso e difícil. Se estiver buscando uma solução mais fácil e intuitiva, você pode optar por usar o LoadView que possui o Gravador EveryStep Web. O gravador do LoadView oferece scripting ponto-e-clique usando navegadores reais sem a configuração complexa e demorada do JMeter.
     

    Passo 8: Executar o Teste de Carga

    Depois de configurar todos os detalhes e configurações do seu teste de carga, salve seu plano de teste. Então, você pode simplesmente selecionar o botão Executar na Barra de Ferramentas e seu teste começará. Lembre-se de executar o teste no modo CLI para obter melhores resultados.
     

    Passo 9: Visualizar Resultados do Teste de Carga

    Você verá os resultados do teste na tabela, mas isso pode depender do seu listener. Seus resultados incluirão métricas adicionais, como Tempo (em milissegundos), Status (exibe respostas válidas e erros), Bytes e Bytes Enviados, Latência, e Tempo de Conexão. Ao examinar esses resultados, você pode identificar os locais de quaisquer erros ou instâncias de tempos de carregamento lentos.

    Como Realizar Teste de Carga de API com JMeter

    Anteriormente, discutimos as instruções passo a passo sobre como configurar um teste de carga baseado em protocolo em um site ou aplicação com JMeter. Agora, abordaremos o teste de diferentes APIs, como APIs SOAP e REST, com JMeter. Os procedimentos de instalação e configuração permanecem consistentes com os passos mencionados anteriormente. No entanto, focaremos nos aspectos fundamentais do teste de API e discutiremos considerações importantes ao realizar testes de API usando JMeter.
     

    Teste de API Rest com JMeter

    APIs RESTful, abreviação para Representational State Transfer APIs, desempenham um papel vital no desenvolvimento de diversos serviços web. Em contraste com APIs SOAP, REST não é um protocolo, mas um estilo arquitetural que depende de URIs (Identificadores Uniformes de Recursos) e do protocolo HTTP.
     

    Passo 1: Criar um Plano de Teste de Carga

    Para começar, abra o JMeter. Você verá que uma nova janela de Plano de Teste abrirá. Se você já tem o JMeter aberto, também pode selecionar o botão Novo na Barra de Ferramentas Principal para criar um novo Plano de Teste.
     

    Passo 2: Adicionar e Configurar o Grupo de Threads no JMeter

    Semelhante à seção anterior, a janela do Grupo de Threads é onde você pode adicionar o número de usuários (Threads), definir o tempo de rampa (ramp-up), o número de iterações de teste (Contagem de Loop) e editar muitas outras propriedades.
     

    Passo 3: Configurar o Sampler

    Em seguida, precisamos adicionar o Sampler. Você pode escolher dentre alguns Samplers pré-configurados no JMeter ou selecionar um próprio. Para este exemplo, usaremos uma opção pré-configurada.

    Para iniciar esse processo, clique com o botão direito no Grupo de Threads, abrindo uma janela suspensa. Escolha Adicionar, depois Sampler. Uma lista de opções de Sampler aparecerá. Para teste de API, opte por Requisição HTTP, abrindo a janela de configuração onde você pode nomear seu teste e configurar os parâmetros para seu teste de API REST. Vale destacar que a janela Requisição HTTP está dividida em seções Básicas e Avançadas. Para este teste, nos concentraremos nas configurações Básicas. Diversos campos, incluindo Protocolo, Nome do Servidor ou IP, Número da Porta, Requisição HTTP (GET/POST/HEAD/PUT/DELETE, etc.), parâmetros e mais, estão disponíveis para configuração.

    Para começar, insira a URL da API no campo Nome do Servidor ou IP (apenas o nome de domínio), junto com o protocolo apropriado, e no campo Caminho, adicione o caminho da API.

    Se esta for uma requisição GET, selecione GET na lista de Requisição HTTP.

    Se você tiver certos parâmetros, como uma página específica, pode adicioná-los no campo Parâmetros.

    Você também pode incluí-los no campo Caminho, porém, adicionando-os no campo Parâmetros, você tem opções adicionais de campo, como Codificar URL?, Tipo de Conteúdo e Incluir Igual?

    Para certas requisições, é necessário incluir cabeçalhos de requisição. Para isso, vá até a Requisição HTTP na janela do Plano de Teste. Clicando com o botão direito abrirá um menu suspenso; selecione Adicionar, depois Elemento de Configuração. Isso abrirá as opções disponíveis. Neste caso, escolha Gerenciador de Cabeçalho HTTP. A janela do Gerenciador de Cabeçalho HTTP permite que você insira seus cabeçalhos da API. Depois de configurar suas configurações, prossiga para o próximo passo.
     

    Passo 4: Adicionar Listeners

    Para incluir Listeners, simplesmente clique com o botão direito no Grupo de Threads, escolha Adicionar, depois Listener. Isso abrirá um menu suspenso oferecendo mais de 15 opções para selecionar. Opções populares incluem Visualizar Árvore de Resultados e Visualizar Resultados em Tabela. É importante notar que Listeners que oferecem representação gráfica, como Visualizar Árvore de Resultados, podem consumir mais memória e CPU. Após adicionar seus Listeners, salve seu plano de teste.
     

    Passo 5: Executar o Teste e Visualizar os Resultados

    Após configurar e salvar os detalhes e configurações do seu teste de carga, inicie o teste clicando no botão Executar na Barra de Ferramentas. A janela exibirá os resultados do seu Sampler, apresentando diversos detalhes, dados e métricas — como latência, códigos de resposta, tempo de conexão, etc. — referentes ao seu teste de API REST.
     

    Teste de API SOAP com JMeter

    SOAP (Simple Object Access Protocol) difere de uma API REST pois opera sob seu próprio protocolo. Ao testar carga em APIs SOAP, surgem considerações específicas, incluindo segurança e conformidade, requisitos de largura de banda (APIs SOAP normalmente demandam mais recursos) e aspectos funcionais como lógica de reintento, ausente em APIs REST.
     

    Passo 1: Criar um Plano de Teste de Carga

    O JMeter oferece uma gama de modelos de Plano de Teste acessíveis através do Menu ou do ícone de Modelos na Barra de Ferramentas Principal. Uma das opções disponíveis é “Construindo um Plano de Teste de WebService SOAP.” Escolher essa opção gera e abre o Plano de Teste correspondente. Como este é um modelo, certos campos conterão valores temporários que exigem que você insira os dados e informações relevantes.
     

    Passo 2: Inserir Dados

    Semelhante ao que discutimos na configuração de APIs REST, você precisará inserir o número de usuários (Threads), período de ramp-up e loops (iterações do teste) para o teste de API SOAP.

    Dentro de um subgrupo do Grupo de Threads principal, você pode acessar as configurações de Requisição HTTP, semelhante à configuração de API REST que abordamos anteriormente. Porém, o layout dessa seção é diferente, exibindo por padrão o corpo da requisição da API SOAP. Essa seção também inclui sub-seções para Gerenciador de Cabeçalho HTTP e Asserções de Resposta. Assim como na configuração de API REST, você pode incluir Elementos de Configuração adicionais, como o Gerenciador de Autorização HTTP, caso detalhes específicos de autorização precisem ser incluídos.
     

    Passo 3: Adicionar Sampler de Requisição HTTP

    Para um teste de carga de API SOAP, você vai querer adicionar o Sampler de Requisição HTTP. Nesta janela, você precisará inserir os detalhes relevantes, incluindo Nome do Servidor ou IP, Caminho, Requisição HTTP, Número da Porta e os Dados do Corpo da requisição SOAP.
     

    Passo 4: Adicionar Listeners

    Depois de configurar o Plano de Teste, você precisará adicionar seus Listeners, que exibirão seus resultados de teste. Mais uma vez, você pode adicionar quantos Listeners desejar e conforme adequado para o teste de carga da API SOAP.
     

    Passo 5: Executar Seu Teste

    Uma vez que a configuração e ajustes do Plano de Teste tenham sido definidos, você pode finalmente executar seu teste de carga da API SOAP e revisar os resultados assim que for concluído.

    Conclusão

    Até agora, você deve ter aprendido o que é o JMeter, como fazer testes de carga com JMeter e como realizar testes de carga para APIs com o JMeter. Como você pode ver, configurar testes de carga com o JMeter envolve muitos passos diferentes e opções de configuração, o que equivale a muito tempo gasto configurando os testes, ao invés de executando-os. Embora o JMeter seja uma solução gratuita e open source, você pode precisar procurar outras ferramentas de teste de carga que ofereçam melhores recursos e que atendam às necessidades do seu negócio.

    LoadView: A Melhor Alternativa ao JMeter

    LoadView destaca-se como uma das principais soluções pagas de testes de desempenho disponíveis hoje, oferecendo uma variedade de recursos. Estes incluem um gravador de script ponto e clique, acesso a uma rede global de servidores injetores de carga, e a capacidade de configurar vários cenários de curvas de carga para maior flexibilidade de testes. Em contraste com o JMeter, o LoadView não requer infraestrutura adicional ou considerações, já que tudo é gerenciado de forma integrada. Ao contrário do JMeter, que está limitado a testes de carga no nível de protocolo, o LoadView usa navegadores reais, permitindo que você avalie o desempenho real para sites, aplicações e APIs críticas. Além disso, o LoadView oferece múltiplas opções, como whitelist de IPs de proxy estáticos ou uso de um agente local, possibilitando testes em aplicações atrás do seu firewall e proporcionando maior flexibilidade para testes de desempenho.

    O LoadView oferece relatórios e dashboards amigáveis, fornecendo insights claros sobre os fatores que contribuem para um desempenho abaixo do esperado. Além disso, inclui um vídeo de referência para testes de páginas web e aplicações, possibilitando uma comparação direta com os relatórios para visualizar a perspectiva do usuário. O LoadView oferece planos flexíveis mensais e anuais, acompanhados de suporte 24×7 para todos os clientes, independentemente do plano escolhido, distinguindo-se de algumas outras ferramentas no mercado.

    Leve Seu Teste de Carga para o
    Próximo Nível

    Experimente recursos incomparáveis com escalabilidade ilimitada. Sem cartão de crédito, sem contrato.