Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Use case testing in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify user login use case
Preconditions (2)
Step 1: Enter 'user@example.com' in the email input field
Step 2: Enter 'Password123!' in the password input field
Step 3: Click the 'Login' button
✅ Expected Result: User is redirected to the dashboard page with URL containing '/dashboard' and a welcome message 'Welcome, user!' is displayed
Automation Requirements - Selenium with Python
Assertions Needed:
Verify current URL contains '/dashboard'
Verify welcome message text is 'Welcome, user!'
Best Practices:
Use explicit waits to wait for elements to be visible or clickable
Use descriptive locators such as By.ID or By.CSS_SELECTOR
Organize code with setup and teardown methods
Use assertions from unittest or pytest frameworks
Automated Solution
Testing Fundamentals
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class TestUserLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/login')
        self.wait = WebDriverWait(self.driver, 10)

    def test_user_login(self):
        driver = self.driver
        wait = self.wait

        email_input = wait.until(EC.visibility_of_element_located((By.ID, 'email')))
        email_input.clear()
        email_input.send_keys('user@example.com')

        password_input = wait.until(EC.visibility_of_element_located((By.ID, 'password')))
        password_input.clear()
        password_input.send_keys('Password123!')

        login_button = wait.until(EC.element_to_be_clickable((By.ID, 'login-button')))
        login_button.click()

        wait.until(EC.url_contains('/dashboard'))
        self.assertIn('/dashboard', driver.current_url, 'URL does not contain /dashboard after login')

        welcome_message = wait.until(EC.visibility_of_element_located((By.ID, 'welcome-msg')))
        self.assertEqual(welcome_message.text, 'Welcome, user!', 'Welcome message text is incorrect')

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

The setUp method opens the browser and navigates to the login page before each test.

We use WebDriverWait with explicit waits to wait for the email and password fields to be visible before interacting with them. This avoids errors if the page loads slowly.

We locate elements by their id attributes, which is a reliable and fast locator strategy.

After entering credentials, we wait for the login button to be clickable and then click it.

We wait until the URL contains '/dashboard' to confirm navigation succeeded.

Finally, we check that the welcome message text matches exactly 'Welcome, user!'.

The tearDown method closes the browser after the test finishes.

This structure keeps tests clean, readable, and reliable.

Common Mistakes - 4 Pitfalls
Using time.sleep() instead of explicit waits
Using brittle XPath locators with absolute paths
Not clearing input fields before typing
Not verifying the correct page after login
Bonus Challenge

Now add data-driven testing with 3 different sets of valid user credentials

Show Hint

Practice

(1/5)
1. What is the main purpose of use case testing in software testing?
easy
A. To find syntax errors in the source code
B. To verify software behavior by simulating real user actions step-by-step
C. To test only the software's performance under load
D. To check the software's internal code structure

Solution

  1. Step 1: Understand use case testing focus

    Use case testing simulates how users interact with software in real scenarios.
  2. Step 2: Compare options to definition

    Only To verify software behavior by simulating real user actions step-by-step describes testing by following user actions step-by-step.
  3. Final Answer:

    To verify software behavior by simulating real user actions step-by-step -> Option B
  4. Quick Check:

    Use case testing = user action simulation [OK]
Hint: Think: Does it test user steps or internal code? [OK]
Common Mistakes:
  • Confusing use case testing with code structure testing
  • Thinking it tests performance or syntax only
  • Ignoring the step-by-step user action focus
2. Which of the following is the correct way to write a use case test step?
easy
A. User logs in with valid username and password.
B. Check if login button is blue.
C. Verify database connection string.
D. Run performance test for login page.

Solution

  1. Step 1: Identify use case test step format

    Use case steps describe user actions in simple sentences.
  2. Step 2: Match options to format

    User logs in with valid username and password. describes a user action clearly; others focus on UI color, backend, or performance.
  3. Final Answer:

    User logs in with valid username and password. -> Option A
  4. Quick Check:

    Use case step = user action sentence [OK]
Hint: Look for user action description, not technical checks [OK]
Common Mistakes:
  • Choosing UI or backend checks as use case steps
  • Confusing performance tests with use case steps
  • Writing vague or non-action statements
3. Given this use case test step: User enters invalid password and clicks login, what is the expected result?
medium
A. Application crashes.
B. User is logged in successfully.
C. Error message 'Invalid password' is shown.
D. Password field clears automatically.

Solution

  1. Step 1: Analyze the test step

    The user enters an invalid password and tries to log in.
  2. Step 2: Determine expected behavior

    The system should reject invalid passwords and show an error message.
  3. Final Answer:

    Error message 'Invalid password' is shown. -> Option C
  4. Quick Check:

    Invalid input = error message shown [OK]
Hint: Invalid input usually triggers error messages [OK]
Common Mistakes:
  • Assuming invalid input logs in user
  • Expecting app crash on invalid input
  • Thinking fields clear automatically without prompt
4. A use case test step says: User clicks 'Submit' without filling required fields. The test fails because the form submits anyway. What is the likely error?
medium
A. The validation step for required fields is missing or incorrect.
B. The submit button is disabled.
C. The user entered all fields correctly.
D. The form resets after submission.

Solution

  1. Step 1: Understand the failure

    The form submits even when required fields are empty, which is wrong.
  2. Step 2: Identify cause

    Missing or faulty validation allows submission without required data.
  3. Final Answer:

    The validation step for required fields is missing or incorrect. -> Option A
  4. Quick Check:

    Missing validation = form submits wrongly [OK]
Hint: Check if validation steps exist for required fields [OK]
Common Mistakes:
  • Assuming submit button disables automatically
  • Ignoring missing validation logic
  • Confusing form reset with submission failure
5. You have a use case testing scenario for an online store checkout:
1. User adds item to cart
2. User proceeds to checkout
3. User enters invalid credit card number
4. User clicks 'Pay'

Which expected result best fits this use case test?
hard
A. Payment is processed successfully.
B. Cart is emptied automatically.
C. User is redirected to homepage without message.
D. Error message 'Invalid credit card number' is displayed and payment is blocked.

Solution

  1. Step 1: Review the scenario steps

    User tries to pay with an invalid credit card number.
  2. Step 2: Determine correct system response

    The system should block payment and show an error about the invalid card.
  3. Final Answer:

    Error message 'Invalid credit card number' is displayed and payment is blocked. -> Option D
  4. Quick Check:

    Invalid payment info = error shown, payment blocked [OK]
Hint: Invalid payment info must trigger error and block payment [OK]
Common Mistakes:
  • Assuming payment succeeds with invalid data
  • Expecting silent redirects without messages
  • Thinking cart empties on failed payment
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