Apache JMeter™ is a powerful tool for load testing. By default, JMeter has many features, but one of the best things about JMeter is that it is open source software! Therefore, any interested party can develop additions that will extend its capabilities and insert functions. These additions are called Plugins. Developers have already created a large variety of useful plugins, which is really cool and shows the strength of the JMeter community.
The JMeter Plugins website lists a lot of available plugins for JMeter. On the website we can search through the 71 available plugins and hopefully find one that fits our needs. The website also contains some more useful information such as: guides, descriptions, usage statistics and a support forum. The usage statistics page contains some interesting information, like a graph showing the % of known JMeter version installations over time. There is also list of available plugins sorted by the number of known users.
As JMeter plugins are such a powerful tool for building our load tests, let’s take a look at the 10 most popular JMeter Plugins and learn how and when to use them.
(Want the info on the latest plugins? View our webinar What’s New in JMeter 4.0, JMeter Plugins and Taurus).
10th place: 3 Basic Graphs
The 3 Basic Graphs plugin extends JMeter with three listeners: Active Threads Over Time, Response Times Over Time and Transactions per Second. These listeners provide you with information and KPIs about your load testing results in a graphic form, enabling you to analyze the success of your performance tests and making it easier to decide on future steps for your website or app.
The plugin can be installed via the Plugins Manager as the “3 Basic Graphs” plugin or as a part of the “jpgc - Standard Set” plugin.
Active Threads Over Time Listener
The Active Threads Over Time listener shows a graph of how many concurrent users are active in each thread group during a test run.
How to find: HTTP Request -> Add -> Listener -> jp@gc - Active Threads Over Time
Official plugin page: https://jmeter-plugins.org/wiki/ActiveThreadsOverTime/
Response Times Over Time Listener
The Response Times Over Time listener shows a graph of the average response time in milliseconds for each sampler during a test run.
How to find: HTTP Request -> Add -> Listener -> jp@gc - Response Times Over Time
Official plugin page: https://jmeter-plugins.org/wiki/ResponseTimesOverTime/
Transactions per Second Listener
The Transactions per Second listener shows a graph of the number of successful and failed transactions per second for each sampler during a test run. Also it has two types of graphs: a detailed display (one row per sampler) and an aggregated display (all samplers combined).
How to find: HTTP Request -> Add -> Listener -> jp@gc - Transactions per Second
Official plugin page: https://jmeter-plugins.org/wiki/TransactionsPerSecond/
For more information about JMeter listeners you can check this blog post.
9th place: JSON Plugins
Installing the JSON Plugins provides us with one more sampler and two post processors: the JSON to XML Converter sampler, the JSON Format Post Processor and the JSON Path Extractor. These elements are a set of tools that enable us to work comfortably with data in JSON format.
The plugin can be installed via the Plugin Manager as “JSON Plugins”.
JSON to XML Converter
This sampler transforms JSON text into XML format.
How to find: Thread Group-> Add -> Sampler -> jp@gc - JSON to XML Converter
The text entered in the JSON input field will be converted to XML format. We can see the result of the sampler in the screenshot below.
Official plugin page: https://jmeter-plugins.org/wiki/JSONToXMLConverter/
JSON Format Post Processor
This post processor formats JSON responses and makes them more readable.
How to find: HTTP Request -> Add -> Post Processors -> jp@gc - JSON Format Post Processor
I have used a Dummy Sampler to emulate a JSON response from the server.
As we can see, the JSON response is displayed in a single line. This wouldn’t be convenient if we had a larger response.
Let’s add the JSON Format Post Processor to this sampler.
Run the script again and see the difference.
The JSON response is well formatted and very convenient to read.
Official plugin page: https://jmeter-plugins.org/wiki/JSONFormatter/
JSON Path Extractor
The JSON Path Extractor post processor is designed to extract values from JSON responses using the JSONPath syntax.
How to find: HTTP Request -> Add -> Post Processors -> jp@gc - JSON Path Extractor
This extractor works similar to the way the XPath Extractor worked. The extracted value will be saved to a variable (“blazemeterVar”). It will use the default value (“ERROR”) if the JSONpath (“$.name”) is not found.
Official plugin page: https://jmeter-plugins.org/wiki/JSONPathExtractor/
Advanced users, read more about how to use this plugin from this blog post “JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios”.
8th place: Inter-Thread Communication
Installing the “Inter-Thread Communication” plugin extends JMeter functionality with an Inter-Thread Communication PostProcessor, Inter-Thread Communication PreProcessor and a number of functions.
Inter-thread communication means that we can put a string value into a queue from one Thread Group, and then get that value in another Thread Group. This feature lets us synchronize separate Thread Groups.
The plugin can be installed via the Plugin Manager as “Inter-Thread Communication” or as a part of the “jpgc - Standard Set” plugin.
Inter-Thread Communication PostProcessor & PreProcessor
How to find:
Test Plan -> Add -> Post Processors -> jp@gc - Inter-Thread Communication PostProcessor
Test Plan -> Add -> Post Processors -> jp@gc - Inter-Thread Communication PreProcessor
I have created a small script to demonstrate how to use the PostProcessor and PreProcessor. This script contains two Thread Groups. The first Thread Group puts values into the queue. The second Thread Group reads values from the queue.
This Regular Expression Extractor extracts the value from the page and puts it into the ‘blazemeter’ variable.
This Inter-Thread Communication PostProcessor puts the value from the variable ‘blazemeter’ into queue with name ‘SYNC_FIFO’.
In the second Thread Group Inter-Thread Communication PreProcessor gets values from the ‘SYNC_FIFO’ queue and stores it in the ‘gotBlazemeterData’ variable.
The value of the ‘gotBlazemeterData’ variable can be sent with a request as presented in screenshot above.
Sounds simple and interesting, right?
Inter-thread communication also adds four functions to work with queues: fifoPut, fifoGet, fifoPop, fifoSize. These functions can be used anywhere on JMeter where functions would be executable. For example, in the Response Assertion element in the Patterns to Test field, like in the screenshot below.
More information about these functions can be found on the official plugin page: https://jmeter-plugins.org/wiki/InterThreadCommunication/
7th place: Flexible File Writer
This plugin extends JMeter with the Flexible File Writer listener. This listener is designed to write test results into the file in a flexible format, which we can specify via the JMeter GUI.
The plugin can be installed via the Plugin Manager as “Flexible File Writer” or as a part of the “jpgc - Standard Set” plugin.
How to find: Test Plan -> Add -> Listener -> jp@gc - Flexible File Writer
The listener has some options to config the output file which we can see above. By using those options we can change the file header, log content and file footer. By default, the log contains the following values for each run sample: endTimeMillis, responseTime, latency, sentBytes, receivedBytes, isSuccessful and responseCode. By using the ‘Record each sample as’ field, we can change the set of logged values.
An example of file content can be found below. It contains a header, the log itself and a footer.
Official plugin page: https://jmeter-plugins.org/wiki/FlexibleFileWriter/
6th place: Custom JMeter Functions
The Custom JMeter Functions plugin extends JMeter’s functionality with a number of useful functions. Here is a list of them:
- chooseRandom: chooses a random value from the list of arguments
- doubleSum: calculates the sum of floating point values
- Env: receives an environment variable value
- isDefined: determines if the variable was already defined
- MD5: computes MD5 hash of string or variable value
- base64Encode: encodes a string or variable value with Base64 algorithm
- base64Decode: decodes a string or variable value from Base64 into string
- strLen: calculates the length of constant string or variable value
- Substring: returns a substring of a particular string
- strReplace: replaces a part of the string with another string
- strReplaceRegex: replaces all the substrings that satisfy the regular expression with the replacement string
- uppercase and lowercase: changes the case of string or variable value
- iterationNum: returns the number of current iteration in thread group
- If: provides if syntax
- caseFormat: provides changing string case format
The plugin can be installed via the Plugin Manager as “Custom JMeter Functions” or as a part of the “jpgc - Standard Set” plugin.
The ‘chooseRandom’ function chooses a random value from the list of its arguments. These functions can be used just like any other JMeter functions.
Official plugin page: https://jmeter-plugins.org/wiki/Functions/
5th place: Throughput Shaping Timer
This plugin adds the following functionalities to JMeter: Throughput Shaping Timer, Special Property Processing and Schedule Feedback Function. These elements enable us to limit the test throughput, to ensure we don’t exceed our required throughput value.
The plugin can be installed via the Plugin Manager as “Throughput Shaping Timer” or as a part of the “jpgc - Standard Set” plugin.
Throughput Shaping Timer
This interesting timer is designed to control requests per second to the server during a test run.
How to find: Thread Group -> Add -> Timer -> jp@gc - Throughput Shaping Timer
The timer has a schedule table and preview graph. It is a very convenient way to control a load during a test run.
Special Property Processing
This feature gives us the ability to process a JMeter property called ‘load_profile’. This property specifies a load pattern with a set of function-like declarations. Declarations can be of 3 types: const, line and step.
- const(N, T): holds a constant load of N requests per second for T seconds
- line(N, K, T): generates linear increasing of load from N to K requests per second during T seconds
- step(N, K, S, T): generates a stepping load from N requests per second to K requests per second, each step height to will be of S requests per second, each step duration will be T seconds
The main value of this property is that we are able to setup requests per second throughput with the jmeter.properties file or just with the command line when running JMeter.
Example: load_profile=const(20,10s) line(20,100,1m) step(5,15,5,10m)
Schedule Feedback Function
This function enables a feedback loop for the number of threads. The feedback checks if enough threads are running right now. It also provides additional threads when the requests per second schedule is not achieved during test runs.
For example, we started a test with 20 threads. They generate only 100 requests per second. But we have a 150 request per second throughput. So the feedback function checks that we need 50 more requests per second, and starts another 10 threads.
‘blazemeter-name’ is the name of the Throughput Shaping Timer to integrate with. 1 is the number of starting threads. 1000 is the number of max allowed threads. 40 is the number of spare threads to keep in the thread pool. So this function will increase the number of threads up to 1000 threads, if the requests per second schedule is not be met during the test run.
Official plugin page: https://jmeter-plugins.org/wiki/ThroughputShapingTimer/
4th place: Dummy Sampler
The Dummy Sampler emulates the work of requests and responses without actually running the requests. Request and response data are defined in the sampler’s fields. This is a very convenient way to debug post-processors and extractors.
The plugin can be installed via the Plugin Manager as “Dummy Sampler” or as a part of the “jpgc - Standard Set” plugin
How to find: Thread Group -> Add -> Sampler -> jp@gc - Dummy Sampler
Here is what the results of the Dummy sampler will look like after it is run in the View Results Tree listener.
Official plugin page: https://jmeter-plugins.org/wiki/DummySampler/
3rd place: Custom Thread Groups
The Custom Thread Groups plugin adds five thread group types: Stepping Thread Group, Ultimate Thread Group, Concurrency Thread Group, Arrivals Thread Group and Free-Form Arrivals Thread Group. These five thread groups open huge possibilities to create required schedules for test runs.
The plugin can be installed via the Plugin Manager as “Custom Thread Groups” or as a part of the “jpgc - Standard Set” plugin.
Stepping Thread Group
The Stepping Thread Group adds a convenient way to create non-linear thread scheduling. Quite often, the scheduling scenario is in the form of ‘stairs’ (see below).
How to find: Test plan -> Add -> Threads (Users) -> jp@gc - Stepping Thread Group (deprecated)
Official plugin page: https://jmeter-plugins.org/wiki/SteppingThreadGroup/
You can read more information about the Stepping Thread Group from this blog post.
Ultimate Thread Group
The Ultimate Thread Group is designed to add flexible thread scheduling to your test scenario. It allows us to create a schedule with almost any configuration, in the Threads Schedule table.
How to find: Test plan -> Add -> Threads (Users) -> jp@gc - Ultimate Thread Group
Official plugin page: https://jmeter-plugins.org/wiki/UltimateThreadGroup/
Concurrency Thread Group
The Concurrency Thread Group allows us to configure a stepping threads schedule in a simple way. It works similar to the Stepping Thread Group and is a great replacement for it, especially if the Stepping Thread Group is removed in future versions.
How to find: Test plan -> Add -> Threads (Users) -> bzm - Concurrency Thread Group
Official plugin page: https://jmeter-plugins.org/wiki/ConcurrencyThreadGroup/
You can find more information about the Concurrency Thread Group here.
Arrivals Thread Group
The Arrivals Thread Group works with a thread iteration start schedule as a way to describe/determine the load. "Arrival" means the start of the thread iteration.
How to find: Test plan -> Add -> Threads (Users) -> bzm - Arrivals Thread Group
Official plugin page: https://jmeter-plugins.org/wiki/ArrivalsThreadGroup/
Free-Form Arrivals Thread Group
The Free-Form Arrivals Thread Group works with the "arrival" schedule as a way to describe the load. "Arrival" means the start of thread iteration. This element allows us to create a flexible schedule.
How to find: Test plan -> Add -> Threads (Users) -> bzm - Free-Form Arrivals Thread Group
The values here are the number of started iterations per minute. An iteration is one loop of script run.
Official plugin page: https://jmeter-plugins.org/wiki/FreeFormArrivalsThreadGroup/
2nd place: PerfMon Servers Performance Monitoring
This plugin extends JMeter with the PerfMon Servers Performance Monitoring listener. This listener allows us to monitor CPU, Memory, Swap, Disks I/O and Networks I/O of the servers loaded.
The plugin can be installed via the Plugin Manager as “PerfMon (Servers Performance Monitoring)” or as a part of the “jpgc - Standard Set” plugin.
How to find: Test plan -> Add -> Listener -> jp@gc - PerfMon Metrics Collector
Official plugin page: https://jmeter-plugins.org/wiki/PerfMon/. Read more from the blog post “How to Monitor Your Server Health & Performance During a JMeter Load Test”.
1st place: Plugins Manager!!!
The most popular plugin is the Plugins Manager, and for good reason - usually, a user needs to install the Plugin Manager before installing other plugins. The Plugins Manager is the most convenient way to manage JMeter plugins.
Instructions on how to install the Plugin Manager can be found here.
The Plugin Manager has 3 main tabs: Installed plugins, Available plugins and Upgrades.
How to find: Options -> Plugins Manager
The installed plugins tab contains a list of installed plugins, a description area on the left and a review changes area at the bottom.
The available plugins tab contains a list of available plugins, a description area on the left and a review changes area at the bottom. Use the search to find all the plugins to fit your needs!
Official plugin page: https://jmeter-plugins.org/wiki/PluginsManager/
That’s it! We took a look at the top 10 JMeter plugins. I hope it was informative and gives you some ideas for extending JMeter via plugins!
To learn more advanced JMeter, check out our free JMeter academy.
Try our BlazeMeter, which enhances JMeter’s features:
- Simple Scalability – It’s easy to create large-scale JMeter tests. You can run far larger loads far more easily with BlazeMeter than you could with an in-house lab.
- Rapid-Start Deployment – BlazeMeter’s recorder helps you get started with JMeter right away, and BlazeMeter also provides complete tutorials and tips.
- Web-Based Interactive Reports – You can easily share results across distributed teams and overcome the limitations of JMeter’s standalone UI.
- Built-In Intelligence – The BlazeMeter Cloud provides on-demand geographic distribution of load generation, including built-in CDN-aware testing.
Just put your URL in the box below and your test will start in minutes. Or, request a demo.
You might also find these useful:
Interested in writing for our Blog? Send us a pitch!