Quando um plano de teste do JMeter contém vários grupos de threads, é possível executá-los em paralelo ou em série. Configure esse comportamento combinando uma configuração do JMeter com a configuração de carga do Performance Testing (PTS).
Tipos de grupos de threads no JMeter
O Apache JMeter oferece suporte a três tipos de grupos de threads, cada um com uma função distinta em um plano de teste:
|
Tipo de grupo de threads |
Função |
Exemplo |
|
Thread Group |
Bloco de construção principal. Cada grupo de threads define um pool de usuários virtuais e controla sua quantidade, comportamento e ciclo de vida. Utilize grupos separados para modelar diferentes perfis de usuário — por exemplo, compradores, vendedores e administradores em um marketplace. |
Simular 200 compradores navegando em produtos e 50 vendedores publicando anúncios simultaneamente. |
|
setUp Thread Group |
Executado antes de todos os outros grupos para preparar o ambiente de teste. O JMeter o executa primeiro automaticamente, sem necessidade de configuração especial. |
Estabelecer conexões de banco de dados ou popular dados de teste iniciais. |
|
tearDown Thread Group |
Executado após todos os outros grupos para limpar recursos. O JMeter o roda automaticamente depois que os grupos principais terminam. |
Fechar conexões de banco de dados ou excluir registros de teste. |

Como o PTS substitui as configurações do JMeter
O PTS aplica seus próprios valores de Concurrency, Loops e Test Duration aos grupos de threads principais no seu script JMeter. Os grupos setUp e tearDown mantêm a configuração original do JMeter e não são afetados.
|
Configuração do PTS |
Aplica-se a |
Comportamento |
|
Concurrency |
Apenas grupos de threads principais |
Sobrescreve a contagem de threads configurada em cada grupo principal do script JMeter. |
|
Loops |
Todos os grupos de threads principais |
Substitui a contagem de iterações para todos os grupos principais. |
|
Test Duration |
Todo o teste |
Defina um limite rígido de tempo. Ao atingir a duração, o PTS interrompe todos os grupos de threads. |

Execução de grupos de threads em paralelo
No modo paralelo, todos os grupos de threads principais iniciam simultaneamente e rodam de forma independente. Este é o comportamento padrão, ideal para os seguintes cenários:
Testes de carga com funções mistas. Modele diferentes tipos de usuários acessando o sistema ao mesmo tempo — por exemplo, 200 compradores navegando enquanto 50 vendedores publicam produtos e 10 administradores revisam relatórios.
Testes de múltiplos cenários. Valide vários endpoints de API ou módulos funcionais em uma única execução de teste.
Ciclos de teste mais curtos. Como todos os grupos rodam simultaneamente, o tempo total de teste diminui em comparação à execução em série.
Configurar execução paralela
Nas propriedades do Test Plan do seu script JMeter local, verifique se a opção Run Thread Groups consecutively (i.e one at a time) não está selecionada.

Comportamento da execução paralela
O teste termina quando os Loops configurados forem concluídos ou quando a Test Duration expirar, o que ocorrer primeiro. Cada grupo de threads roda independentemente; a conclusão antecipada de um grupo não afeta os demais.
Exemplo: Um plano de teste contém dois grupos de threads (A e B), Loops definido como 5 e Test Duration definida como 10 minutos.
|
O que acontece |
Motivo |
|
A e B iniciam ao mesmo tempo. |
A opção Run Thread Groups consecutively não está selecionada. |
|
Ambos os grupos iteram até 5 vezes cada. |
O PTS aplica Loops = 5 a todos os grupos principais. |
|
Se todas as 5 iterações terminarem em 5 minutos, o teste para na marca de 5 minutos. |
Os Loops foram concluídos antes da Test Duration expirar. |
|
Se as iterações não terminarem após 10 minutos, o teste para na marca de 10 minutos. |
A Test Duration expirou antes da conclusão dos Loops. |
Execução de grupos de threads em série
No modo serial, os grupos de threads rodam um após o outro. O próximo grupo inicia somente depois que o anterior concluir todas as suas iterações. Esse modo é adequado para os seguintes cenários:
Testes em etapas. Execute tarefas de inicialização em um grupo de threads antes do início do teste de carga principal — por exemplo, preencher um cache no grupo A e, em seguida, rodar o teste de carga real no grupo B.
Fluxos de trabalho dependentes. Teste cenários onde uma operação precisa ser concluída antes que a próxima comece, como criar recursos no grupo A e depois consultá-los no grupo B.
Configurar execução serial
-
Nas propriedades do Test Plan do seu script JMeter local, selecione Run Thread Groups consecutively (i.e. one at a time).

Defina o valor de Loops no PTS. O sistema aplicará esse valor individualmente a cada grupo de threads.
Configure uma Test Duration no PTS suficientemente longa para cobrir toda a execução serial. Se a duração for muito curta, o PTS interromperá o teste antes que os últimos grupos de threads terminem.
Comportamento da execução serial
Os grupos de threads rodam na ordem em que aparecem no plano de teste. Cada grupo completa todas as suas iterações antes que o próximo inicie.
Exemplo: Um plano de teste contém três grupos de threads (A, B e C) e o parâmetro Loops está definido como 5 no PTS.
|
Ordem de execução |
O que acontece |
|
1. Grupo de threads A |
Roda 5 iterações com a concorrência configurada e depois para. |
|
2. Grupo de threads B |
Inicia após o término de A. Roda 5 iterações e depois para. |
|
3. Grupo de threads C |
Inicia após o término de B. Roda 5 iterações e depois para. |
Estime a duração necessária do teste. Multiplique o tempo médio de resposta (RT) de cada requisição de serviço pelo número total de requisições em todos os grupos de threads. Adicione uma margem de segurança a essa estimativa ao definir a Test Duration no PTS para evitar interrupções prematuras.
Detalhes da interação entre PTS e JMeter
O PTS substitui as configurações de concorrência e iterações apenas nos grupos de threads principais. Os grupos setUp e tearDown sempre utilizam os valores configurados no JMeter.
No modo serial, defina uma Test Duration generosa. Caso a duração expire durante o teste, os grupos de threads restantes não serão executados.