Q8 of 38 · Performance
What are think times and why do they matter in load tests?
Short answer
Short answer: Think time is the pause a real user makes between actions — reading a page, deciding, typing. Removing think times multiplies effective load, so you measure throughput limits instead of realistic user load. The right test has both realistic think times and a stress mode without them.
Detail
Think time models the human in the loop. A user who logs in, browses for 30 seconds, adds to cart, reads the cart for 10 seconds, then checks out is very different load on the system from a script that fires those four requests with no pause: the no-think script generates roughly 10x more requests per VU per minute.
Why this matters for sizing: if you want to simulate "1000 concurrent users" the way the business means it (1000 humans on the site), you need think times. Without them, 1000 VUs without sleeps acts like 10,000+ humans.
Three flavours of think time:
- Constant (e.g.
sleep(3)) — easy but unrealistic; real users vary. - Random uniform (
sleep(random(1,5))) — better, simulates variation. - Distribution-based (negative exponential, log-normal) — most realistic for time-on-page metrics, captures the long tail of slow-reading users.
When to remove them: stress and capacity tests intentionally drop think times to find the system's throughput ceiling. Pacing tests (e.g. "we need 500 RPS sustained") set arrival rate directly and ignore think time entirely. Soak and load tests targeting realistic user count should include them.
Common mistake: setting a single sleep(1) between every request and calling it think time. Real users pause more between page transitions than between an XHR and the next click; the think pattern should match the journey shape.