Apache JMeter is a powerful tool for Load Testing and Performance Testing. You know what? One of the most exciting features of Apache JMeter is that it is an Open Source Software. Yes! You heard it right. This gives any curious developer an opportunity to develop code to extend JMeter functionality. These additions are known as Plugins.
Plugins aid to extend the functionality of the software. Developers have already created a large variety of plugins.
The JMeter Plugins Website lists all the available plugins. At present, there are 76 plugins available on the website. All you need to do is to search and find a plugin that best suits your needs.
I got top JMeter plugins from the JMeter Plugins Website which shows the Usage Statistics according to which Plugins are rated in the order from Most Popular to Least Popular. The website contains more information like Documentation, Support Forums.
As you can see from the snippet above, The list shows the Top 10 JMeter Plugins.
NOTE: This is Monthly Data. So might fluctuate at the time of blog post-reading.
Now Let’s begin by discussing these plugins in detail covering installation, usage, and basic characteristics. We will be discussing the Plugins in the hierarchy beginning with the most popular to least popular.
1. Winner-Plugins Manager You might be wondering what is so special about this Plugin that it is at No.1 place. Downloading and Installing plugins in JMeter cannot be done directly. They need a catalyst to do this job. This catalyst is none other than the Plugins Manager. The user needs to install the Plugins Manager before any other Plugin. This is the easiest and most convenient way to manage Plugins in JMeter.
How to Install Plugins Manager:
- Download plugins-manager.jar
- Put it in the lib/ext directory.
- Restart JMeter.
- Click “Options” and then “Plugins Manager”.
You might be still thinking about what is special about the Plugins Manager that makes life so easy. The answer is that all other Plugins don’t need special download and installation. To download a Plugin all one needs is to click the checkbox in front of the name of the desired plugin inside the Plugins Manager window.
The Plugins Manager has three tabs: Installed Plugins, Available Plugins, and Upgrades.
Installed Plugins: This tab shows the list of installed plugins, a description area and a review change area, at the bottom.
Available Plugins: This shows the list of available plugins with a description and review area at the bottom. You can use the search button to find the best-suited plugin.
2. Basic Graphs
Basic Graphs was designed to serve 3 purposes or we can say it adds 3 types of listeners to the JMeter, serving 3 very important tasks:
- Active Threads Over Time: This is used to show the list of Active Users in each Thread during a test run.
- Response Times Over Time: This is used to calculate the average response time.
- Transactions Per Second: This shows the successful/ failed transactions per second.
These Listeners provide data in the Graphic form, enabling you to better analyze the results and decide what steps to take in the future.
The Plugin can be downloaded through Plugins Manager by selecting the checkbox in front of 3 Basic Graphs in the list of available Plugins.
a. Active Threads Over Time: This Listener shows the list of concurrent users active in each thread group during a test run.
How to Add:
- Right Click on Sampler(HTTP Request)→Add→Listener→jp@gc-Active Threads Over Time.
NOTE: I have added this Listener to the Test Script Generated in the previous step and then executed the script.
This shows the graph generated using listener active threads over time.
b. Response Times Over Time: This Listener shows the average response time for each sampler during a test run.
How To Add:
- Right Click on the Sampler(HTTP Request)→Add→Listener→jp@gc-Response Times Over Time.
c. Transactions per Second: This Listener shows the number of successful and Failed transactions for each sampler during a test run.
This Listener offers 2 types of Graphs: Detailed Display: where one row is meant for each sampler and Aggregated Display: where all samplers are combined.
How To Add:
- Right Click on Sampler(HTTP Request)→Add→Listener→jp@gc Transactions Per Second.
3. Custom Thread Groups The Custom Thread Groups add 5 Thread Groups: Stepping Thread Group, Ultimate Thread Group, Concurrency Thread Groups, Arrival Thread Groups, Free-Form Arrivals Thread Group. These thread groups offer a great opportunity to create custom required schedules for the test run.
The Plugin can be installed via the Plugins Manager from the “Options” Menu.
a. Stepping Thread Group: The stepping thread group is a deprecated version. It is a way to create a non-linear stepping schedule for the thread run.
How to Add:
- Right Click on Test Plan→Add→Threads(Users)→jp@gc-Stepping Thread Group(Deprecated).
b. Ultimate Thread Group: This Thread Group aims at providing the user with the flexibility of creating almost any type of schedule with almost any type of configuration, in the Threads Schedule Table. It is designed to add flexible test scheduling to your test scenario.
How To Add:
- Right Click on Test Plan→Add→Threads(Users)→jp@gc-Ultimate Thread Group
c. Concurrency Thread Group: If you remember we have mentioned earlier that Stepping Thread Group is deprecated. So here is a good alternative for it, if in case it is removed from the future versions. Concurrency Thread Group is the solution. It helps to create a Stepping schedule for the thread runs.
How To Add:
- Right Click on Test Plan→Add→Threads(Users)→bzm-Concurrency Thread Group.
d. Arrival Thread Group: This thread group works on the concept of thread arrival rate in order to determine the load. “Arrival” here means the start of thread iteration.
How To Add:
- Right Click on the Test Plan→Add→Threads(Users)→bzm-Arrival Thread Group
e. Free-Form Arrivals Thread Group: As the name suggests Free-Flow Arrivals Thread Group works with the Arrival schedule but it provides a way to create a flexible schedule.
How To Add:
- Right Click on Test Plan→Add→Threads(Users)→bzm-Free-Form Arrivals Thread Group.
4. PerfMon (Serves Performance Monitoring)
This Plugin adds a Listener “PerfMon Serves Monitoring Performance”. Listener allows us to monitor CPU, Memory, Network I/O, Disk I/O, Swap of the loaded servers.
How to install:
PerfMon Plugin can be installed by clicking the checkbox in front of the PerfMon name in the Plugins Manager.
How To Add:
- Right Click on the Test Plan→Add→Listener→jp@gc-PerfMon Metrics Collector.
Dummy Sampler Dummy Sampler emulates the work of requests and response without actually running the requests, thus providing a very easy and convenient way to debug post-processors and extractors. The Request and Response data are defined in the sampler’s field.
How To Install:
- The Plugin can be installed via Plugins Manager by clicking the checkbox next to the Dummy Sampler and Restarting the Apache JMeter.
How To Add:
- Right Click on Thread Group→Add→Sampler→jp@gc-Dummy Sampler.
Here is what the dummy sampler looks like after the Test Plan is executed. Looking at the results in the ViewResultsTree.
5. Throughput Shaping Timer This plugin adds 3 functionality to the JMeter:
- Throughput Shaping
- Special Property Processing
- Schedule Feedback Function
a. Throughput Shaping Timer:
How To Install:
- The Plugin can be installed via Plugins Manager by simply selecting the checkbox in front of the Throughput Shaping Timer Option in the list of Available Plugins.
How To Add:
- Right Click on Thread Group→Add→Timer→jp@gc-Throughput Shaping Timer
As you can see from the image above, the Timer has a fixed schedule table and a preview graph which makes it easier to control a load during the test run.
b. Special Property Processing:
This feature provides users with the ability to process a JMeter property “load_profile”. This property specifies a load pattern with a set of function-like declarations. These Declarations can be of 3 types:
- const(N, T): const holds a constant hold of N requests per second for T number of seconds.
- line(N, K, T): line generates a linear increase of the load from requests increasing from N to K per second for T number of seconds.
- step(N, K, S, T): step 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 advantage of reading about this property is we can setup requests per second throughput with JMeter.properties file or we can setup requests per second with the command line while running the JMeter.
Example: load_profile=const(30,20s) line(30,100,1m)step(5,20,5,5m)
c. Schedule Feedback Function:
This function enables a feedback loop for the number of threads. The job of the feedback loop is to see if enough number of threads are running at any time. It also provides additional threads if the criteria are not met i.e. if requests per the second schedule are not achieved during test runs.
Example: ${tstFeedback(ThroughputShaping(1,500,50)}
Here, Throughput_Shaping is the Throughput Shaping Timer to integrate with. 1 is the number of starting threads. 500 is the number of max threads allowed. 50 is the number of spare threads to be kept in the thread pool. So, this function will be able to increase the number of threads up to 500 in case the request per the second schedule not met during the test run.
6. Custom JMeter Functions
This plugin extends JMeter functionality with a number of functions:
- strReplace: This function replaces a part of the string with another string.
- strReplaceRegex: This function is like Find and Replace All where all occurrences of a substring matching a regular expression are replaced with a replacement string.
- Uppercase and lowercase: this function changes the case of the string or variable value.
- Env: this receives an environment variable value.
- chooseRandom: chooses a random value from the list of arguments.
- doubleSum: This function calculates the sum of floating-point values.
- isDefined: This function checks to see if the variable is previously defined.
- iterationNum: This function returns the number of the current iteration in the thread group.
- caseFormat: This function provides a changing string case format.
- base64Encode: Uses the Base64 algorithm to encode a string or variable value.
- base64Decode: This function decodes a string or variable value using Base64 decoding.
- MD5: This function computes the MD5 hash of string or variable value.
- If: This function provides if syntax.
How To Install:
- The plugin can be installed via Plugins Manager by simply selecting the checkbox and pressing the “Apply changes and Restart JMeter” button.
7. Flexible File Writer
This plugin extends JMeter with a Listener “Flexible File Writer”. This listener enables us to write JMeter test results to a file in a flexible format, which can be specified via JMeter GUI.
How To Install:
- The plugin can be installed via Plugins Manager by simply selecting a checkbox in front of Flexible File Writer option in the list of Available Plugins and press “Apply changes and Restart JMeter” button.
How To Add:
- Right Click on the Test Plan→Add-Listener→jp@gc→Flexible File Writer
Example:
The Listener provides some options to configure the output file. By using those options we can change file header, file footer and log content. For example, I have changed the File footer to “Top 10 JMeter Plugins: Flexible File Writer.”
By default, the log contains the following values for each sample run: endTimeMillis, response time, latency, is filed, successful, latency micro, etc. An example of the output file content can be seen below:
8. Inter-Thread Communication
Inter-Thread Communication post-processor, Inter-Thread Communication preprocessor, and a number of functions. Inter-Thread Communication helps us to synchronize various thread groups. In this method, a string value is put into a queue from one thread group and then get that value into another thread group.
How To Install:
- The plugin can be installed via Plugins Manager by following the same old rule, simply clicking the checkbox and selecting Apply changes and Restart JMeter button.
How To Add:
- Right Click on the Test Plan→Add→Post Processors→jp@gc-Inter-Thread Communication PostProcessor
- Right Click on the Test Plan→Add→Pre Processors→jp@gc-Inter-Thread Communication PreProcessor
9. 5 Additional Graphs
This plugin provides 5 different types of Graphs.
- Response Code
- Byte Throughput
- Connect Times
- Latency
- Hits/s
How To Install:
- Select the checkbox with the name 5 Additional Graphs in the list of Available Plugins and then press the button “Apply changes and Restart JMeter”.
For all the examples we will consider below Thread Group settings and with Sampler HTTP Request having Server IP: www.frugaltesting.com.
a. Response Code Graph:
How To Add:
- Right Click on the Thread Group→Add→Listener→jp@gc- Response Codes per Second
Example: Below Graph shows the result in accordance with the Thread Group Scenario and Sampler discussed above.
b. Bytes Throughput:
How To Add:
- Right Click on the Thread Group→Add→Listener→jp@gc- Bytes Throughput per Second
Example: Sample runs for the same Thread Group and Sampler.
c. Connect Times:
How To Add:
- Right Click on the Thread Group→Add→Listener→jp@gc- Connect Times per Second
Example:
d. Latency:
How To Add:
- Right Click on the Thread Group→Add→Listener→jp@gc- Response Latencies per Second
Example:
e. Hits/s:
How To Add:
- Right Click on the Thread Group→Add→Listener→jp@gc- Hits per Second
Example:
With this, we have completed all the Top 10 Plugins of JMeter. Now it’s your turn to get started and try these plugins on a Test Plan.