Use case testing in Testing Fundamentals - Build an Automation Script
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.
Now add data-driven testing with 3 different sets of valid user credentials
Practice
use case testing in software testing?Solution
Step 1: Understand use case testing focus
Use case testing simulates how users interact with software in real scenarios.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.Final Answer:
To verify software behavior by simulating real user actions step-by-step -> Option BQuick Check:
Use case testing = user action simulation [OK]
- Confusing use case testing with code structure testing
- Thinking it tests performance or syntax only
- Ignoring the step-by-step user action focus
Solution
Step 1: Identify use case test step format
Use case steps describe user actions in simple sentences.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.Final Answer:
User logs in with valid username and password. -> Option AQuick Check:
Use case step = user action sentence [OK]
- Choosing UI or backend checks as use case steps
- Confusing performance tests with use case steps
- Writing vague or non-action statements
User enters invalid password and clicks login, what is the expected result?Solution
Step 1: Analyze the test step
The user enters an invalid password and tries to log in.Step 2: Determine expected behavior
The system should reject invalid passwords and show an error message.Final Answer:
Error message 'Invalid password' is shown. -> Option CQuick Check:
Invalid input = error message shown [OK]
- Assuming invalid input logs in user
- Expecting app crash on invalid input
- Thinking fields clear automatically without prompt
User clicks 'Submit' without filling required fields. The test fails because the form submits anyway. What is the likely error?Solution
Step 1: Understand the failure
The form submits even when required fields are empty, which is wrong.Step 2: Identify cause
Missing or faulty validation allows submission without required data.Final Answer:
The validation step for required fields is missing or incorrect. -> Option AQuick Check:
Missing validation = form submits wrongly [OK]
- Assuming submit button disables automatically
- Ignoring missing validation logic
- Confusing form reset with submission failure
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?
Solution
Step 1: Review the scenario steps
User tries to pay with an invalid credit card number.Step 2: Determine correct system response
The system should block payment and show an error about the invalid card.Final Answer:
Error message 'Invalid credit card number' is displayed and payment is blocked. -> Option DQuick Check:
Invalid payment info = error shown, payment blocked [OK]
- Assuming payment succeeds with invalid data
- Expecting silent redirects without messages
- Thinking cart empties on failed payment
Ready to prove it?
Pass the test and this pattern moves unknown
