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ão, 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 são esperados para lidar com tráfego significativo de usuários. Para garantir que suas aplicações possam funcionar sob condições de tráfego alto ou sustentado, é essencial utilizar 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 é o 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 falha. É 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 otimizar suas necessidades de teste de carga e melhorar o desempenho digital. Não há limites para a quantidade e variedade de ferramentas e plataformas disponíveis no mercado hoje, 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 olhar para o 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 é o 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 documentação extensa, forte suporte da comunidade e melhores práticas estabelecidas. Além disso, por ser gratuito e open-source, é uma escolha econômica, mas como é 100% Java, pode exigir que sua equipe dedique tempo e recursos adicionais para iniciar os processos de teste.

O JMeter suporta uma variedade de protocolos, incluindo HTTP, HTTPS, FTP e outros, 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. Muitas equipes também integram testes JMeter em pipelines CI/CD para realizar verificações de desempenho durante builds e implantações. Você pode usar o JMeter para analisar e medir o desempenho de aplicações web ou serviços. Analisando os dados coletados e gerando 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. Suporta todos os protocolos básicos como HTTP, JDBC, LDAP, SOAP, JMS e FTP.
  • Gravação e Reprodução: JMeter permite gravar a atividade do usuário em um navegador para ser simulada e depois você pode reproduzir essa gravação.
  • Relatórios personalizáveis: Visualize os resultados do teste em diferentes formatos como gráficos, tabelas ou arquivos de árvore e log.
  • Suporte da comunidade: Há uma grande comunidade com ajuda, orientação e tutoriais.
  • Extensibilidade: JMeter pode ser estendido com plugins para aprimorar sua funcionalidade, permitindo aos usuários adaptar a ferramenta às suas necessidades específicas.
  • Escalabilidade limitada na nuvem por padrão: JMeter geralmente roda localmente, a menos que configurado para testes distribuídos, o que requer configuração adicional.

Benefícios do Teste de Carga com JMeter

JMeter é uma ferramenta fantástica para teste de carga que oferece muitas vantagens, tornando-a favorita entre os testadores. Para começar, é completamente 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, fornecendo uma imagem clara de como sua aplicação se comporta sob diferentes tipos de carga.

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

