Duration Assertion In Jmeter

The Duration Assertion or we can say response time assertion in Jmeter, is used to verify the response time of HTTP requests, JDBC requests, and other transactions. It allows us to set the maximum time limit for response times. If the response time exceeds the defined threshold, the assertion will fail, indicating performance issues that need to be addressed.

Let’s first make a simple test plan which we can use to demonstrate the functioning of Duration Assertion.

Add an HTTP request

We will hit an HTTP request to “jmeter.apache.org” and then will measure its performance using the Duration Assertion.

Create an HTTP sampler by right-clicking on the Thread Group and selecting “Add” > “Sampler” > “HTTP Request”.

Create HTTP sampler in jmeter

We will hit the get request on the “jmeter.apache.org” URL.

  • Put “https” in the input box labeled “Protocol[https]:”.
  • Enter “jmeter.apache.org” in the input box labeled “Server Name or IP”.
  • By default, the HTTP request value is set to GET. Since we are only executing a GET request, we won’t be changing it.
  • Set the Path to “/“.
executing jmeter api

Let’s add a listener to see information about the requests sent and responses received before hitting the requests.

Add “View Results Tree” listener

View Results Tree listener is one of the most used listeners in Jmeter. It provides detailed information about server responses to requests sent during performance testing.

Add the “View Results Tree” listener by right-clicking on the HTTP request and selecting “Add” > “Listener” > “View Result Tree”.

View Result Tree

After adding the listener, execute the test by clicking on the green start button.

Start button in jmeter

Now, let’s add the Duration Assertion to assert whether the response of API came within the specified time

Add Duration Assertion

Right-click on the HTTP request and select “Add” > “Assertions” > “Duration Assertion”.

Add Duration Assertion in Jmeter
Duration Assertion screen

Here you might already be noticing a few things –

  • One is the “Apply to” section
  • and the second is the “Duration to Assert” section.
Apply to Section

Let’s discuss each of them one by one

Main sample only
  • If you choose “Main sample only,” the assertion will only affect the primary sampler, which is the main request being made. It won’t take into account any embedded resources, such as images, stylesheets, or scripts, that may be fetched as part of the main request.
  • Suppose you are conducting a web page load test. In that case, the “Main sample only” option will measure the response time of the HTML page itself without taking into account the response times of the embedded resources like images, CSS files, and JavaScript files.
Sub-samples only
  • When selecting “Sub-samples only,” the assertion applies only to embedded or sub-samples within the primary sampler. This feature is helpful when analyzing individual response times of embedded resources.
  • If you are conducting a web page load test and want to ensure that all the images on the page load within a specific time limit, you can use the “Sub-samples only” option.
Main sample and sub-samples
  • Selecting “Main sample and sub-samples” means that the assertion will be applied to both the primary sampler and any embedded or sub-samples associated with it.
  • In the example of a web page load test, this option evaluates the response time of the main HTML page as well as all embedded resources (images, CSS, JavaScript, etc.) together.
Duration to Assert

Here we specify the maximum time in milliseconds for the expected response. If the response takes longer, the request will fail.


Now, let’s see it with examples

Example 1

Let’s select the Main sample and sub-samples option and set the time as 40 milliseconds.

Selecting main and sub sample

Execute the test and check the “View result tree”. The request fails due to exceeding the timeout limit of 40 milliseconds. You can also see the message printed as “The operation lasted too long: It took 505 milliseconds, but should not have lasted longer than 40 milliseconds.”

Result of executing main and sub sample

This is how Duration Assertion works in Jmeter and the test case would have passed if the response time was lower than 40 milliseconds.

Example 2

Let’s now choose the option “Sub-samples only” and keep the time at 40 milliseconds.

This time, our test case passed because the sub-samples were processed in less than 40 milliseconds.

Running sub-samples only

This is how we can use the Duration Assertion to assert whether responses are coming within a specified time or not.

We hope that you have liked the article. If you have any doubts or concerns, please write to us in the comments or mail us at admin@codekru.com.

Liked the article? Share this on

Leave a Comment

Your email address will not be published. Required fields are marked *