Next Practical Step
Choose the appropriate workload model for your test objectives and parameterize thread counts using properties (\${__P(threads,10)}).
Design robust load models in JMeter: Standard, Concurrency, Stepping, and Ultimate Thread Groups for spike, stress, soak, and step-up tests.
A Thread Group is the execution engine of any Apache JMeter test plan. It defines how many virtual users (threads) execute the test, how fast they spin up (ramp-up), how long the test runs (duration), and how the workload progresses over time.
This guide explores both core JMeter thread groups and custom plugin thread groups, explaining how to model the 5 major performance testing types: Baseline, Step-Up (Load/Stress), Spike, Soak (Endurance), and Breakpoint.
| Thread Group | Source | Key Advantage | Best Testing Scenario |
|---|---|---|---|
| Standard Thread Group | Built-in | Zero plugins required; simple ramp-up and duration controls | Baseline, smoke, and simple steady-state load tests |
| setUp Thread Group | Built-in | Runs strictly before main load starts | Test data creation, admin login, pre-warming cache |
| tearDown Thread Group | Built-in | Runs strictly after main load finishes | Test data deletion, database cleanup, report notifications |
| Concurrency Thread Group | JMeter Plugins | Dynamic thread adjustments, step ramp-ups without thread restart | Step-up load tests, target RPS shaping with Throughput Timer |
| Ultimate Thread Group | JMeter Plugins | Complete control over multi-stage schedules (staggered ramp, hold, shutdown) | Complex multi-wave schedules and spike testing |
| Arrivals Thread Group | JMeter Plugins | Open workload model: schedules arrival rate (iterations/sec) instead of fixed users | Modern cloud APIs where user arrivals are independent of system latency |
50020 minutes5 (Increments of 100 users every 4 minutes)10 minutesAction to be taken after a Sampler error: Continue (or Start Next Thread Loop)Number of Threads (users): \${__P(threads, 50)}Ramp-up period (seconds): \${__P(rampup, 60)}Loop Count: Infinite (checked)Specify Thread Lifetime: CheckedDuration (seconds): \${__P(duration, 1800)}Startup delay (seconds): 0For advanced step-up tests, combine the Concurrency Thread Group with the Throughput Shaping Timer (via JMeter Plugins):
Thread Schedule in the Thread Group to link with the Throughput Shaping Timer.Ramp-up (seconds) >= Target Threads / (5 to 10)(e.g., for 500 threads, ramp up over at least 50 to 100 seconds). 3. Choose “Start Next Thread Loop” on Error: For multi-step business journeys, when step 1 (login) fails, starting the next loop avoids cascading 404/401 errors on subsequent steps.