Bird
Raised Fist0
Testing Fundamentalstesting~20 mins

CRUD operation verification in Testing Fundamentals - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
CRUD Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Create Operation Test

What will be the output of this test code that verifies a create operation in a simple in-memory list database?

Testing Fundamentals
database = []

def create_item(item):
    database.append(item)
    return True

result = create_item({'id': 1, 'name': 'Test Item'})
print(result, len(database))
ATrue 0
BFalse 0
CTrue 1
DFalse 1
Attempts:
2 left
💡 Hint

Check what the create_item function returns and how the database list changes.

❓ assertion
intermediate
2:00remaining
Correct Assertion for Update Operation

Which assertion correctly verifies that an update operation changed the name of an item in a dictionary database?

Testing Fundamentals
database = {1: {'id': 1, 'name': 'Old Name'}}

# Update operation
updated_item = {'id': 1, 'name': 'New Name'}
database[1] = updated_item

# Assertion to verify update:
Aassert database[1]['name'] == 'New Name'
Bassert database[1]['name'] == 'Old Name'
Cassert database[1]['id'] == 2
Dassert 'New Name' in database
Attempts:
2 left
💡 Hint

Check the updated value of the name key for item with id 1.

🔧 Debug
advanced
2:00remaining
Identify the Bug in Delete Operation Test

What is the bug in this delete operation test code?

Testing Fundamentals
database = [{'id': 1}, {'id': 2}]

# Delete item with id 1
database = [item for item in database if item['id'] != 1]

# Test if item deleted
assert 1 not in database
AThe assertion is incorrect because it checks if integer 1 is not in list of dicts
BThe delete operation raises a syntax error
CThe database variable is not updated after deletion
DThe list comprehension does not remove the item with id 1
Attempts:
2 left
💡 Hint

Look at what the assertion is checking inside the list.

🧠 Conceptual
advanced
2:00remaining
Best Practice for Verifying Read Operation

Which option describes the best practice to verify a read operation in a CRUD test?

AOnly check that the read function does not raise an error
BConfirm that the read function returns data faster than 1 second
CVerify that the read function returns a non-empty list regardless of content
DCheck that the read function returns the exact expected data structure and values
Attempts:
2 left
💡 Hint

Think about what ensures the read operation is correct, not just working.

❓ framework
expert
2:00remaining
Choosing the Right Test Framework Feature for CRUD Tests

Which test framework feature is most useful to isolate each CRUD operation test to avoid side effects?

ARunning all CRUD tests in a single test method to share state
BUsing setup and teardown methods to reset the database state before and after each test
CUsing global variables to store test data across tests
DDisabling assertions to speed up test execution
Attempts:
2 left
💡 Hint

Consider how to keep tests independent and repeatable.

Practice

(1/5)
1. Which CRUD operation is responsible for adding new data to a system?
easy
A. Delete
B. Read
C. Update
D. Create

Solution

  1. Step 1: Understand CRUD operations

    CRUD stands for Create, Read, Update, and Delete, each representing a basic data operation.
  2. Step 2: Identify the operation for adding data

    The 'Create' operation is used to add new data entries into the system.
  3. Final Answer:

    Create -> Option D
  4. Quick Check:

    Adding new data = Create [OK]
Hint: Create means add new data to the system [OK]
Common Mistakes:
  • Confusing 'Create' with 'Update'
  • Thinking 'Read' adds data
  • Mixing 'Delete' with adding data
2. Which of the following is the correct syntax to verify a Delete operation in a test case?
easy
A. assert data.exists() == True
B. assert data.is_deleted() == True
C. assert data.count() > 0
D. assert data.is_present() == True

Solution

  1. Step 1: Understand Delete verification

    To verify deletion, the test must confirm the data no longer exists or is marked deleted.
  2. Step 2: Choose assertion that confirms deletion

    assert data.is_deleted() == True correctly checks that the data was deleted.
  3. Final Answer:

    assert data.is_deleted() == True -> Option B
  4. Quick Check:

    Delete check uses is_deleted() == True [OK]
Hint: Check deletion with is_deleted() == True [OK]
Common Mistakes:
  • Using exists() == True after deletion
  • Checking count() > 0 which means data exists
  • Confusing is_present() with deletion status
3. Consider this test code snippet verifying an Update operation:
original_value = record.get('name')
record.update({'name': 'Alice'})
updated_value = record.get('name')
assert updated_value == 'Alice'

What will be the result of this test if the update works correctly?
medium
A. Test passes because updated_value matches 'Alice'
B. Test fails because original_value is not checked
C. Test fails due to syntax error in update method
D. Test passes but updated_value remains original_value

Solution

  1. Step 1: Analyze the update operation

    The code updates the 'name' field to 'Alice' and retrieves it again.
  2. Step 2: Check the assertion logic

    The assertion checks if updated_value equals 'Alice', which should be true if update works.
  3. Final Answer:

    Test passes because updated_value matches 'Alice' -> Option A
  4. Quick Check:

    Updated value == 'Alice' means test passes [OK]
Hint: Assert updated value equals new data after update [OK]
Common Mistakes:
  • Assuming original_value must be checked in this test
  • Thinking update method has syntax error
  • Believing updated_value stays unchanged after update
4. A tester wrote this code to verify a Create operation:
new_record = db.create({'id': 1, 'value': 100})
assert new_record.id == 1
assert new_record.value == 100
assert db.find(1) == None

What is the error in this test?
medium
A. The assertion db.find(1) == None is incorrect after creation
B. The new_record object does not have id attribute
C. The create method should not return a record
D. The value 100 is not valid for creation

Solution

  1. Step 1: Understand Create operation verification

    After creating a record, it should be found in the database.
  2. Step 2: Analyze the assertion db.find(1) == None

    This assertion expects no record found, which contradicts the creation.
  3. Final Answer:

    The assertion db.find(1) == None is incorrect after creation -> Option A
  4. Quick Check:

    Created record must be found, so find(1) != None [OK]
Hint: After create, find should return the record, not None [OK]
Common Mistakes:
  • Expecting find to return None after creation
  • Assuming create returns nothing
  • Confusing attribute existence on new_record
5. You want to verify all CRUD operations on a user profile. Which sequence of test steps is best to ensure data integrity?
hard
A. Create user, Update user, Delete user, Read user
B. Read user, Create user, Update user, Delete user
C. Create user, Read user, Update user, Delete user
D. Delete user, Create user, Read user, Update user

Solution

  1. Step 1: Understand logical CRUD test order

    First, create data to have something to work with, then read to verify creation.
  2. Step 2: Follow with update and delete

    Update tests changes, and delete confirms removal, maintaining data integrity.
  3. Final Answer:

    Create user, Read user, Update user, Delete user -> Option C
  4. Quick Check:

    CRUD order: Create, Read, Update, Delete [OK]
Hint: Test CRUD in order: Create, Read, Update, Delete [OK]
Common Mistakes:
  • Deleting before creating data
  • Reading before data exists
  • Updating before creation
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