Hi, I’m new to k6. I ran some load tests to my API, for that I used --vus 50 --duration 600s with a script using http.batch(requests); where requests is an array with 14 items.
So, it will send 14 requests on each iteration, right? During the test, 5617 iterations were completed, 78638 reqs total, and 99.99% of the checks passed.
But, what can I say from these results? That my API can only handle 50 users? or I can say that each iteration is a user so my API can handle ~5k users? Or, should I do some math with the total of requests and the number of iterations?
Need some help understanding this, as I said, I’m new to k6
Assuming there was no visible impact on response times (another key metric to keep an eye on), then you can safely say that your API appears to handle at least the HTTP request rate that the 50 VUs achieved (78,638 / 600s = 131 requests/sec, but this includes ramp-up/down so your peak request rate is likely higher).
Relating what your VUs are doing to what real users would be doing can get a bit more complex as it depends somewhat on the definition of “concurrent use”. If what they do constitutes just a single batch of 14 requests and nothing beyond that, your user concurrency is going to map directly to the achieved HTTP request rate.
If, however, there’s other subsequent HTTP requests beyond the initial batch, you then have to take into account that VUs could be considered to be using your app over a period of time (in Google Analytics, this is referred to as “Active Users”, a metric that more closely aligns with VU concurrency).