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. Esse tipo de teste é um componente vital do ciclo de vida do desenvolvimento de software e aplicações, especialmente quando se trata de aplicações web, sites ou APIs que esperam lidar com um tráfego significativo de usuários. Para garantir que suas aplicações possam performar sob condições de pico ou tráfego alto sustentado, é essencial empregar ferramentas de teste de desempenho. O Apache JMeter é uma escolha popular para esse propósito, e se você é novo em teste de desempenho, pode estar se perguntando o que é JMeter? E como o JMeter funciona? Vamos analisar 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 real, ou carga, em qualquer software, site, aplicação web, API ou sistema para analisar e identificar fatores como responsividade, 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 para a quantidade e variedade de ferramentas e plataformas disponíveis hoje no mercado, com uma variedade de recursos. Existem muitas ferramentas de teste de carga, tais 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 teste 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 usado, projetado como uma aplicação 100% Java para realizar testes de carga sobre comportamento funcional e avaliação de desempenho. É uma ferramenta preferida entre desenvolvedores e equipes de desenvolvimento de software para testes de desempenho devido à sua documentação extensa, forte suporte comunitário e melhores práticas estabelecidas. Além disso, por ser gratuito e open-source, é uma escolha econômica, mas como é 100% Java, pode levar sua equipe mais tempo e recursos para iniciar os processos de teste.

O JMeter suporta uma variedade de protocolos, incluindo HTTP, HTTPS, FTP e mais, tornando-o versátil para testar diferentes tipos de aplicações. Os 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 realizar testes de carga sobre comportamentos funcionais e medir seu desempenho. Muitas equipes também integram testes com JMeter em pipelines CI/CD para executar verificações de desempenho durante builds e deploys. 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, é possível observar o comportamento da aplicação e identificar gargalos de desempenho, fornecendo insights valiosos sobre áreas onde melhorias são necessárias.

Por que usar o JMeter?

  • Open source: JMeter é completamente gratuito, e os desenvolvedores podem usar o código-fonte.
  • Independente de plataforma: JMeter é independente de plataforma e pode ser executado em múltiplas plataformas.
  • Suporte a múltiplos protocolos: 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.
  • Gravar & Reproduzir: JMeter permite que você grave a atividade do usuário em um navegador para ser simulada e depois você pode reproduzir a gravação.
  • Relatórios personalizáveis: Visualize seus resultados de teste em diferentes formatos, como gráficos, tabelas, ou arquivos em árvore e de log.
  • Suporte comunitário: Existe uma grande comunidade com ajuda, orientações e tutoriais.
  • Extensibilidade: JMeter pode ser expandido com plugins para melhorar sua funcionalidade, permitindo que os usuários personalizem a ferramenta para suas necessidades específicas.
  • Escalabilidade limitada na nuvem por padrão: JMeter normalmente roda localmente, a menos que configurado para testes distribuídos, o que requer configuração adicional.

Benefícios do Teste de Carga com JMeter

O JMeter é uma ferramenta fantástica para teste de carga que oferece muitas vantagens, tornando-se uma favorita entre testadores. Para começar, é completamente gratuito e open-source, o que significa que você não precisa se preocupar com restrições de orçamento e está acessível a todos! Além disso, é poderoso 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 cargas.

Uma das melhores características do JMeter é sua escalabilidade. Quer você esteja executando testes pequenos ou simulando tráfego em larga escala, ele pode lidar com tudo isso sem esforço. E não podemos esquecer de seus recursos detalhados de relatórios e análise. Essas ferramentas ajudam a identificar problemas de desempenho cedo, tornando muito mais fácil otimizar sua aplicação e mantê-la funcionando de forma suave.