Uma das coisas que amamos 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 as coisas simples e intuitivas. Além disso, seus recursos integrados de relatórios e visualização facilitam a análise dos resultados dos testes e a identificação de qualquer gargalo de desempenho. Em resumo, 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 a 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 no 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.

    Após 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 os testes 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 com base em suas necessidades específicas. Os arquivos binários, que contêm versões pré-compiladas do JMeter, podem ser executados imediatamente, enquanto os 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 uma vez 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 diversos templates de plano de teste localizados no menu suspenso Arquivo. Os modelos incluem Plano de Teste SOAP WebService, 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 templates de teste incluirão todos os elementos, seções e campos específicos necessários para você criar e construir seu plano de teste de carga.

    Para criar um Plano de Teste, basta ir em Arquivo e selecionar Novo ou clicar no botão Novo na Barra de Ferramentas. É importante notar que você deve executar o JMeter em 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 especificar o número de usuários para seu teste de carga, conhecido também como Thread Group.
     

    Passo 4: Adicionar e Configurar o Thread Group no JMeter

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

    Na caixa de diálogo do Thread Group que aparecerá, 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 parada 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-se ao servidor.
      • Período de Ramp-up: Indica o tempo que o JMeter leva para colocar o número especificado de threads em estado de execução.
      • Contagem de Loop: Indica quantas vezes cada thread executa a tarefa.
      • Contagem de Loop Infinito: Quando ativado, ignora a contagem de loop, causando um loop infinito até ser parado manualmente.
      • Atrasar Criação de Thread até o necessário: Atrasa a criação dos threads até que um valor especificado (em segundos) seja atingido.
      • Agendador: Permite configurações para agendar testes em horários específicos quando ativado.

    Esse passo permite uma personalização meticulosa dos parâmetros do teste de carga, proporcionando 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 solicitações HTTP (para um site, aplicação ou API), solicitações FTP, SMTP, TCP e muitos outros. Aqui, você insere detalhes adicionais, como Protocolo (HTTP/S), Nome do Servidor ou IP, Caminho (para página web específica), e o tipo de solicitação, como GET, POST, HEAD, PUT, etc., que podem ser usados para teste de carga de API.
     

    Passo 6: Configurar os 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 Resumido, Gráfico Agregado, Visualizar Árvore de Resultados, Visualizar Resultados em Tabela, e muitos outros, para inspecionar e analisar minuciosamente os resultados do seu teste. Além disso, você tem a flexibilidade de adicionar múltiplos Listeners a um Plano de Teste JMeter. Com tudo isso feito, 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 é realizar testes básicos de carga HTTP ou em nível de protocolo sem muita configuração, não é necessário nenhum ajuste adicional. No entanto, se você precisa de um teste que se pareça mais com as ações do seu usuário, será necessário utilizar o Gravador de Script de Teste HTTP(S) no JMeter.

    No Thread Group, você deve adicionar o Controlador de Gravação. Esse controlador permite navegar por um site ou aplicação, gravando suas ações através de solicitações HTTP/S. Você também pode incluir múltiplos Controladores de Gravação por página, economizando tempo para não precisar adicionar manualmente cada solicitação.

    A desvantagem disso é que sua gravação é feita com solicitaçõ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 Proxy Server do JMeter, mas este pode ser um processo trabalhoso e difícil. Se você procura uma solução mais simples e intuitiva, pode optar por usar o LoadView, que dispõe do Gravador EveryStep Web. O gravador do LoadView provê script point-and-click usando navegadores reais, sem a configuração complexa e demorada do JMeter.
     

    Passo 8: Executar o Teste de Carga

    Após 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 rodar o teste no modo CLI para obter melhores resultados.
     

    Passo 9: Visualizar os 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 enviados e recebidos, Latência e Tempo de Conexão. Examinando esses resultados, você poderá identificar locais de erros ou casos de tempos de carga 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 testes em diferentes APIs, como APIs SOAP e REST, com JMeter. Os procedimentos de instalação e configuração permanecem consistentes com os passos mencionados anteriormente. Porém, focaremos nos aspectos fundamentais do teste de API e discutiremos considerações importantes ao realizar testes de API usando o 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 arquitetônico que se baseia em URIs (Identificadores Uniformes de Recursos) 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 será aberta. Caso já tenha o JMeter aberto, também pode selecionar o botão Novo na Barra Principal de Ferramentas para criar um novo Plano de Teste.
     

    Passo 2: Adicionar e Configurar o Thread Group no JMeter

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

    Passo 3: Configurar o Sampler

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

    Para iniciar esse processo, clique com o botão direito no Thread Group, o que abrirá uma janela suspensa. Escolha Adicionar, depois Sampler. Uma lista de opções de Sampler aparecerá. Para teste de API, escolha 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 Requisição HTTP é dividida em seções Básica e Avançada. 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 outros 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 do domínio), juntamente 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ções HTTP.

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

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

    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, aparecerá um menu suspenso; selecione Adicionar, depois Elemento de Configuração. Esta ação abrirá as opções disponíveis. Neste caso, escolha Gerenciador de Cabeçalho HTTP. A janela seguinte permite que você insira os cabeçalhos da sua API. Após configurar suas definições, prossiga para o próximo passo.
     

    Passo 4: Adicionar Listeners

    Para incluir Listeners, basta clicar com o botão direito no Thread Group, escolher Adicionar, depois Listener. Isso abrirá um menu suspenso com mais de 15 opções para escolher. 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

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

    Teste de API SOAP com JMeter

    SOAP (Protocolo de Acesso a Objetos Simples) é diferente de uma API REST pois opera sob seu próprio protocolo. Ao realizar testes de carga em APIs SOAP, surgem considerações específicas, como segurança e conformidade, requisitos de largura de banda (APIs SOAP geralmente demandam mais recursos), e aspectos funcionais como lógica de retry, que está ausente em APIs REST.
     

    Passo 1: Criar um Plano de Teste de Carga

    O JMeter oferece uma variedade de templates de Plano de Teste acessíveis através do Menu ou do ícone Templates na Barra Principal de Ferramentas. Uma das opções disponíveis é “Construir um Plano de Teste SOAP WebService”. Escolhendo essa opção, você gerará e abrirá o Plano de Teste correspondente. Como este é um template, certos campos conterão valores de marcador que você deve substituir pelos 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 Thread Group principal, você pode acessar as configurações de Requisição HTTP, semelhante à configuração de API REST que abordamos anteriormente. Contudo, o layout dessa seção é diferente, exibindo por padrão o corpo da requisição SOAP. Essa seção também inclui sub-seções para Gerenciador de Cabeçalho HTTP e Aserções de Resposta. Semelhante à configuração da API REST, você pode incorporar Elementos de Configuração adicionais, como Gerenciador de Autorização HTTP, se detalhes específicos de autorização precisarem ser incluídos.
     

    Passo 3: Adicionar Sampler de Requisição HTTP

    Para um teste de carga de API SOAP, você desejará 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 seu teste. Novamente, você pode adicionar quantos Listeners desejar, conforme apropriado para o teste de carga da API SOAP.
     

    Passo 5: Executar seu Teste

    Assim que a configuração e as definições do Plano de Teste estiverem feitas, você finalmente pode executar seu teste de carga da API SOAP e revisar os resultados quando ele terminar.

    Conclusão

    Até agora, você já deve ter aprendido o que é o JMeter, como fazer teste de carga com JMeter e como realizar testes de carga para APIs com o JMeter. Como pode ver, configurar testes de carga com JMeter envolve muitos passos e opções de configuração, o que significa muito tempo gasto configurando os testes, em vez de executá-los. Apesar de o 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 adequem às necessidades do seu negócio.

    LoadView: A Melhor Alternativa ao JMeter

    LoadView destaca-se como uma das principais soluções pagas de teste de desempenho disponíveis atualmente, oferecendo uma variedade de recursos. Estes incluem o gravador de script point-and-click EveryStep, 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, pois tudo é gerenciado de forma integrada. Diferente do JMeter, que é limitado a testes de carga em nível de protocolo, o LoadView utiliza navegadores reais, permitindo avaliar o desempenho real de sites, aplicações e APIs críticas. Além disso, o LoadView oferece múltiplas opções, como whitelist de IPs proxy estáticos ou uso de um agente on-site, possibilitando testes em aplicações atrás do seu firewall e oferecendo maior flexibilidade para testes de desempenho.

    O LoadView entrega relatórios e dashboards de desempenho fáceis de usar, oferecendo insights claros sobre fatores que contribuem para desempenho insatisfatório. Além disso, inclui um vídeo de referência para testes de página web e aplicação 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, o que o diferencia de algumas outras ferramentas no mercado.

    Leve seus testes de carga para o
    Próximo Nível

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