I’m trying to understand the basics of JMeter. I’ve got a “plus1” Java servlet that adds one to a request parameter and returns the result, so it’s a fast test servlet just so I can understand load testing.
Here’s my test plan:
Thread Group: 1 thread, ramp up 1 s, loop count 10000
HTTP Request to localhost
Graph Results
Summary Report
When I run this, the summary report shows a throughput number of 200/sec or so.
The key question, with no controllers in the test plan, is JMeter running the test plan (sending a single request) and waiting for the response before looping?
When I introduce a more computationally intensive page for the request, the throughput number goes down as I would expect.
In short, yes.
There is an argument for having a sampler that would make a request and not wait for the response but it’s an edge case. In most cases you would want a testing tool to wait to see what happens and verify things. It’s also more realistic, most users will wait for a response, in fact they generally have to, before making subsequent calls.
If you want to run a capacity test then the best approach, I think, is to spread the load over multiple threads and to actually throttle the throughput of each one – you can do this using a Constant Throughput Controller. Eg. You could have 500 threads each running at 60 requests per minute, this would give a total load of 500 reqs/sec. This way, your test load is predictable and stable – it won’t be linked to the speed of response from the server. Note. with multiple threads you’ll want a ramp up period and you might find you have to spread the test over multiple machines (known as ‘distributed’ testing if you’re going to google it).