Reply 2 thread groups one after the other - jmeter

I have 2 thread groups in one test plan in Jmeter. I know how to replay both the thread groups one after the other during a load test i.e., by selecting 'Run the thread group consecutively' option in the test plan.
But I want to do the same in GUI mode for one iteration. I am fixing the second thread group and want to replay that after the first thread group completes. I checked the option but it didn't worked. Is there any other way?
Here is my Test Plan-
enter image description here

Related

Delay the Threadgroup in jmeter test

I have 4 thread groups in my test. I have requirement as below:
I want first 3 thread groups to work sequentially. Hence, I have checked the chekcbox "Run Thread groups consecutively". But, i want my fourth thread group to start 30 mins after the third thread group while the third thread group is still not complete. Can this be achieved on Jmeter. Any help on this is highly appreciated.
If you tick Run Thread groups consecutively box you won't be able to have more than 1 thread group running at any moment of time.
So you need to untick that box on test plan level and start all Thread Groups in parallel.
The fact that the thread group has started doesn't necessarily mean that it will start executing Samplers, you can delay the execution until the previous Thread Group is done.
For example you can use Inter-Thread Communication Plugin for this purpose, in 1st thread group and put something into a FIFO queue and then try to read the value using jp#gc - Inter-Thread Communication PreProcessor in the 2nd Thread Group (add it to the first sampler). The 2nd Thread Group will start executing samplers only when the value will be available in the queue.
See SynchronizationExample.jmx test plan for example implementation
The same approach should be applied for thread groups 3 and 4, when 3rd thread group starts - put something to the FIFO queue so 4th thread group would be aware that the 3rd one has started, then you can "sleep" for 30 minutes using Flow Control Action sampler

JMeter Test Plan settings

