In this tutorial, I will describe JMeter Test Plan and Components.
Outline of JMeter Test Plan and Components
- Test Plan
- Test Group
- Controllers
- Listeners
- Timers
JMeter Test Plan
Test Plan is the root element of JMeter structure and it contains other elements like Threads, Timers, Assertions, Listeners.
JMeter Thread Group
Thread Group is used for specifying the number of running threads, ramp-up period, and loop count. It represents a group of users who will execute a particular test case.
The number of Threads (Users) simulates the number of users or connections to your server application.
Loop Count means how many times to execute the test.
Ramp-up defines how long it will take JMeter to get all threads running. For example, if there are 6 threads and the ramp-up period is 60 seconds, then each thread will delay (60/6) 10 seconds. After 60 seconds, all threads will run.
Scheduler check-box means that your test will not be executed until the start date.
JMeter Controllers
JMeter has 2 types of controllers Sampler and Logical controllers.
Sampler: JMeter provides different requests to send to the server. We can change and configure all these samplers.
Default sampler list:
Logical: which helps you to customize your request logic. You can find the latest logical controllers list provided by JMeter.
JMeter Listeners
Let us see the results of the test in different formats. Let’s gather the data and analyze the results of the tests.
If you click on the “Configure” button
Provides different formats to save results (CSV, XML)
You can change the default format, find the following line in jmeter.properties:
jmeter.save.saveservice.output_format=
Listeners collect data only from elements at their below elements.
By default, the results are stored as XML files, typically with a “.jtl” extension.
Listeners can use lots of memory so they should not be used in real tests. It is better to use them only for debugging.
Keep in mind that there are some suggestions on reducing resource usage on the JMeter official website.
- Use non-GUI mode: jmeter -n -t test.jmx -l test.jtl
- Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
- Don’t use “View Results Tree” or “View Results in Table” listeners during the load test, use them only during the scripting phase to debug your scripts.
- Rather than using lots of similar samplers, use the same sampler in a loop, and use variables (CSV Data Set) to vary the sample. [The Include Controller does not help here, as it adds all the test elements in the file to the test plan.]
- Don’t use functional mode
- Use CSV output rather than XML
- Only save the data that you need
- Use as few Assertions as possible
- Use the most performing scripting language (see JSR223 section) (jmeter.apache.org)
JMeter Timers
JMeter sends requests without any pause between each request by default. Thus, timers make test scenarios more realistic, they pause every request certain amount of time. In the below figure you can see that there is a 3000 ms delay between the two requests.
Thanks.
Onur Yazir

Onur YAZIR is a Senior Software Testing & DevOps Engineer 10+ years of experience. He has worked Huawei, Ericsson, Vodafone, Several FinTech companies, Gulf News, and Emirates Airlines. You can find detailed information about him on his linked-in page.
nice explanation!!