Skip to main content

Regular Expression extractor and JMeter

When using JMeter for performance testing of RESTful services, you may come across situations when you have to extract response from one request and pass it on to another request. This can be accomplished using regular expression extractor. 

This post illustrates an example of extracting parameter from json expression without using any JMeter plugin. The drawback of using plugin is that you would have to make it available on each JMeter installation where you want to run the test.

Let's consider following JSON expression - 

   "access_token":"18b8b379-b875-467a-9f22-37b60024c1b9",
   "uid":"test user",
   "grant_type":"password",
   "scope": 
      "uid",
      "cn"
   ],
   "realm":"employees",
   "cn":"",
   "token_type":"Bearer",
   "expires_in":3599
}

Let's assume that we want to fetch value of access_token from this expression.
Then following regular expression can be used - 

"access_token":"(.+?)"

Let's look at these special characters one by one -

1 opening and closing parenthesis () enclose the portion of matched string to be returned
2 . means match any character
3 + means one or more times
4 ? means stop when first match occurs

without ?, the .+ would continue beyond first quotation " until it finds last quotation " and indeed this is not what we want.

For this specific example it is more efficient to use following expression - 
"access_token":"([^"]+)"
Herein [^"] means match everything except "
And matcher stops as soon as it finds first quotation "

Did you know that you can also test regular expression from with in JMeter? Run your test with 1 user and open results in ViewResultsInTree listener. ViewResultsInTree listener has a drop down to show results in different views. Select RegExpTester, paste your regular expression and hit Test button :-)

Comments

Popular posts from this blog

Performance Testing in the Cloud with JMeter & AWS

JMeter is a wonderful tool  to stress test your website and  your application architecture , however if you are trying to simulate many users (>1000) one JMeter instance (=pc) will not be sufficient. You will have to set up a JMeter cluster with multiple machines. JMeter is capable or running  distributed tests , but it comes with limitations. Since most of us don’t have multiple servers laying around somewhere, we usually go to cloud service providers like  AWS , spin up a couple of  EC2 instances  and turn them off whenever we’re done. Here is the problem, JMeter uses  Java RMI (Remote Method Invocation)  to communicate to its slaves, but these connections require all machines to be on the same subnet and this is not feasible with EC2 instances. Below, I explain how to get around this problem using a 3 node configuration in AWS to execute tests. I assume that you have a written the test already and have the .jmx file r...

JMeter Exceeded Maximum Number of Redirects Error Solution

While running performance test, JMeter allows maximum 5 redirects by default. However, if your system demands more than 5 redirects, it may result in JMeter exceeded maximum number of redirects error. In this post, we have listed down steps to overcome this error. Actual error in JMeter: Response code: “Non HTTP response code: java.io.IOException” Response message: “Non HTTP response message: Exceeded maximum number of redirects: 5” This error is noticed because  JMeter  allows maximum 5 redirects by default and your system may be using more than 5 redirects. You need to increase this count to more than 5 in jmeter.properties file. Follow below steps to achieve this. Navigate to /bin directory of your JMeter installation. Locate jmeter.properties file and open it in any editor. Search for “httpsampler.max_redirects” property in opened file. Uncomment the above property by removing # before it. Change to value to more than 5 Eg. 20. Save the file and restart JMet...

SSO with SAML login scenario in JMeter

SAML(Security Assertion Markup Language) is increasingly being used to perform single sign-on(SSO) operations. As WikiPedia puts it, SAML is an XML-based open standard data format for exchanging authentication and authorization data between parties, in particular, between an identity provider and a service provider. With the rise in use of SAML in web applications, we may need to handle this in JMeter. This step-by-step tutorial shows SAML JMeter scenario to perform login operation. First request from JMeter is a GET request to fetch Login page. We need to fetch two values ‘SAMLRequest’ and ‘RelayState’ from the Login page response data. We can do this by using  Regular Expression Extractor . These two values need to be sent in POST request to service provider. Refer below image to see how to do this. We will get an HTML login page as a response to the request sent in 1st step. We need to fetch values of some hidden elements to pass it in the next request. We...