I am new to JMeter. I'm using JMeter version 5.0.
I have created a new Test Plan. Test Plan has a few settings.
Can you please explain the use of each checkbox?
Checkboxes are:
1) Run ThreadGroups consecutively(i.e one at a time)
2) Run tearDown ThreadGroups after shutdown of main threads.
3) Functional test mode(i.e. save Response data and Sampler Data)
When trying to understand JMeter, go through its component reference (below)
You should keep the defaults unless specific case is needed.
Functional Testing is not recommended/needed unless you are debugging (and also not needed usually)
teardown/setup groups are useful for setting/cleaning tasks in test.
And usually you want run multiple Thread Groups serially rather than in parallel.
Selecting Functional Testing instructs JMeter to save the additional sample information - Response Data and Sampler Data - to all result files. This increases the resources needed to run a test, and may adversely impact JMeter performance. If more data is required for a particular sampler only, then add a Listener to it, and configure the fields as required.
The option does not affect CSV result files, which cannot currently store such information.
Also, an option exists here to instruct JMeter to run the Thread Group serially rather than in parallel.
Run tearDown Thread Groups after shutdown of main threads: if selected, the tearDown groups (if any) will be run after graceful shutdown of the main threads. The tearDown threads won't be run if the test is forcibly stopped.
1) Run ThreadGroups consecutively(i.e one at a time)
In a test plan usually, you would have different thread groups ( user groups ) sending requests to different services. For example
Thread Group 1 > Load and Login to the System
Thread Group 2 > A Form Submission in the System
Keeping the above-mentioned thread groups, if you have selected Run ThreadGroups consecutively option it will run The Thread group 1 first and then move to the second one. If not there will be a parallel execution of all active Thread groups.
2) Run tearDown ThreadGroups after shutdown of main threads
There is no difference in a normal Thread Group and a Teardown Thread Group when it comes to the functionality. You can specify the Post-Test actions in the Teardown Thread Group and use Run tearDown ThreadGroups after shutdown of main threads to execute them after the normal thread Group Execution
As an example if you have created a user profile for your performance testing purposes and if you want to remove the user after the test execution. You can create the request to delete the user in this thread group
3) Functional test mode(i.e. save Response data and Sampler Data)
When you run a huge set of requests I recommend you to NOT to use this. The reason is if you have selected this option it will include all the request and response data (including HTML, etc. ) in your log files. ( Normally it won't record your response and sampler data ) Even if you run the test in NON-GUI mode the log file would be few GBs if you have selected this option. So it's better to use this if you are debugging or running a less number of users in your test.
Run ThreadGroups consecutively(i.e one at a time)
If your test plan contains two thread groups i.e ThreadGroup-1 and ThreadGroup-2.
If above property is unchecked -then the active threads from both the thread group
will run parallel and
if checked - That means JMeter will start ThreadGroup-1 first, then ThreadGroup-2 and so on.
So by using this property you can instruct JMeter to run the Thread Groups serially.
Run tearDown ThreadGroups after shutdown of main threads
By default JMeter always run tear down thread group after completion of normal thread group. But if there is any failure in the above thread group and threads stopped due to some reason. Then this tear down thread group will not run. But if this property is checked then tear down thread group will always run.

How does multiple thread groups execute in jmeter

Lets say we have 2 thread groups, one has 10 threads, another one has 30 threads. I have unchecked "run thread group consecutively". In table results, we see response time of second thread group is more than first threadgroup users.
When threadgroups are arranged other way, it shows reverse. So, whichever is second thread group, its user showing response time more than what is there in first thread group.
When you unchecked the "run thread group consecutively", then both the thread group runs in parallel. Now, based on the number of thread they will send the requests. In your scenario, 2nd thread group has created 30 threads and start sending the request. Now, based on,after how much time the response will come, it is listed in the view result. So, you thread group have more thread and may be getting response faster then thread 1. But, thread 1 is also going to be listed in the view results as shown below;-
Option is unchecked, so parallel running:-
So,in short, if "run thread group consecutively" option is unchecked, thread groups will run in parallel else sequential.
Option is checked, so sequential running:-
Hope this helps.
Only one explanation comes to my mind:
You're running your test in GUI mode
You're running it in GUI mode with Listeners enabled
If above assumptions are correct JMeter is simply lacking resources in order to kick off that many threads and given JMeter is not capable of sending requests fast enough you're getting "false negative" results as JMeter spends time in GC trying to free up some Heap space in order to be able to operate.
So:
Make sure to run your test in command-line non-GUI mode
Disable all the Listeners, they don't add any value, only consume valuable resources
Follow recommendations from the 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure in order to configure JMeter for maximum performance

jmeter run part of thread groups sequentually

I've got quite complex jmeter test plan that prepares data and save pre-conditions to properties that next thread groups use. So I CANNOT disable "Run thread groups consecutively" and split this onto 2 different plans. But I need to emulate different users' behavior and those thread groups differ by Number of threads and queries.
Is there any way to launch selected thread groups sequentially without breaking preparation on a regular basis?
Will try to do that via setUp Thread Groups/ Thread Groups / TearDown Thread Groups and without Run consecutively

How to insert a delay in Jmeter based on Threads

I have 3 ThreadGroups namely: ThreadGroup1, ThreadGroup2 and ThreadGroup3. I want to run ThreadGroup 1 and 2 simultaneously and then once both these are done, I want to run ThreadGroup 3.
Is there a way I can put a timer/delay till a certain number threads are completed?
Configure the script as follows:
Test Plan
--Thread Group01
--Thread Group02
--tearDown Thread Group03
As per JMeter documentation of Tear Down Thread group,
A special type of ThreadGroup that can be utilized to perform
Post-Test Actions. The behavior of these threads is exactly like a
normal Thread Group element. The difference is that these type of
threads execute after the test has finished executing its regular
Thread Groups.
Note that by default it won't run if Test is gracefully shutdown, if
you want to make it run in this case, ensure you check the option "Run
tearDown Thread Groups after the shutdown of main threads" on Test
Plan element. If Test Plan is stopped, tearDown will not run even if
the option is checked.
Configuration in the Test Plan
Uncheck the option Run Thread Groups consecutively(i.e. run groups one at at a time)
Check the option Run tearDown Thread Groups after shutdown of main threads
Sample test script :

Resources