1. Introduction
Apache JMeter is open-source software designed for performance testing and load testing of applications by simulating heavy traffic and measuring how the system behaves under different loads. In this example, I will analyze the following key metrics from the JMeter Results via its built-in listeners:
- Response Time (Average, Minimum, Maximum, Median, 90th/95th/99th percentiles) – The amount of time it takes to process a request. A high response time indicates a bottleneck or underperformance in the application.
- Throughput (Request per Second, Transactions per Second) – How many requests the system can handle per second. Low throughput indicates the server is overwhelmed.
- Number of Concurrent Users – The number of virtual users (threads) are actively executing requests during a test. It helps simulate the real-world user load.
- Error Rate – The percentage of failed requests during the test. A high error rate suggests there may be issues with the server or application handling requests.
- Latency – The time it takes for a request to reach the server and for a response to return. High latency indicates network issues or inefficient server processing.
- Network Traffic – The data sent and received by JMeter during a test execution. It assesses how much bandwidth the system is consuming, how it handles data transfer under load, and whether network issues could be causing delays or failures.
2. Setup a Test Plan
In this step, I will create a JMeter test plan by adding a Sampler of HTTP Request
that tests a GET Rest API: https://cat-fact.herokuapp.com/facts/. It configured 100 users. Reference this article to configure the Thread Group.
Figure 1 shows this test plan has six report listeners:
View Results Tree
shows details of sampler requests and responses.Summary Report
shows response time, throughput, and network traffic data.Aggregate Report
is similar to theSummary Report
but with aggregated statistics per request.Aggregate Graph
is similar to theAggregate Report
but with a bar graph.Graph Result
plots the response times on a graph.Response Time Graph
is similar toGraph Results
but focuses specifically on response times.
3. JMeter Analyze Results via Listeners
3.1 View Results Tree
The View Results Tree
listener shows the sampler’s header and body of requests and responses. Figure 2 shows the “response body” with a JSON string. The “response header” tab shows the response header data. It can save the results into a file if configured.
The View Result Tree
listener is very useful for debugging individual requests as it shows detailed information for each sampler, including request data, response data, and any errors that occurred. However, it’s not ideal for large-scale tests since it can overwhelm the system with a lot of data.
3.2 Summary Report
The Summary Report
listener shows response time, throughput, and network traffic data and is ideal for performance and load testing to get an overall picture of how the system is handling traffic. If it’s over the target threshold (e.g., 2 seconds), you’ll need to investigate the bottlenecks. Figure 3 shows the summary report of the 100 HTTP-Request tests set up in step 2.
- The average response time is 202 milliseconds.
- The minimum response time is 121 milliseconds.
- The maximum response time is 1112 milliseconds.
- The error % is 0.
- The throughput is 9.8 requests per second.
- The data sent per second is 1.18 KB.
3.3 Aggregate Report
Aggregate Report
is similar to the Summary Report
but with some aggregated statistics per request.
- The
Median
response time is 130 milliseconds. - 90% of requests’s response time equals to or less than 372 milliseconds.
- 95% of requests’s response time equals to or less than 482 milliseconds.
- 99% of requests’s response time equals to or less than 883 milliseconds.
3.4 Aggregate Graph
Aggregate Graph
is similar to the Aggregate Report
but with a bar graph for visual comparison.
3.5 Graph Result
The Graph Results
listener plots the response times on a graph. It allows users to configure options when plotting the response time.
Graph Results
review the throughput and response times visually to see if there is a correlation between load and performance. You might see response times increase significantly after a certain threshold, indicating that the server is being overwhelmed.
3.6 Response Time Graph
Response Time Graph
is similar to Graph Results
but focuses specifically on response times. It helps to visualize how response times change during the test, especially under varying loads. In this step, I will configure the Response Time Graph
to write the results into a file at this location: C:\MaryTools\workspace\Jmeter\response_time_graph_test_result.jtl
.
4. JMeter Analyze Results via Dashboard
The JMeter Dashboard Report is a built-in feature that generates a comprehensive, graphical report of the test results in HTML format. It provides detailed insights into the performance of the system under test, and it’s very useful for analyzing results in a structured way after the test execution. The JMeter Dashboard Report GUI provides an easy way to analyze the test results with a visual representation of key performance metrics. In this step, I will run the following Jmeter command to generate a dashboard web page from the output file saved in step 3.6.
JMeter command to generate dashboard
jmeter -g C:\MaryTools\workspace\Jmeter\response_time_graph_test_result.jtl -o C:\MaryTools\workspace\Jmeter\output
After the command, then navigate to the output folder and check the generated dashboard files.
JMeter Generated Dashboard Files
C:\>cd C:\MaryTools\workspace\Jmeter\output C:\MaryTools\workspace\Jmeter\output>dir Volume in drive C is OS Volume Serial Number is 92BA-6AB7 Directory of C:\MaryTools\workspace\Jmeter\output 02/01/2025 09:11 AM . 02/01/2025 09:06 AM .. 02/01/2025 09:11 AM content 02/01/2025 09:11 AM 9,692 index.html 02/01/2025 09:11 AM sbadmin2-1.0.7 02/01/2025 09:11 AM 1,017 statistics.json 2 File(s) 10,709 bytes 4 Dir(s) 104,159,997,952 bytes free C:\MaryTools\workspace\Jmeter\output>
- Line 12: The generated dashboard
index.html
The generated index.html
opens the JMeter dashboard that shows various response times, throughput, and charts.
5. JMeter Analyze Results via Hosted Services
JMeter results can be analyzed via hosted services. Hosted services typically provide enhanced reporting, powerful data analysis, integration with other tools, and easy access to performance metrics. Here are popular hosted services: BlazeMeter, RedLine13, and Performance Cloud.
6. JMeter Analyze Results via JMeter Plugins
JMeter provides several built-in plugins to analyze results and there are additional JMeter Plugins provided by the community. For example, PerfMon Plugin
monitors system-level metrics like CPU, memory, and disk usage on the server side while the test is running. It helps to correlate performance issues with system resource usage. If high resource usage (CPU, memory) as load increases, then it indicates resource limitations that could cause a drop in performance under heavy load.
7. Conclusion
JMeter is a powerful tool for simulating real user behavior and load testing. Analyzing the Jmeter test results with key metrics via various listeners can gain deep insights into how the system performs under load, troubleshoot bottlenecks, and fine-tune the application for better performance. In this example, I analyzed the test results via the following listeners: View Results Tree
, Summary Report
, Aggregate Report
, Aggregate Graph
, Graph Result
, and Response Time Graph
.