Wait in a loop, till I get the right response - jmeter

Scenario:
1) I have a tool which keeps generating data in Database. (E.g. It creates 200 users and it takes say 10 minutes)
2) I will trigger the tool to generate the users, meanwhile I need to loop through the Response till I get the 200 users count.
The suggestion I’m looking for is, the optimized way to achieve the above mentioned scenario.
Any help in this regard is highly appreciated.
Thanks,

Related

How to find gap in API response - JMeter

I am new to JMeter and scripting overall.
Here's my scenario - My response from the HTTP request generates data every second and the response gives the timestamp along with other data. I have to identify if there is any gap in the timestamp sequence just to identify if there is any gap in the data overall.
Example of my response is attached (timestamp highlighted).
How can I achieve this? The whole idea is that the data should be present for every second, and missing data needs to be identified.
Post Note - There will be thousands of rows depending on the start and end time I am passing in the request, but since JMeter limits the data row to 1000 rows only and my data is going to be more than that, how can I loop my request so that the end time passed in my previous request becomes the start date of my next request and the request becomes a 15 minute time range request which will generate 900 records.
Please let me know if more details is needed or if I don't make any sense.
Please see the attachment as well.
Any guidance will be really helpful.
Thank you!
Keshaventer image description here
I'm new to scripting so don't have much idea on how to proceed with this and how to accomplish this.
I'm not very good by parsing incomplete JSON by looking at screenshots so I can only provide a generic answer:
You can create custom pass/fail criteria using JMeter Assertions in general and in your case JSR223 Assertion in particular
Response body can be fetched as prev.getResponseData() where prev stands for the previous SampleResult
Once done you can use XmlSlurper to extract data attribute values and store them into some form of Array
And finally iterate the array and check if the next item is 1 second ahead of the previous

250 users hitting around 60k overall requests in jmeter

I have 250 users ,and around 60000 sample counts should be hit including all the requests. Whichever request is supposed to get huge sample count,I have put those request within loop count,But the requests outside the loop are getting executed only 3-4 times which is less than expected. How do I handle this?
It is not very possible to provide the comprehensive answer without knowing what you're trying to achieve and seeing your test or at least Thread Group configuration
The easiest option is moving the requests which you want to execute more times into a separate Thread Group
If the requests have to stay in one Thread Group you can control the frequency using Throughput Controller
If the logic is more complex - consider using Switch Controller or Weighted Switch Controller

JMeter - How to obtain error rate per page on a specific timeframe

I have been looking on the site and I don't see anything related to this topic, so I decided to ask.
Basically, I would like to know if there is a way to extract the error rate per page using a period of time. The reason is because we run a test in different stages, with different levels of throughput. Therefore, I am interested in obtain the degradation on page health. I already got the hits and response times. However, the error rate I don't see a way to get it.
If someone knows a way, please share!
Thank you in advance guys!
You can use the jp#gc - Hits per Second - listener. Just click on Errors check box to show only the failed requests which is the Error rate you are looking for!
For page level Error rate, you can jp#gc - Transactions per Second
You have the following options:
Response Codes Per Second chart available via HTML Reporting Dashboard
Response Codes Per Second chart available via JMeter Plugins
Use 3-rd party analysis solution like BM.Sense

Visual Studio Load Test request completion and think time

I'm using load test in Visual Studio to test our web api services. But to my surprise I can't seem to test what I want to. Actually I have a single url in my .webtest file and try to send the same url time and again to see what is the avg. response time.
Here are the details
1.I use constant load of 1 user
2.Test duration of 1 hour
3.Think time of 10 seconds (not the think time between iterations)
4.The avg. response time that I get is 1.5 seconds
5.So the avg. test time comes out to be 11.5 seconds
6.Requests/sec are 0.088
7.And I'm using Sequential Test Order among 4 types of different tests
So these figures are making me think that every time a virtual user sends a request besides the specified think time it waits for the request to complete before he sends a new one (request). Thus technically the total think time becomes
Total think time = think time specified + avg. response time
But I don't want the user to wait for an already sent request to come back and then send a new one after a specified think time. I need to configure the load test in such a way that if the think time is 10 seconds then the user should send next request after every 10 seconds without waiting the first one to come back then think for another 10 seconds and then send a new request (hence making the total think time to 11.5 seconds in my case as mentioned above). And no matter what type of test I choose among 4 different types Visual Studio is always forcing the virtual user to wait for the completion of the request then add specified think time and then send a new one.
I know what Visual Studio load test is doing is more of a practical approach where the user sends the request wait till it comes back then think or interact with the website and then sends a new one.
Any help or suggestion would be appreciated towards what I'm trying to achieve.
In the properties of the scenario, set the "Test mix type" to be "Test mix based on user pace" and set the "Tests per user per hour" as appropriate. See here.
The suggestion in the question that:
Total think time = think time specified + avg. response time
is erroneous. To my mind adding the values does not provide a useful result. The two values on the right are as stated. Think time simulates the time a user spends reading the page, deciding what to do next and typing/clicking/etc their response. Response time is the "turn around" time between sending a request and getting the response. Adding them does not increase the think time in any sense, it just makes the total duration for handing the request in this specific test. Another test might make the same request with a different think time. Note that many web pages cause more than one request and response to be issued; JavaScript and other allow web pages to do many clever things.

Does JMeter show the correct average response time for the first page it hits for many virtual users?

I'm load testing a system with 500 virtual users. I've kept the "Ramp-Up period (in seconds)" option to zero. So, what I understand, JMeter will hit the system with 500 virtual users all at the same time. Please correct me if I'm wrong here.
Now, the summary report shows the average response time for the first page is ~100 seconds!. Which is more than a minute and a half of wait time. But while the JMeter is running, I manually went to the same page/url using a browser and didn't have to wait for that long. It was not even close, the page response was almost immediate for me.
My question is: is there any known issue for the average response time of the first page? Is it JMeter which is taking long to trigger that many users?
Thanks in advance.
--Ishtiaque
There is no issue in Jmeter related to first page response time.
Summary Report shows all response time details in Milliseconds, the value "100" seconds have you converted milliseconds to seconds?
Also in order to make sure that 500 users hit concurrently, use Synchronizing Timer.
Hope this will help.
While the response times will be accurate, you need to consider the affect of starting so many threads at once on both your server and your client.
500 threads to start at once is not insignificant n the client. If your server has the connections, it will start 500 threads as well.
Ramping over a period of time is more realistic loadwise, but still not really indicative of server capability until the threads have all started and settled in.
Databases can also require a settling in period which can affect response times.
Alternative to ramping is introducing a random wait at the start of each thread before firing the first sample. You can then choose not to ramp over time, but still expect resources on the client to suddenly come under load and change the settings if you hit limits. This will make the entire run much more realistic of typical behaviour. However, you need to determine if your use cases are typical.
Although the heap size is increased, i notice there is still longer time as compared to actual response time. Later i realised it was the probe effect (the extra time a tool generates due to test execution)

Resources