335

I want to POST data from Postman Google Chrome extension.

I want to make 10 requests with different data and it should be at the same time.

Is it possible to do such in Postman?

If yes, can anyone explain to me how can this be achieved?

n-verbitsky
  • 552
  • 2
  • 9
  • 20
user3384231
  • 3,641
  • 2
  • 18
  • 27
  • Open the folder of the request and click on run you will see an option to choose number of iterations :) – Mohammad Abu Saloum Oct 17 '21 at 14:15
  • Postman is built on electron, which is built on NodeJS. So they share the same limitations. NodeJS can't send multiple requests at the same time because it is a single threaded event loop. This means Postman can't either. – Beast Oct 13 '22 at 02:48

16 Answers16

287

I guess there's no such feature in postman as to run concurrent tests.

If I were you, I would consider Apache jMeter, which is used exactly for such scenarios.

Regarding Postman, the only thing that could more or less meet your needs is - Postman Runner. enter image description here There you can specify the details:

  • number of iterations,
  • upload CSV file with data for different test runs, etc.

The runs won't be concurrent, only consecutive.

Do consider jMeter (you might like it).

Jatin Chauhan
  • 105
  • 1
  • 7
Olha Horak
  • 3,488
  • 2
  • 16
  • 17
264

Postman doesn't do that but you can run multiple curl requests asynchronously in Bash:

curl url1 & curl url2 & curl url3 & ...

Remember to add an & after each request which means that request should run as an async job.

Postman however can generate curl snippet for your request: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/

Daniel B
  • 4,145
  • 1
  • 21
  • 21
61

I don't know if this question is still relevant, but there is such possibility in Postman now. They added it a few months ago.

All you need is create simple .js file and run it via node.js. It looks like this:

var path = require('path'),
  async = require('async'), //https://www.npmjs.com/package/async
  newman = require('newman'),

  parametersForTestRun = {
    collection: path.join(__dirname, 'postman_collection.json'), // your collection
    environment: path.join(__dirname, 'postman_environment.json'), //your env
  };

parallelCollectionRun = function(done) {
  newman.run(parametersForTestRun, done);
};

// Runs the Postman sample collection thrice, in parallel.
async.parallel([
    parallelCollectionRun,
    parallelCollectionRun,
    parallelCollectionRun
  ],
  function(err, results) {
    err && console.error(err);

    results.forEach(function(result) {
      var failures = result.run.failures;
      console.info(failures.length ? JSON.stringify(failures.failures, null, 2) :
        `${result.collection.name} ran successfully.`);
    });
  });

Then just run this .js file ('node fileName.js' in cmd).

More details here

Evaldas Buinauskas
  • 13,739
  • 11
  • 55
  • 107
  • 16
    Is there a way to achieve concurrent request testing with the postman ui too without using the command-line tool newman? – phil Feb 24 '17 at 11:00
  • So tried this code and it worked to run the SAME collection_A; but what if I have 2 different collections (collection_A and collection_B) that I wanna run in parallel? How would the options parameter change? Have u tried this? What that lab provides out of the box seems to be more for a load testing use case but I wanna run multiple collections in parallel; like collection_A and collection B in parallel; any idea? – pelican Jul 09 '18 at 18:24
  • 14
    I would much rather to write a bash script than that .js file – ttfreeman Sep 11 '19 at 19:26
  • failures.failures throws undefined for me, had to access a different property as failures is an array. For me failures[0].error.message was the way to go – Javier Aviles Jun 30 '21 at 11:25
  • try node simple.js & node simple.js & node simple.js & node simple.js & node simple.js & node simple.js & node simple.js to run it multiple times – Spongebob Comrade Jan 20 '22 at 06:45
  • What is the limitation to the number of parallel async collections I can run, I am trying to load test my APIs, which are not very user intensive and at max will need to run 100 collections in parrallel – Dharight Oct 22 '22 at 02:16
31

Not sure if people are still looking for simple solutions to this, but you are able to run multiple instances of the "Collection Runner" in Postman. Just create a runner with some requests and click the "Run" button multiple times to bring up multiple instances.

Dan
  • 894
  • 9
  • 21
7

Run all Collection in a folder in parallel:

'use strict';

global.Promise = require('bluebird');
const path = require('path');
const newman =  Promise.promisifyAll(require('newman'));
const fs = Promise.promisifyAll(require('fs'));
const environment = 'postman_environment.json';
const FOLDER = path.join(__dirname, 'Collections_Folder');


let files = fs.readdirSync(FOLDER);
files = files.map(file=> path.join(FOLDER, file))
console.log(files);

Promise.map(files, file => {

    return newman.runAsync({
    collection: file, // your collection
    environment: path.join(__dirname, environment), //your env
    reporters: ['cli']
    });

}, {
   concurrency: 2
});
RJFalconer
  • 10,890
  • 5
  • 51
  • 66
Michael
  • 149
  • 2
  • 11
6

In postman's collection runner you can't make simultaneous asynchronous requests, so instead use Apache JMeter instead. It allows you to add multiple threads and add synchronizing timer to it

RJFalconer
  • 10,890
  • 5
  • 51
  • 66
ashwath hegde
  • 606
  • 8
  • 12
6

The Runner option is now on the lower right side of the panel

enter image description here

Cugomastik
  • 911
  • 13
  • 22
