Performance Testing is the process of measuring a system’s performance by increasing the demand on the system. It is performed to ascertain a system's behaviour under normal as well as the estimated peak load conditions. JMeter is a segment of the Apache Open Source project. It is an application that can be used to perform functional testing and load testing. It is designed as a pure Java application and can be used to perform load testing of any type of web application including the ones written in .NET, PHP, etc.
With the help of Jmeter, multiple threads can be created, timers can be set up for testing, assertions and listeners can be set for the test plan. Test plan enables the user to set the test configuration that is specific for an application. After right-clicking the ‘Test Plan’ item, the menu is revealed. In the menu, on hover over the ‘Add’ item user can see various test features that can be created for a test plan. After the creation of the test features, these are executed by the tester.
Following Benefits Are Offered by JMeter In Performance Testing:
1. JMeter can be implemented to test the performance of both static resources such as HTML, as well as dynamic resources, such as AJAX.
2. JMeter can recognize the maximum count of simultaneous users that can be handled by a website.
3. JMeter helps to analyze the performance reports graphically.
4. JMeter generates the load on the server and also comes with an agent that can be run on the server machine for the collection of server performance metrics.
JMeter consists of many listeners which provide useful information like response time of each request, the number of the requests being processed, response data, throughput, error percentage, etc. but actually there is a strong need to know the utilization of server system resources, like CPU/Memory utilization. If JMeter tests are run against software running on a computer or server, the chances are that the user will manually match the JMeter results with statistics of CPU or Memory Usage from the server. This process can be made a lot easier by using ‘PerfMon Metrics Collector’ that is basically a listener.
Below is the graphical view of server resource utilization parameters.
There is a plugin called ‘PerfMon’ available in JMeter Plugins which provides a way to collect the performance metrics of your server’s health. The ServerAgent is available for collecting the server performance metrics, and one JMeter plugin that provides us with a visual report of the same. The ServerAgent by default opens port 4444 and starts a thread to listen to all the data present on the server machine. It also allows the external system to read the listener data and the JMeter plugin ‘jp@gc – PerfMon Metrics Collector’ can listen to the ServerAgent on the server. Users can start the PerfMon Agent by opening the ‘startAgent.bat’ file and the user is supposed to run this on all servers from where he/she is interested to collect the data. As the PerfMon Agent runs, the user is allowed to collect the data using the PerfMon Metrics Collector plugin. Moving further, to create the lines on the graph ‘Add Row’ can be used using a row per metric. ‘Row’ tab can be used by the user to filter the collected data if he/she just wants to see the CPU data on its own.
The available PerfMon metrics include:
iv) Disks I/O
v) Network I/O
Steps to View System Server Health using ‘PerfMon’:
Now when the user is all set up, here are the steps to view the system’s health:
1. User needs to go to the Application Under Test.
2. Select the “Performance” tab from the Task Manager.
3. Choose the “Ethernet” view.
4. In JMeter, the user needs to add the PerfMon Metrics Collector Listener and must provide the machine’s IP address that has the test application, the port the PerfMon Server Agent is listening to, and the “interested” metric that the user needs to see.
5. Now the test can be started and the user can take a look at the charts on the left and the right.
6. In this way, the user can monitor severalPerfMon metrics, including CPU, Memory, Disk I/O, Network I/O, and JMX.