Load Testing with Apache JMeter | Adding Elements

The order of the elements doesn’t really matter, but it’s easy to rearrange them. Simply drag the elements to the proper position and answer "Insert Before", "Insert After", or "Add as Child". Here I’ve dragged "HTTP Req 2" up after "HTTP Req 1":

Now let’s check if the response from the "Hello World" servlet really contains the text "Hello World". First we add a Response Assertion element to HTTP Req 1:

Then we state that we want to look for the text "Hello World!":

If the check fails, then the HTTP request will be marked "in error", just as if an HTTP error like "404" was received. To see the results of the assertion we add to the Thread Group a Listener for Assertion Results (in the same way as the other listeners).

Finally, we’ll now add a Timer element to get a more realistic test scenario. We select a Uniform Random Timer, where the timer delay for each request is defined as a fixed part plus a variable part:

We set the minimum delay to 2 seconds, and the variable part to 1 second. This will simulate a user that sits and thinks between 2 and 3 seconds before giving the next request.

Before we start the run, we define 20 threads (users) starting within 10 seconds (2 per second), and repeating the two HTTP requests 100 times. The test plan looks like this:

In case something gets out of control it’s always a good idea to save the test plan before you try to run. Select Aggregate Report so you’re ready to view the results, and then press Ctrl-R to run.

On my Win98, 866MHz computer with 128MB RAM, I get these figures:


Response times are in milliseconds. The last column is the number of requests per second (e. g. "HTTP Req 1", 20 users, average response time 0.1 sec = 200 requests per second).

Note that the number of errors is 0%. This means that the assertion reported OK.

Don’t expect to be able to simulate much more than 20-30 users on a computer such as I used. I’m running JMeter on the same computer as the web server, and thread handling in JMeter takes many resources, as we will see shortly.