JMeter is a Load-Testing Tool used for Performance Testing. A Performance Tester can record actions in a web browser or manually build a script which can then be run with hundreds or thousands of users.
JMeter can be used to create incredibly dynamic users and scenarios using its various elements. For instance, the
CSV Data Set Config can be used to specify a set of users to log into a web application. The
Regular Expression Extractor or the CSS/JQuery Extractor can be used to save session ids to be used in future requests. The
JSR223 PreProcessor coupled to Groovy language can be used to create dynamic unique data for each user to be sent as part of a
|Version||Java Version||Release Date|
Installation or Setup
Download a distributed archive from Binaries section of JMeter from Download Apache JMeter page.
Depending on the version you downloaded, check minimal Java version requirements and install Java if needed. Ensure the
JAVA_HOMEenvironment variable is set and points to a correct version.
Extract the distribution archive in the directory of your choice.
Open JMeter UI:
On Windows: navigate to
<jmeter_location>\bindirectory and run
On Linux/Mac: navigate to
<jmeter_location>/bindirectory and run
cd /Users/me/apache-jmeter/bin ./jmeter
Note: if the above command fails with
Permission deniederror, set execute permission on
cd /Users/me/apache-jmeter/bin chmod u+x ./jmeter
If you are able to see JMeter UI, basic setup was successful.
Overview of Apache JMeter components at high level
Apache JMeter segregated all the components into following groups based on their functionality:
Test Plan: Starting point for scripting. JMeter saves the Test Plan in .jmx format. You add components to the Test Plan by Right Click on the Test Pand and navigating to the component you want to add.
Workbench: Is a temporary place to start scripting. Along with all the components available in Test Plan, you get
HTTP(s) Test Script Recorderin order to
recordthe browser actions. Scripts can be saved in the Workbench provided you check the “Save Workbench” checkbox, otherwise they are no.
Threads (Users): you can define a number of (virtual) users to run, ramp-up time and loop count. you can also define on Test Plan whether Thread Groups need to run in sequential or parallel in the case of multiple Thread Groups. some examples are
Thread Group, setUp Thread Group, and tearDown Thread Group
Logic Controller: Allows you define the flow of execution and grouping of the samplers. one of the useful examples is Transaction Controller, where you combine all the samplers of Login page (all resources including images, .css, and .js files) so that combined response time can be retrieved.
Sampler: Sampler is the core of the JMeter. It gives components to simulate requests of various protocols such as HTTP, JDBC, FTP, SMTP etc. for example, HTTP sampler allows you simulate an HTTP packet (of GET, POST or any supported methods). Main stream protocols are supported, for others you can use Free or Commercial plugins.
Config Element: Configuration elements can be used to set up defaults and variables for later use by samplers. Note that these elements are usually processed at the start of the scope in which they are found, i.e. before any samplers in the same scope.
CSV Dataset Configallows you to provide test data like usernames, passwords of Login scenario
from a file.
User Defined variablesconfig element allows you define variables which can be used across the Test Plan but where each Thread has its own copy.
Timer: By default, a JMeter thread executes samplers in sequence without pausing. Components presented here provide the functionality to introduce
User Think Timein various forms among samplers. some examples are
Constant Timer, Constant Throughput Timer.
Pre Processors: allow you to perform operations/actions before sampler gets executed.
JSR223 Pre Processorwith Apache Groovy (similar to java coding style) allows you to make changes to the sampler before sending it.
Post Processors: allow you perform operations/actions after sampler get executed. some useful examples are retrieving dynamic value such as Session ID, using
Regular Expression Extractorpost processor for any type of text,
CSS/JQuery Extractorfor HTML,
JSON Extractorfor JSON,
XPath Extractorfor XML.
Assertions: As the name suggests, you can assert the response of samplers in different ways like searching for some text, the size of the response, and duration to receive the response etc. For example, you can use
Response Assertionto search for some text in the response. If Assertion fails, JMeter marks the sampler, to which Assertion is applied, as Failure.
- Listeners: Listeners allow you to save the test results, see the test execution etc. for example, using
View Results Tree, you can see the samplers request/response and whether they marked as PASS (green colour)/FAIL (red colour) by JMeter. using Aggregate Report, you can save the test results in CSV format. Important note is that, you use listeners either before the test run (for test script debug) or after the test run (to view results in graphs or summary) but not during the run. we must remove the listeners during the test as it consume a lot of system resources. So, we run the test in non-GUI mode and save the results using
.csv/.jtlformats. Post the test, you can load this saved files into any of the listeners in the JMeter to view graphs/summary.
Following is the general syntax (
you add any component on need basis):
Test Plan Thread Group Config Element Logic Controller Pre Processor Sampler Timer Post Processor Assertion Listener