How to Run Simultaneous Calls to test performance

I’m looking for a method to run a collection “calls” and have the calls execute Simultaneously. I’m familiar with the Performance test feature but there does not appear to be a way to remove the sequential aspect out of using it in a collection run.

I’m basically trying to execute 5 calls at exactly the same time - and repeat this process over and over.

Hi @IFS-QA. Welcome to the Postman Community.

I am not certain that there is a way to achieve this currently in Postman. However, I am curious to understand your specific use case for this feature. A workaround might be to make this API call in your scripts tabs, but that might be a bit hacky and inefficient.

Thanks for the reply - the use case is as stated wanting to determine the servers ability to handle these simultaneous calls - and if to see if there is a performance degradation as a result of doing it multiple times.

Yes. The performance testing feature allows you to specify a number of virtual users, it can be configured to have the virtual users make the same request at the same time. Why does this not work for your usecase?

1 Like

While I do not know a method to run requests from a collection simultaneously, you could start them asynchronously from a pre-request script. Here is an example:

/**
 * @summary Promisifies the pm.sendRequest API
 * @param options The request configuration object
 * @returns {Promise} If successful, the returned promise is resolved returning the response
 * to the request. If it fails, the returned promise is rejected with the reported error.
 */
const asyncSendRequest = async (options) => {
    return new Promise((resolve, reject) => {
        pm.sendRequest(options, (error, response) =>{
            if (error) reject(error);
            else resolve(response);
        });
    });
};

const request1 = {
    url: `${apiUrl}/your_POST_endpoint`,
    method: 'POST',
    header: {
        'Content-Type': 'application/json',
    },
    body: {
        mode: 'raw',
        raw: JSON.stringify({ postData: "your data here"),
    }
}

const request2 = {
    url: `${apiUrl}/your_GET_endpoint`,
    method: 'GET',
    header: {
        'Content-Type': 'application/json',
    },
}

const responseStrings = Promise.all(
  asyncSendRequest(request1),
  asyncSendRequest(request2),
);

const responses = responseStrings.forEach((responseString) => JSON.parse(responseString));

// Do something with the responses. Of course, you should also do some error handling as some of the requests may fail for whatever reason.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.