5

If you are only doing GET requests and you need another simple solution from within your Chrome browser, just install the "Open Multiple URLs" extension:

https://chrome.google.com/webstore/detail/open-multiple-urls/oifijhaokejakekmnjmphonojcfkpbbh?hl=en

I've just ran 1500 url's at once, did lag google a bit but it works.

CularBytes
  • 9,924
  • 8
  • 76
  • 101
3

If you need to generate more consecutive requests (instead of quick clicking SEND button). You can use Runner. Please note it is not true "parallel request" generator.

File->New Runner Tab

enter image description here

Now you can "drag and drop" your requests from Collection and than keep checked only request you would like to generate by a Runner setting 10 iterations (to generate 10 requests ) and delay for example to 0 (to make it as fast as possible).

enter image description here

walter33
  • 776
  • 5
  • 12
  • This would be one by one, not trigger them at the same time I think. – highjump May 25 '23 at 08:45
  • @highjump You are right, this trigger request one by one. It generates more consecutive requests. It is not true "parallel request" generator. – walter33 May 26 '23 at 12:13
1

Easiest way is to get => Google Chrome "TALEND API TESTER" Go to help + type in Create Scenario ...or just go to this link => https://help.talend.com/r/en-US/Cloud/api-tester-user-guide/creating-scenario

I was able to send several POST API calls simultaneously.

1

As of July 2023 Postman v10.15

Postman has added testing API with performance tab and can run multiple request at the same time.

This also come with metrics as how much your API performs stated in here

this answer is based of @walter33

enter image description here

Michael Halim
  • 262
  • 2
  • 20
0

You can use Fiddler with started traffic capture to record manual queries from Postman, then select them in Fiddler's sessions list as much as you want and replay (press R key) - they would run in parallel.

https://docs.telerik.com/fiddler/generate-traffic/tasks/resendrequest

kirito17
  • 1
  • 1
0

pm.sendRequest is asynchronous, and will execute a single request in a non-blocking manner. Knowing this, it is possible to take advantage of this by stacking up asynchronous pm.sendRequest() calls in a pre-request script either on a folder or request. The caveat here is that the actual request while necessary for postman to execute anything is not relevant to the test.

I setup a quick concurrency test using two dummy requests (dummy and dummy2) like so (pre-requests and tests in my case is on the folder level. All requests are to the postman echo endpoint): ConcurrentEcho ONE Pre-request Script:

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 1');
    pm.collectionVariables.set('res1', res);
})

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 2');
    pm.collectionVariables.set('res2', res);
})

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 3');
    pm.collectionVariables.set('res3', res);
})

Test:

const res1 = pm.collectionVariables.get('res1');
const res2 = pm.collectionVariables.get('res2');
const res3 = pm.collectionVariables.get('res3');

pm.test('Validate responses', function () {
    for (const res of [res1,res2,res3]) {
        pm.expect(res).to.have.property('code', 200);
        pm.expect(res).to.have.property('status', 'OK');
    }
});

TWO Pre-request Script:

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 4');
    pm.collectionVariables.set('res4', res);
})

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 5');
    pm.collectionVariables.set('res5', res);
})

pm.sendRequest('http://postman-echo.com/get', function(err,res) {
    console.log('executing request 6');
    pm.collectionVariables.set('res6', res);
})

Test:

const res4 = pm.collectionVariables.get('res4');
const res5 = pm.collectionVariables.get('res5');
const res6 = pm.collectionVariables.get('res6');

pm.test('Validate responses', function () {
    for (const res of [res4,res5,res6]) {
        pm.expect(res).to.have.property('code', 200);
        pm.expect(res).to.have.property('status', 'OK');
    }
});

The output looks like the following:

>Get http://postman-echo.com/get
"executing request 2"
>Get http://postman-echo.com/get
"executing request 3"
>Get http://postman-echo.com/get
"executing request 1"
>Get http://postman-echo.com/get
>Get http://postman-echo.com/get  <==This is dummy request
"executing request 4"
>Get http://postman-echo.com/get
"executing request 6"
>Get http://postman-echo.com/get
"executing request 5"
>Get http://postman-echo.com/get  <==This is dummy2 request

collectionRunner output

0

According to Postman's official documentation you can do that Updated august 2023 , To configure a performance test in the Postman desktop app, do the following:

  1. Select Collections in the sidebar and select the collection you want to use for performance testing.

  2. On the collection's Overview tab, select Runner icon Run.

  3. Select the Performance tab.

  4. Enter the number of Virtual users. While the test is running, each virtual user runs the selected requests in the specified order in a repeating loop. A higher number of virtual users puts increased load on your API.

  5. Enter the Test duration in minutes.

  6. Select a Load Profile.

  • Fixed - The number of virtual users you specified is used throughout the test.
  • Ramp up - Enter a Ramp up duration in minutes. During the ramp-up period, the number of virtual users gradually increases to the number of users you specified. When you're ready to begin the performance test, select Run.

enter image description here

-2

You can run multiple instances of postman Runner and run the same collection with different data files in each instance.

Eric Aya
  • 69,473
  • 35
  • 181
  • 253
Sanjeev
  • 7
  • 1
  • 1
    As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community May 18 '22 at 12:32
-5

Open multiple postman. It replicates it and run concurrently.

Inderjeet
  • 1
  • 4