Q8 of 38 · Performance

What are think times and why do they matter in load tests?

PerformanceMidperformancethink-timeload-modellinguser-simulation

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.

// WHAT INTERVIEWERS LOOK FOR

Articulating that think times are about *modelling humans*, awareness that load shape changes radically with/without them, and knowing when to drop them deliberately (stress, throughput tests).

// COMMON PITFALL

Using a flat 1-second think time everywhere because the script reads cleanly — the load profile is unrealistic and conclusions about user count are off by an order of magnitude.