Bird
Raised Fist0
Postmantesting~20 mins

Random data generation in Postman - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Random Data Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Postman script generating a random integer?
Consider this Postman pre-request script snippet that generates a random integer between 1 and 10 inclusive. What is the possible output stored in the variable randomInt?
Postman
const randomInt = Math.floor(Math.random() * 10) + 1;
pm.environment.set('randomInt', randomInt);
console.log(randomInt);
AAny integer from 1 to 10 inclusive
BAny integer from 0 to 9 inclusive
CAny integer from 1 to 9 inclusive
DAny integer from 0 to 10 inclusive
Attempts:
2 left
💡 Hint
Remember how Math.random() and Math.floor() work together to generate integers in a range.
assertion
intermediate
2:00remaining
Which assertion correctly verifies a random email format in Postman test script?
You want to check that a randomly generated email stored in pm.environment.get('randomEmail') matches the pattern username@domain.com. Which assertion is correct?
Postman
const email = pm.environment.get('randomEmail');
Apm.test('Email format is valid', () => { pm.expect(email).to.have.string(/^[\w.-]+@[\w.-]+\.com$/); });
Bpm.test('Email format is valid', () => { pm.expect(email).to.equal(/^[\w.-]+@[\w.-]+\.com$/); });
Cpm.test('Email format is valid', () => { pm.expect(email).to.include(/^[\w.-]+@[\w.-]+\.com$/); });
Dpm.test('Email format is valid', () => { pm.expect(email).to.match(/^[\w.-]+@[\w.-]+\.com$/); });
Attempts:
2 left
💡 Hint
Check which assertion method tests a string against a regular expression.
🔧 Debug
advanced
2:00remaining
Why does this Postman script fail to generate a random UUID correctly?
This script tries to generate a random UUID and set it as an environment variable. Why does it fail?
Postman
const uuid = '{{$guid}}';
pm.environment.set('randomUUID', uuid);
console.log(uuid);
Apm.environment.set() cannot store strings generated dynamically.
BThe variable {{$guid}} is not recognized in pre-request scripts and returns the string literally.
Cpm.variables.replaceIn() is asynchronous and needs await keyword.
DThe console.log() statement causes the script to fail.
Attempts:
2 left
💡 Hint
Check how Postman handles dynamic variables in scripts.
🧠 Conceptual
advanced
2:00remaining
What is the main advantage of using Postman dynamic variables for random data generation?
Why should testers prefer Postman dynamic variables like {{$randomInt}} or {{$randomEmail}} over hardcoded test data?
AThey automatically validate the data format without assertions.
BThey guarantee the same data every time for consistent test results.
CThey help create unique test data each run, reducing false positives from duplicate data.
DThey run faster than hardcoded data because they are cached.
Attempts:
2 left
💡 Hint
Think about test data uniqueness and test reliability.
framework
expert
3:00remaining
Which Postman test script snippet correctly generates and validates a random date within the last 30 days?
You want to generate a random date within the last 30 days and verify it is not in the future. Which snippet does this correctly?
A
const now = new Date();
const past = new Date(now.getTime() - 30*24*60*60*1000);
const randomTime = past.getTime() + Math.random() * (now.getTime() - past.getTime());
const randomDate = new Date(randomTime);
pm.environment.set('randomDate', randomDate.toISOString());
pm.test('Date is not in future', () => { pm.expect(randomDate.getTime()).to.be.at.most(now.getTime()); });
B
const now = new Date();
const past = new Date(now.getTime() - 30*24*60*60*1000);
const randomTime = past.getTime() + Math.random() * (past.getTime() - now.getTime());
const randomDate = new Date(randomTime);
pm.environment.set('randomDate', randomDate.toISOString());
pm.test('Date is not in future', () => { pm.expect(randomDate.getTime()).to.be.at.most(now.getTime()); });
C
const now = new Date();
const past = new Date(now.getTime() - 30*24*60*60*1000);
const randomTime = past.getTime() - Math.random() * (now.getTime() - past.getTime());
const randomDate = new Date(randomTime);
pm.environment.set('randomDate', randomDate.toISOString());
pm.test('Date is not in future', () => { pm.expect(randomDate.getTime()).to.be.at.most(now.getTime()); });
D
const now = new Date();
const past = new Date(now.getTime() - 30*24*60*60*1000);
const randomTime = now.getTime() + Math.random() * (now.getTime() - past.getTime());
const randomDate = new Date(randomTime);
pm.environment.set('randomDate', randomDate.toISOString());
pm.test('Date is not in future', () => { pm.expect(randomDate.getTime()).to.be.at.most(now.getTime()); });
Attempts:
2 left
💡 Hint
Check how the randomTime is calculated between past and now timestamps.

Practice

