🎓
Mini Curso Apache JMeter
🚀 Treinamento Prático & Rápido de Testes de Desempenho

Mini Curso: Dominando o Apache JMeter

Aprenda a operar o Apache JMeter especificamente para testar o sistema de autenticação em https://qa.sauer.pro.br. Da criação do plano até a interpretação dos gráficos de QA.

⏱️ Duração: 15 min 🎯 Nível: Iniciante / Estudante 🧪 Alvo: https://qa.sauer.pro.br/login
1

Módulo 1: O que é o JMeter e como ele funciona?

O Apache JMeter é uma ferramenta open-source em Java usada mundialmente por engenheiros de QA para simular múltiplos usuários simultâneos disparando requisições contra um servidor web.

🤖
Robô Cliente HTTP

Ele não abre navegador: ele gera tráfego de rede HTTP puro em alta velocidade.

🧵
Usuários Virtuais (Threads)

Cada thread executa seu próprio fluxo como se fosse uma pessoa real.

⏱️
Cronômetro de Alta Precisão

Mede exatamente quantos milissegundos o servidor demorou para responder.

💡 Regra de Ouro do JMeter: O JMeter nunca processa JavaScript nem renderiza CSS/imagens como o Google Chrome. Ele apenas envia os dados (ex: usuário e senha via POST) e avalia o texto e o código HTTP retornado pelo backend.
2

Módulo 2: Os 5 Elementos Essenciais da Árvore do JMeter

No JMeter, tudo é estruturado em formato de árvore hierárquica. Você só precisa dominar estes 5 elementos:

1
Test Plan (Plano de Teste): É a raiz do projeto. Guarda todas as configurações gerais do teste.
2
Thread Group (Grupo de Usuários): Define a "carga" do teste: quantos usuários virtuais (Threads), em quanto tempo eles entram (Ramp-up) e quantas repetições farão (Loop Count).
3
HTTP Request (Sampler / Requisição): A ação que o usuário vai executar: acessar a URL, enviar dados de login, fazer download, etc.
4
Response Assertion (Validador de Resposta): O "oráculo" do QA: checa se a palavra esperada (ex: Bem-vindo, admin!) veio na resposta do servidor.
5
Listeners (Ouvintes / Relatórios): Onde você vê os resultados: tabelas estatísticas (Summary Report) e detalhes de cada chamada (View Results Tree).
3

Módulo 3: Passo a Passo do Laboratório (Construindo do Zero)

Configuração Exata para https://qa.sauer.pro.br

3.1 Criar e Configurar o Grupo de Usuários (Thread Group)

Botão direito em Test Plan ➔ Add ➔ Threads (Users) ➔ Thread Group

Preencha os campos na tela central com os valores para o Teste de Carga:

Number of Threads 20 (20 pessoas simultâneas)
Ramp-up period (sec) 5 (4 usuários a cada segundo)
Loop Count 5 (cada um repete 5 vezes)

3.2 Criar a Requisição de Login (POST /login)

Botão direito no seu Thread Group ➔ Add ➔ Sampler ➔ HTTP Request

Preencha os dados do servidor exatamente como abaixo:

Protocol https
Server Name or IP qa.sauer.pro.br
Port Number 443 (ou em branco)
HTTP Method POST
Path /login
Adicionar os Parâmetros de Login (aba Parameters):

Clique no botão Add duas vezes e digite:

Name: usuario  |  Value: admin
Name: senha  |  Value: 123456

3.3 Adicionar a Validação Automática (Response Assertion)

Botão direito em HTTP Request ➔ Add ➔ Assertions ➔ Response Assertion
  1. Mantenha Text Response e Substring selecionados.
  2. Na caixa Patterns to Test, clique em Add e digite: Bem-vindo, admin!

3.4 Adicionar os Relatórios (Listeners)

Adicione os dois relatórios essenciais clicando com o botão direito em Thread Group:

Add ➔ Listener ➔ View Results Tree
Add ➔ Listener ➔ Summary Report
4

Módulo 4: Como Ler o Summary Report (Dicionário de Métricas)

Coluna Significado em Português Meta Esperada em Teste de Carga
# Samples Total de requisições enviadas (Threads × Loop). 100 (20 × 5)
Average (ms) Tempo médio que o servidor demorou para responder em milissegundos. < 300 ms
Min / Max A resposta mais rápida e a mais lenta registrada. Max não deve ser discrepante
Error % Porcentagem de chamadas que deram erro HTTP (4xx, 5xx ou falha de asserção). 0.00%
Throughput Vazão: quantidade de requisições que o servidor conseguiu processar por segundo. Ex: 50 a 200 req/sec
5

Módulo 5: O Grande Experimento — Carga vs. Stress

Experimento A Teste de Carga Normal

Configure o Thread Group para:

  • Number of Threads: 20
  • Ramp-up: 5
  • Loop Count: 5
Resultado Esperado: Todas as amostras no View Results Tree verdes, tempo médio baixo e 0% de erro.
Experimento B Teste de Stress (Ponto de Ruptura)

Agora altere o Thread Group para:

  • Number of Threads: 500
  • Ramp-up: 10
  • Loop Count: 10
O que acontece: O servidor Flask e o SQLite começam a enfileirar as conexões. A latência sobe para vários segundos e surgem erros de Timeout ou Gateway Error.