Bird
Raised Fist0
Testing Fundamentalstesting~20 mins

Request and response validation in Testing Fundamentals - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Request & Response Validation 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 API response validation code?

Consider this Python code snippet that validates an API JSON response status and content:

response = {'status_code': 200, 'data': {'user': 'alice', 'id': 123}}

assert response['status_code'] == 200
assert 'user' in response['data']
print('Validation passed')

What will be printed when this code runs?

Testing Fundamentals
response = {'status_code': 200, 'data': {'user': 'alice', 'id': 123}}

assert response['status_code'] == 200
assert 'user' in response['data']
print('Validation passed')
AKeyError
BAssertionError
CTypeError
DValidation passed
Attempts:
2 left
💡 Hint

Check if the status code is 200 and if the key 'user' exists in the nested data dictionary.

❓ assertion
intermediate
2:00remaining
Which assertion correctly checks the response contains a non-empty 'items' list?

You receive this JSON response from an API:

{'status': 'success', 'items': [1, 2, 3]}

Which assertion statement correctly verifies that 'items' exists and is not empty?

Aassert response['items'] != None
Bassert 'items' in response and len(response['items']) > 0
Cassert response['items'] is not []
Dassert response['items']
Attempts:
2 left
💡 Hint

Check both the presence of the key and that the list has elements.

🔧 Debug
advanced
2:00remaining
Why does this request validation test fail with a KeyError?

Given this test code snippet:

request = {'method': 'POST', 'body': {'username': 'bob'}}
assert request['body']['password'] == 'secret'

Why does this test raise a KeyError?

Testing Fundamentals
request = {'method': 'POST', 'body': {'username': 'bob'}}
assert request['body']['password'] == 'secret'
AThe 'password' key does not exist in the 'body' dictionary, causing KeyError
BThe 'body' key is missing in the request dictionary
CThe 'method' key is not 'POST', causing assertion failure
DThe 'password' value is None, causing TypeError
Attempts:
2 left
💡 Hint

Check if the key you access exists in the dictionary.

🧠 Conceptual
advanced
2:00remaining
What is the main purpose of response schema validation in API testing?

Why do testers perform response schema validation when testing APIs?

ATo ensure the response structure and data types match the expected format
BTo check if the API server is running and reachable
CTo verify the response time is under a threshold
DTo confirm the API request headers are correctly set
Attempts:
2 left
💡 Hint

Think about what schema means in data context.

❓ framework
expert
2:00remaining
Which test framework feature best supports automated request and response validation?

In automated API testing, which feature of a test framework helps validate both request payloads and response data effectively?

AStatic code analysis tools for syntax checking
BManual test case execution with screenshots
CData-driven testing with parameterized test cases
DVersion control integration for code commits
Attempts:
2 left
💡 Hint

Consider how to run the same test with many input and output variations automatically.

Practice

(1/5)
1. What is the main purpose of request and response validation in software testing?
easy
A. To write code faster
B. To check if the data sent and received matches expected formats and values
C. To design the user interface
D. To improve the speed of the application

Solution

  1. Step 1: Understand the role of validation

    Request and response validation ensures the data sent and received is correct and follows expected rules.
  2. Step 2: Identify the main goal

    This process helps catch errors early by verifying data formats and values before further processing.
  3. Final Answer:

    To check if the data sent and received matches expected formats and values -> Option B
  4. Quick Check:

    Validation = Check data correctness [OK]
Hint: Validation means checking data correctness both ways [OK]
Common Mistakes:
  • Confusing validation with performance testing
  • Thinking validation changes UI design
  • Assuming validation speeds up coding
2. Which of the following is the correct way to assert that a response status code is 200 in a test script?
easy
A. assert response.code = 200
B. assert response.status == '200'
C. assert response.status_code = '200'
D. assert response.status_code == 200

Solution

  1. Step 1: Check correct attribute and comparison

    The correct attribute for HTTP status code is status_code and it should be compared with == for equality.
  2. Step 2: Identify correct syntax

    assert response.status_code == 200 uses assert response.status_code == 200, which is syntactically correct and logically valid.
  3. Final Answer:

    assert response.status_code == 200 -> Option D
  4. Quick Check:

    Use == to compare status_code with integer 200 [OK]
Hint: Use == to compare status_code with integer 200 [OK]
Common Mistakes:
  • Using single = instead of == for comparison
  • Comparing status_code to string '200' instead of integer
  • Using wrong attribute names like status or code
3. Given this test code snippet:
response = api_call()
assert response.json()['success'] == True
assert response.status_code == 201

What will happen if the API returns status code 200 and success is True?
medium
A. Test will fail on the status code assertion
B. Test will pass successfully
C. Test will fail on the success key assertion
D. Test will raise a syntax error

Solution

  1. Step 1: Check success key assertion

    The assertion response.json()['success'] == True will pass because success is True.
  2. Step 2: Check status code assertion

    The assertion response.status_code == 201 will fail because the actual status code is 200, not 201.
  3. Final Answer:

    Test will fail on the status code assertion -> Option A
  4. Quick Check:

    Status code 200 != 201 causes failure [OK]
Hint: Check each assertion separately for pass/fail [OK]
Common Mistakes:
  • Assuming test passes if one assertion passes
  • Confusing status code 200 with 201
  • Thinking syntax error occurs when assertions fail
4. You have this test code:
assert response.json()['data'] != None

But the test fails with a KeyError. What is the most likely cause?
medium
A. The 'data' key does not exist in the response JSON
B. The response is not JSON format
C. The assertion syntax is incorrect
D. The response status code is not 200

Solution

  1. Step 1: Understand KeyError cause

    A KeyError happens when trying to access a dictionary key that does not exist.
  2. Step 2: Analyze the assertion

    The assertion accesses response.json()['data']. If 'data' key is missing, KeyError occurs.
  3. Final Answer:

    The 'data' key does not exist in the response JSON -> Option A
  4. Quick Check:

    Missing key causes KeyError [OK]
Hint: KeyError means missing key in dictionary [OK]
Common Mistakes:
  • Assuming assertion syntax error causes KeyError
  • Thinking response format causes KeyError without checking keys
  • Ignoring that missing keys cause KeyError
5. You want to validate a JSON response that may or may not include the key error. Which assertion correctly checks that if error exists, its value is a non-empty string?
hard
A. assert response.json()['error'] != ''
B. assert response.json().get('error') == ''
C. assert 'error' not in response.json() or (isinstance(response.json()['error'], str) and response.json()['error'] != '')
D. assert 'error' in response.json() and response.json()['error'] == ''

Solution

  1. Step 1: Understand conditional validation

    The assertion must allow the 'error' key to be missing or, if present, check its value is a non-empty string.
  2. Step 2: Analyze each option

    assert 'error' not in response.json() or (isinstance(response.json()['error'], str) and response.json()['error'] != '') uses logical OR: if 'error' not present, passes; else checks type and non-empty string. Other options fail if 'error' is missing or check wrong conditions.
  3. Final Answer:

    assert 'error' not in response.json() or (isinstance(response.json()['error'], str) and response.json()['error'] != '') -> Option C
  4. Quick Check:

    Allow missing key or validate non-empty string [OK]
Hint: Use OR to allow missing key or validate value [OK]
Common Mistakes:
  • Assuming key always exists without checking
  • Checking for empty string instead of non-empty
  • Using incorrect logical operators
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard