
Thread Group in JMeter is the main part of a test plan. It tells JMeter how many "users" (threads) to simulate and how they should run the test. Each thread works independently, sending requests just like a real user. In the Thread Group, you can set how many threads to run, how fast they start (ramp-up), and how many times to repeat the test (loop count). This helps you control the load you want to test on the system.
Here are the main settings in the Thread Group:
Number of Threads (users)
This is the number of virtual users JMeter will simulate. Each one runs the test on its own.
Ramp-Up Period (seconds)
This is the time it takes to start all threads.
Example: If you set 10 threads and 20 seconds ramp-up, JMeter will start 1 thread every 2 seconds (20 ÷ 10 = 2).
Loop Count
Tells how many times each thread should run the full test.
Example: If set to 5, each thread runs the test 5 times.
You can also check the Forever option to run the test continuously until you stop it manually.
Delay Thread Creation Until Needed
If this is checked, threads will be created only when needed, not all at once. This can help save memory.
Scheduler
Lets you control when the test starts and ends. If enabled, more settings appear:
Start Time / End Time – when the test should begin and finish
Duration (seconds) – how long the test should run
Startup Delay (seconds) – how long to wait before starting the test
The If Controller in JMeter lets you run a set of actions only if a specific condition is true. The condition is written as a simple expression, like checking a variable or the server's response. If the condition is true, the actions inside the controller will run; if not, they will be skipped. This helps control the flow of your test and allows you to run certain actions only when needed, like when the server gives a specific response.
The Loop Controller in JMeter allows you to repeat a set of actions (e.g., HTTP requests) multiple times. It runs everything inside it as many times as you set in its configuration. For example, if you set the Loop Count to 5, each request inside the controller will be executed 5 times by every thread (user). It’s useful when you want to simulate repeated user actions, like sending several requests to the server in a row.
The Random Controller in JMeter allows you to randomly execute one of the elements inside it. Each time a thread (user) passes through this controller, JMeter selects one of its child elements at random and runs only that one. This makes it easy to simulate different, unexpected user paths or behaviors in an application, such as visiting random pages.
The Simple Controller in JMeter is mainly used to organize and structure test elements within a test plan. It doesn't affect how the elements behave – it doesn't repeat them or apply any conditions. It works like a folder: grouping related elements (e.g., requests, controllers, assertions) to make large tests easier to read and manage. It's useful when you want to logically divide your test into sections, such as login, browsing products, or completing an order.
The Once Only Controller in JMeter is a special element that makes the requests inside it run only once for each user (thread), no matter how many times the test loops. This means that even if the test has multiple iterations, the requests within this controller will only be executed during the first pass. It's useful when you want to perform an action just one time, such as logging in a user before the main part of the test or preparing some data.
Random Order Controller in JMeter is a logic element that randomly changes the order of its child elements (like HTTP requests) each time the test runs. This means that instead of always executing the requests in the same sequence, JMeter will run them in a different, random order in each iteration. It helps to better simulate real user behavior, where actions are not always performed in the same order.
Runtime Controller in JMeter is a logic element that allows its child elements (like samplers) to run for a specific amount of time. Instead of setting how many times something should repeat, you define how long it should run — for example, 30 seconds. After that time passes, JMeter stops executing the elements inside the controller, no matter how many times they have run. This is useful when you want to simulate real-world load for a set duration rather than a fixed number of operations.
Interleave Controller in JMeter is a logic element that runs only one of its child elements during each test iteration — in order. This means that if the controller contains three different requests, it will execute the first one in the first loop, the second one in the next loop, the third one after that, and then start over from the beginning. It's useful when you want to evenly distribute different actions across multiple test iterations.
Duration Assertion in JMeter is used to check whether the response time of a request does not exceed a specified value (in milliseconds). If the response takes longer than the set limit, the test will be marked as failed. This helps you ensure that your application performs quickly enough and meets performance requirements. It’s especially useful when testing APIs where response time is critical.
Size Assertion in JMeter is used to check whether the size of a response (e.g., in bytes) falls within a specified range. It helps ensure that the server returns data of the expected size — not too small (e.g., missing content) and not too large (e.g., an error page or oversized file). This is useful when you're expecting a specific type of response, like a JSON with a certain structure, and want to make sure it's complete and error-free.
Response Assertion in JMeter is an element that checks whether the server response meets specific criteria. It is used to verify the correctness of responses in performance tests. You can use it to check if the response body contains certain text, if a header includes a specific value, or if the HTTP status code matches the expected one. This ensures that the service not only responds but also returns correct data. Response Assertion can work on different parts of the response, such as the body, headers, status code, or message, which gives great flexibility in testing.
Constant Timer in JMeter is an element that allows you to add a delay between individual requests in a test. This delay is constant, meaning all requests will have the same pause between them. It can be used when you want to simulate user behavior where actions are performed at a specific frequency or with pauses between actions, such as waiting between clicks on a page. By using the Constant Timer, tests become more realistic, reflecting actual user behavior.
Uniform Random Timer in JMeter is an element that adds a random delay between the execution of requests. The delay time is randomly generated within a specified range, allowing for more natural, unpredictable user interactions. For example, if you set the minimum delay to 1 second and the maximum delay to 3 seconds, JMeter will randomly choose a delay time between 1 and 3 seconds before sending the next request in each iteration. This makes the tests more realistic and better simulates actual user behavior.
Gaussian Random Timer in JMeter is an element that adds a delay between requests, but the delay time is randomly generated according to a normal (Gaussian) distribution. This means that most delays will be close to the average value, but occasional longer or shorter delays may occur. This type of timer allows for a more realistic simulation of users who typically perform actions at similar intervals but may have occasional longer pauses between actions. The Gaussian Random Timer is useful when you want to replicate natural time variations typical of real users.
From Basics to Advanced Performance Testing Techniques
Course Description:
Performance testing is essential to ensure that applications and systems run smoothly and reliably, regardless of user load. In today’s world of increasing user expectations and rapidly evolving technology, application performance often determines its success in the market. This course will introduce you to performance testing using Apache JMeter – one of the most popular and versatile open-source tools.
The course is designed to be easily understood by both beginner testers and developers, as well as experienced QA professionals. With a balanced mix of theory and hands-on practice, you’ll learn how to create comprehensive load, stress, and scalability tests that help identify potential issues before an application goes live.
During the training, you will master the key features of JMeter, including creating test plans, configuring requests, using logic controllers and assertions, and analyzing test results.
Course Objective:
By the end of the course, you’ll have the skills to carry out full performance tests – from planning and setup to detailed result analysis. You’ll learn how to design realistic test scenarios that simulate actual user behavior, such as regular usage or sudden traffic spikes.
After completing the course, you’ll confidently work in a testing environment, apply best practices, and deliver valuable insights that contribute to improving the quality and performance of software in your organization.