In this tutorial, you will learn to use JMeter Post Processor such as Regular Expression Extractor, BeanShell, JDBC, Boundry Extractor etc.:
Processors are of two types Pre-processor and Post-processor.
Pre Processor executes before the sampler execution. Post Processors are used to execute the response data from the server and to save the specific extracted values for later use.
Post-Processors are actions that are performed after your sampler has been executed. You can use them to perform some actions on your response or extract some values out from the response and save them in a variable that can be used later.
=> Click here for The Complete Free Training On JMeter (20+ Videos)
Table of Contents:
Video Tutorial On JMeter Post Processor
Regular Expression Post-Processor uses a Regular Expression string to fetch some values from the response of your request. The value(s) which is extracted can be stored in any variable and can be a reference in any further request in the test plan. Values can be extracted from the response body, header, URL, response code, and other provided fields when you add this processor.
JMeter POST Processors
Post Processor executes when Sampler request execution is done. There are various Post processors that are being used in JMeter.
The element list includes:
- Regular Expression Extractor
- CSS/JQuery Extractor
- XPath Extractor
- BeanShell Post Processor
- Result Status Action Handler
- JSR223 Post Processor
- JDBC Post Processor
- JSON Path Post Processor
- Boundary Extractor
- BSF Post Processor
- Debug Post Processor
Let’s go through these JMeter Post Processors:
#1) Regular Expression Extractor
A regular expression extractor is used to get the information from the response of the server. It uses Perl-type Regular expression for extracting the information i.e. values. This processor will run after each sampler request is executed.
How it works:
Sampler Request->Apply Regular expression extractor-> Information/Value extraction-> Template String generation ->Storage of extracted value/Information in a specific variable name
- Create a Test Plan
- Add Thread Group
- Add Sampler “HTTP Request”
- Add the Processor “Regular expression extractor”
Apply To: “Apply to” has 4 options.
- Main Sample and Sub Samples: It applies to both main samples and Sub Samples.
- Main Samples only: It gets applied to the main samples only.
- Sub Samples only: It gets applied to Sub Samples only.
- JMeter Variable: The extraction is applied to the named variable only.
Field To Check: Field to check has a number of options. All the field names are self-explanatory as their name suggests.
- The body represents the body of the response i.e. content excluding headers.
- Body (Unescaped): The body of the response which has all the HTML escape codes replaced.
- Body as a Document – From the number of documents data is extracted.
The name of the created variable will have the extracted text saved.
The regular expression will match the pattern against the text to be extracted.’.+?’ represents a single instance of the text placed by the tags.
Template: Template is used to create a String for the extracted values match.
$1$ represents group 1
Match No (0 for Random): To get which one to select as a variable.
- 0 indicates a random value from the found results.
- Nth number indicates the nth number from the found results.
- Any negative number – indicates that all the data should be extracted.
Default Value: The reference value is set to the default value in case the Regular expression does not match.
Add Listener View Results tree.
#2) CSS/JQuery Extractor
CSS Selector Extractor is used to extract the values/information from the HTML response of the server.
How it works:
- Create Test Plan
- Add Thread Group
- Add Sampler “HTTP Request” to the thread.
- Add the Processor “CSS Selector Extractor” and provide the below details:
CSS/JQuery extractor Implementation: Two options are provided to choose for Implementation:
- Jsoup
- Jodd-Lagarto
In case none of the implementations is chosen, by default JSoup is considered.
CSS selector expression: For extraction, a CSS locator can be used. Say the user has to extract the list of cities from where the flight will depart from a booking site. Users can provide a CSS locator in the field to get the expected result.
CSS Selector expression is used to select nodes from the HTML response data from the server.
Add listener “View Result Tree” to view the results.
#3) XPath Extractor
XPath Extractor uses Xpath Query language to extract value from XML or X( HTML) responses.
Let’s take an example of how Xpath extractor can be used:
- Create a test Plan
- Add Thread Group
- Add HTTP Request default config element to the Thread Group and provide Server name or IP.
- Add two HTTP Samplers and provide the details Path in that.
- Add Xpath extractor and provide details as:
- Name of the creator: The result will be Stored in the created variable name which is provided in this field.
- Xpath Query: Query in XPath language.
- Match No (0 for Random): 0 will extract random values and -1 will extract all the values.
- Default Value: NOTFOUND
- Default value NOT FOUND will be returned in case there is no match found.
Use Tidy should be selected for the HTML response to be converted to XHTML.
- Add Debug Sampler. It is used to debug the script and its result can be seen via the added listener.
- Add listener as View Result Tree.
#4) Result Status Action Handler
Result Status Action handler let the user select the action to be taken when the sampler gets any error.
Below are actions that can be taken:
- Continue
- Start next thread loop
- Stop thread
- Stop test
- Stop test now
- Break Current loop
- Go to the next iteration of the current loop
Let’s take an example when the Stop Test Now option is chosen.
- Create a Test Plan
- Add processor ->Result Status Action Handler and select Stop Test Now option
- Add Configuration element ->HTTP Request defaults and provide the server name or IP
- Add Sampler-> HTTP Requests with path resources/
- Add another Sampler with an incorrect path
- Add another Sampler with a path for the Homepage.
- Add Listener ->View Results in the table and run the script.
Since the Stop test now was chosen as an action, the processor did not allow the next sampler to run.
#5) BeanShell Post Processor
This Processor executes after the Sampler.
Reset bsh.Interpreter before each call: For each sampler, the interpreter will be recreated in case this option is selected.
Parameters: Parameters are the ones that will be passed to the Bean shell script.
Script Files: Script file is the file in which the Beanshell script is stored to run.
Script: Script is the Beanshell script.
#6) JSR223 Post Processor
In this processor, the script is applied only when the sampler has been executed.
Let’s take an example for the same:
- Create a Test Plan
- Add Thread Group
- Add Sampler ->HTTP Request to the thread and provide server name or IP.
- Add the Processor “JSR223 Post Processor” to the thread. Select language Groovy as in the below screenshot:
Write a script using the syntax below and observe the results in logs:
Logs can be written with variables as well, as displayed in the below screen:
New variables can also be added. Refer to the below screenshot for the same.
Add a Debug sampler to the thread and listener as View Results Tree and run the test.
#7) JDBC Post Processor
SQL queries are run after the Sampler has executed to make the changes that need to be reverted after the testing is done or are not required.
It can be used by,
- Creating a Test Plan
- Add JDBC Connection Configuration with details of URL and credentials.
- Add JDBC Request providing the inputs such as variable names and output as Result variable name. Query type can be selected from the list as shown below:
- Add Debug Sampler to view the variable values.
- Add the Listener View Results tree to view the results.
#8) JSON Path Post Processor
This Processor gets the data from the JSON response using JSON Path syntax. It is created under the Sampler which has a response.
- Create a Test Plan
- Add thread group to the test plan.
- Add Sampler HTTP Request.
- Add config element as “HTTP header Manager”.
- Add Processor as JSON Path processor
- Add the JSR223 processor and select Bean shell language and provide a script.
- Add listener “View Result tree”.
- Run the test.
The name of the created field is the one where the result is stored. $.name in JSON path expression represents all names to be in the result. 0 match number is for a random value to be chosen. If nothing is returned in that case it will show name_not found.
#9) Boundary Extractor
The boundary extractor extracts data from the boundaries of the server response after the sampler has been executed. Once data/values have been extracted, the Template string needs to be generated and then the results are stored in the provided variable name.
How to use:
- Create Test plan
- Add thread in the test plan
- Add sampler-> HTTP Request in the thread.
- Add Boundary extractor processor and fill in the details as shown below in the screenshot:
Name of Created Variable: The result is Stored in the created variable name which is provided in this field.
Left Boundary: Value of the left boundary to be found.
Right Boundary: Value of the right boundary to be found.
- Add the JSR223 processor to get the result printed in logs.
#10) Debug Post Processor
This Processor is used in case any sampler needs to be debugged, it is added as a child to that sampler.
FAQ About Post Processor
Q #1) Can JMeter be used for Unit testing?
Answer: Yes, it can be used for Unit testing. It can be used as a Unit testing tool for Webservices, FTP, LDAP, Java database connectivity (JDBC) database connections, and TCP connections.
Q #2) How do I save a request body in JMeter?
Answer: To save a request, the “ View Result Tree” listener can be used.
Add->Listener->View Result tree ->Configure button-> Select in which type data has to be stored
Q #3) What is the execution order of JMeter elements?
Answer: Below listed is the execution order of Jmeter elements when multiple elements are there in the thread group.
- Configuration Elements
- Pre-processor (Only if they are applied to any sampler)
- Timers (Only if they are applied to any sampler)
- Sampler
- Postprocessor (Only if they are applied to any sampler)
- Assertions (Only if they are applied to any sampler)
- Listeners
Q #4) What is JSR223 in JMeter?
Answer: JSR223 is a scripting API for Java languages. JMeter has elements like JSR223 Sampler, JSR223 Pre-processor, JSR223 Post processor, and JSR223 Listener. JSR223 helps in the execution of scripts which is written in various languages.
Q #5) Is JMeter good for API testing?
Answer: It is an open-source tool that can be used for API testing as well as for functional, performance, load, and automation testing.
Q#6) Which language is used in JMeter?
Answer: Groovy language is mostly used and is suitable as Groovy scripting language is easy to use and can be integrated with Java to enhance more scripting potential.
Conclusion
Post Processors, as the name suggests, run post the sampler execution. All the processors play their own role and extract the data from various responses the Regular expression extractor uses Perl type regular expression to extract values from server responses, CSS selector extractor uses CSS selector to extract data from HTML responses.
XPath extractor uses XPath Query language to extract data from XML or XHTML responses. JSON Extractor uses JMESPath Query language. The result Status action handler handles the result by allowing to stop of the thread if the sampler fails. The boundary extractor extracts values from the boundaries of the server response.
=> Click here for The Complete Free Training On JMeter (20+ Videos)