Algo 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. Além disso, seus recursos embutidos de relatórios e visualização facilitam a análise dos resultados dos testes e a identificação de quaisquer 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 lidar com 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 Java 8 ou uma versão superior instalada no seu sistema. Confirme que seu sistema operacional é compatível com o JMeter. O JMeter é projetado para funcionar em diversos sistemas operacionais, incluindo Windows, Linux e macOS.

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

    Passo 2: Baixar e Instalar o JMeter para 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. Arquivos binários, compostos por versões pré-compiladas do JMeter, podem ser executados imediatamente, enquanto arquivos fonte oferecem flexibilidade para configuração e compilação manual por desenvolvedores ou equipes. Normalmente, as versões binárias são preferidas pela facilidade de instalação. Diferentes tipos de arquivos para download, como .zip e .tgz, estão disponíveis.

    Depois de selecionar sua versão preferida, faça o download para seu sistema. Você pode abrir o arquivo, movê-lo para um local designado ou criar uma nova pasta para acesso futuro. Comece 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 depois de instalado, a funcionalidade do JMeter permanece consistente.
     

    Passo 3: Criar um Plano de Teste de Carga

    Os usuários do JMeter podem começar a criar seu plano de teste de carga do zero ou também selecionar a partir de vários modelos de plano de teste localizados no menu drop-down Arquivo. Os modelos incluem Plano de Teste SOAP WebService, Plano de Teste Web básico e avançado, Plano de Teste FTP (File Transfer Protocol), 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 clique no botão Novo na Barra de Ferramentas. É importante notar que você deve executar o JMeter no modo GUI para criar o Plano de Teste. A CLI, ou interface de linha de comando, é usada para executar o teste de carga. A seguir, falaremos sobre como especificar o número de usuários para seu teste de carga, 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 sobre Plano de Teste, passe o mouse sobre Threads (Usuários) e clique em Grupo de Threads.

    Na caixa de diálogo Grupo de Threads que aparecerá, você pode editar várias Propriedades de Threads, 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 parada do teste, e defina respostas para erros do Sampler. As propriedades de Threads são:

      • Número de Threads: Representa a quantidade de usuários virtuais conectando-se ao servidor.
      • Período de Ramp-Up: Denota o tempo que o JMeter leva para colocar o número especificado de threads em estado de execução.
      • Contagem de Loop: Indica o número de vezes que cada thread executa a tarefa.
      • Loop Infinito: Quando ativado, ignora a contagem de loop, causando um loop infinito até ser manualmente parado.
      • Atrasar Criação de Threads até o Necessário: Atrasar a criação de threads 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, proporcionando aos usuários controle sobre concorrência, duração e condições específicas do teste.
     

    Passo 5: Configurar Sampler no JMeter

    No JMeter, os Samplers permitem que o JMeter envie diferentes tipos de requisições. Por exemplo, podem ser 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ê entra com detalhes adicionais como o Protocolo (HTTP/S), Nome do Servidor ou IP, Caminho (para página web específica), e qual 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 dos Samplers no JMeter, o próximo passo envolve configurar os chamados Listeners. Na janela do Plano de Teste do JMeter, você pode escolher entre vários Listeners, incluindo Relatório Resumido, Gráfico Agregado, Visualizar Árvore de Resultados, Visualizar Resultados em Tabela, e muitos outros, para inspecionar e analisar seus resultados de teste minuciosamente. Além disso, você tem a flexibilidade de adicionar múltiplos Listeners a um Plano de Teste do JMeter. Uma vez feito isso, seu Plano de Teste está pronto, e você pode prosseguir para executar o teste.
     

    Passo 7: Gravar os Scripts do Teste de Carga

    Se seu objetivo é conduzir testes básicos de carga HTTP ou a nível de protocolo sem configuração extensa, não há configuração adicional necessária. Contudo, se você precisa de um teste que se assemelhe de perto às ações do 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. Esse controlador permite que você navegue num site ou aplicação, gravando suas ações através de requisições HTTP/S. Você também pode incluir múltiplos Controladores de Gravação por página, e isso economiza seu tempo para que você não precise adicionar manualmente cada requisição.

    O lado negativo disso é que sua gravação é feita com requisições HTTP/S e não está gravando em um navegador real, do ponto de vista 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 você está procurando uma solução mais simples e intuitiva, você pode optar por usar o LoadView, que tem o EveryStep Web Recorder. 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 (mostra respostas válidas e erros), Bytes e Bytes Enviados, Latência e Tempo de Conexão. Ao examinar esses resultados, você pode identificar locais de erros ou casos 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 o JMeter. Agora abordaremos o teste de diferentes APIs, como APIs SOAP e REST, com o JMeter. Os procedimentos de instalação e configuração permanecem consistentes com os passos mencionados anteriormente. Contudo, focaremos nos aspectos fundamentais do teste de API e discutiremos considerações importantes ao conduzir 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 se baseia em URIs (Uniform Resource Identifiers) e no 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á tiver 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 ramp-up e número de iterações de teste (Contagem de Loop) e editar muitas outras propriedades.
     

    Passo 3: Configurar Sampler

    Em seguida, precisamos adicionar o Sampler. Você pode escolher entre 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 sobre o Grupo de Threads, acionando uma janela drop-down. 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 mencionar que a janela de Requisição HTTP está dividida em seções Básica e Avançada. Para este teste, vamos nos concentrar 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.

    Comece inserindo a URL da API no campo Nome do Servidor ou IP (apenas o nome do domínio), junto com o protocolo apropriado, e no campo Caminho, adicione o caminho da API.

    Se esta é 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á-la no campo Parâmetros.

    Você também pode incluí-los no campo Caminho, entretanto, ao adicioná-los 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á para a Requisição HTTP na janela do Plano de Teste. Ao clicar com o botão direito, um menu drop-down será exibido; selecione Adicionar, depois Elemento de Configuração. Essa ação abre as opções disponíveis. Neste caso, opte pelo Gerenciador de Cabeçalhos HTTP. A janela do Gerenciador de Cabeçalhos HTTP que surgirá permite que você insira seus cabeçalhos de API. Após configurar suas definições, prossiga para o próximo passo.
     

    Passo 4: Adicionar Listeners

    Para incluir Listeners, simplesmente clique com o botão direito sobre o Grupo de Threads, escolha Adicionar, depois Listener. Isso provoca um menu drop-down oferecendo mais de 15 opções para escolher. As escolhas 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

    Depois de configurar e salvar os detalhes e as configurações do seu teste de carga, inicie o teste clicando no botão Executar na Barra de Ferramentas. A janela exibirá seus resultados do Sampler, apresentando vários 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) se distingue de uma API REST pois opera sob seu próprio protocolo. Ao testar APIs SOAP, surgem considerações específicas, incluindo segurança e conformidade, requisitos de largura de banda (APIs SOAP normalmente exigem mais recursos) e aspectos funcionais como lógica de repetição, que é ausente nas APIs REST.
     

    Passo 1: Criar um Plano de Teste de Carga

    O JMeter oferece uma variedade de modelos de Plano de Teste acessíveis pelo Menu ou pelo ícone Modelos na Barra de Ferramentas Principal. Uma das opções disponíveis é “Construir um Plano de Teste SOAP WebService.” Escolher essa opção gerará e abrirá o Plano de Teste correspondente. Como se trata de um modelo, certos campos conterão valores de espaço reservado 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 de 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 da API REST que cobrimos anteriormente. No entanto, o layout desta seção é diferente, exibindo por padrão o corpo da requisição da API SOAP. Esta seção também inclui subseções para Gerenciador de Cabeçalhos HTTP e Assertivas de Resposta. Similar à configuração da API REST, você pode incorporar Elementos de Configuração adicionais, como o Gerenciador de Autorização HTTP, caso seja necessário incluir detalhes específicos de autorização.
     

    Passo 3: Adicionar Sampler de Requisição HTTP

    Para um teste de carga de API SOAP, você deverá 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 os resultados do teste. Novamente, você pode adicionar quantos Listeners desejar e que sejam apropriados para o teste de carga da API SOAP.
     

    Passo 5: Executar Seu Teste

    Depois que a configuração e as definições do Plano de Teste estiverem configuradas, você finalmente poderá executar seu teste de carga da API SOAP e revisar os resultados quando a execução terminar.

    Conclusão

    Até agora, você deve ter aprendido o que é JMeter, como fazer teste de carga com JMeter e como realizar testes de carga para APIs com JMeter. Como você pode ver, configurar testes de carga com JMeter envolve muitos passos e opções de configuração, o que equivale a bastante tempo gasto configurando testes, em vez de executá-los. Apesar do JMeter ser uma solução open source e gratuita, você pode precisar buscar outras ferramentas de teste de carga que ofereçam melhores recursos e se adaptem à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 diversos cenários de curva de carga para maior flexibilidade nos testes. Em contraste com o JMeter, o LoadView não requer infraestrutura ou considerações adicionais, pois tudo é gerenciado de forma transparente. Diferente do JMeter, que se limita a testes de carga a nível de protocolo, o LoadView emprega navegadores reais, permitindo avaliar o desempenho real para sites, aplicações e APIs críticas. Além disso, o LoadView oferece múltiplas opções, como a lista branca de IPs de proxy estáticos ou o 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 painéis de desempenho amigáveis, fornecendo insights claros sobre os fatores que contribuem para o desempenho insatisfatório. Além disso, inclui um vídeo de referência para testes de páginas web e aplicações web, permitindo 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.