(1/5)
1. What is the main purpose of using random data generation in Postman tests?
easy
A. To create different test inputs each time to check software behavior
B. To make tests run faster by using fixed data
C. To avoid writing any test scripts
D. To store test results permanently

Solution

  1. Step 1: Understand the role of random data

    Random data generation creates new inputs for each test run to simulate varied user inputs.
  2. Step 2: Identify the benefit in testing

    This helps find bugs that fixed data might miss by testing unexpected or edge cases.
  3. Final Answer:

    To create different test inputs each time to check software behavior -> Option A
  4. Quick Check:

    Random data = varied inputs [OK]
Hint: Random data means new inputs every test run [OK]
Common Mistakes:
  • Thinking random data makes tests faster
  • Believing random data avoids scripting
  • Confusing data storage with data generation
2. Which Postman syntax correctly generates a random integer between 1 and 100?
easy
A. pm.variables.get('randomInt', Math.floor(Math.random() * 100) + 1);
B. var randomInt = Math.floor(Math.random() * 100) + 1;
C. pm.environment.set('randomInt', Math.floor(Math.random() * 100) + 1);
D. pm.randomInt(1, 100);

Solution

  1. Step 1: Identify how to generate random integer in JavaScript

    Math.floor(Math.random() * 100) + 1 generates a number from 1 to 100.
  2. Step 2: Check how to save it in Postman environment

    pm.environment.set('randomInt', value) saves the value for later use in requests.
  3. Final Answer:

    pm.environment.set('randomInt', Math.floor(Math.random() * 100) + 1); -> Option C
  4. Quick Check:

    Use pm.environment.set to save random data [OK]
Hint: Use pm.environment.set to store random values [OK]
Common Mistakes:
  • Using pm.variables.get to set a value
  • Not saving the random value for reuse
  • Using a non-existent pm.randomInt function
3. Given this Postman script snippet, what will be the output stored in the environment variable 'randomName'?
const names = ['Alice', 'Bob', 'Charlie'];
const randomIndex = Math.floor(Math.random() * names.length);
pm.environment.set('randomName', names[randomIndex]);
medium
A. One of "Alice", "Bob", or "Charlie" randomly
B. "Alice" always
C. An error because names.length is undefined
D. A number between 0 and 2

Solution

  1. Step 1: Understand randomIndex calculation

    Math.floor(Math.random() * names.length) gives 0, 1, or 2 randomly.
  2. Step 2: Check what is stored in 'randomName'

    names[randomIndex] picks a random name from the array.
  3. Final Answer:

    One of "Alice", "Bob", or "Charlie" randomly -> Option A
  4. Quick Check:

    Random index picks random name [OK]
Hint: Random index picks from array length [OK]
Common Mistakes:
  • Assuming output is always first element
  • Thinking names.length is undefined
  • Expecting a number instead of a name
4. Identify the error in this Postman pre-request script for generating a random email:
var randomNum = Math.random() * 1000;
pm.environment.set('email', 'user' + randomNum + '@test.com');
medium
A. Variable randomNum is not declared
B. randomNum should be rounded to an integer
C. pm.environment.set is used incorrectly
D. Email string concatenation syntax is wrong

Solution

  1. Step 1: Check randomNum value type

    Math.random() * 1000 produces a decimal number like 123.456.
  2. Step 2: Understand email format requirements

    Email should not contain decimals in username part; it should be an integer.
  3. Final Answer:

    randomNum should be rounded to an integer -> Option B
  4. Quick Check:

    Round random numbers for clean strings [OK]
Hint: Round random numbers before string use [OK]
Common Mistakes:
  • Ignoring decimal values in emails
  • Misusing pm.environment.set syntax
  • Not declaring variables properly
5. You want to generate a random user profile in Postman with a name, age (18-60), and email. Which script correctly generates and saves all three as environment variables?
hard
A. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = `user${age}@mail.com`; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
B. const names = ['Anna', 'Ben', 'Cara']; const age = Math.random() * 60; const email = 'user' + age + '@mail.com'; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
C. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = 'user' + age + '@mail.com'; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
D. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = `user${age}@mail.com`; pm.environment.set('name', names[Math.floor(Math.random() * names.length)]); pm.environment.set('age', age); pm.environment.set('email', email);

Solution

  1. Step 1: Check age generation range

    Math.floor(Math.random() * 43) + 18 correctly generates age between 18 and 60.
  2. Step 2: Verify name selection and email format

    names[Math.floor(Math.random() * names.length)] picks a random name; email uses template string with age.
  3. Step 3: Confirm environment variable setting

    pm.environment.set is used correctly to save all variables.
  4. Final Answer:

    Option D script correctly generates and saves all variables -> Option D
  5. Quick Check:

    Random index + correct age range + pm.environment.set [OK]
Hint: Use Math.floor and correct index for arrays [OK]
Common Mistakes:
  • Using age as array index
  • Not rounding random numbers
  • Incorrect string concatenation