Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Test case components (steps, expected, actual) in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify login functionality with valid credentials
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'
Automation Requirements - Selenium with Python
Assertions Needed:
Verify current URL contains '/dashboard' after login
Verify login button is clickable before clicking
Best Practices:
Use explicit waits to wait for elements to be clickable or visible
Use By.ID or By.NAME locators instead of XPath for better maintainability
Structure code with setup and teardown methods for browser management
Automated Solution
Testing Fundamentals
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
import unittest

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

    def test_valid_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'))
        current_url = driver.current_url
        self.assertIn('/dashboard', current_url, 'User was not redirected to dashboard')

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

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

This test script uses Selenium with Python's unittest framework to automate the manual test case.

setUp() opens the browser and navigates to the login page.

test_valid_login() waits for the email and password fields to be visible, enters the given credentials, waits for the login button to be clickable, and clicks it.

Then it waits until the URL contains '/dashboard' to confirm successful login and asserts this condition.

tearDown() closes the browser after the test.

Explicit waits ensure the test waits for elements properly, avoiding flaky failures.

Common Mistakes - 3 Pitfalls
{'mistake': 'Using time.sleep() instead of explicit waits', 'why_bad': 'It causes tests to wait unnecessarily long or fail if the element loads slower or faster than expected.', 'correct_approach': "Use Selenium's explicit waits like WebDriverWait with expected_conditions."}
Using brittle XPath locators like absolute paths
Not clearing input fields before sending keys
Bonus Challenge

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

Show Hint

Practice

(1/5)
1. Which component of a test case describes the actions a tester must perform?
easy
A. Test steps
B. Expected results
C. Actual results
D. Test summary

Solution

  1. Step 1: Understand test case components

    Test cases have steps, expected results, and actual results.
  2. Step 2: Identify which describes actions

    Test steps tell the tester what to do, the actions to perform.
  3. Final Answer:

    Test steps -> Option A
  4. Quick Check:

    Actions = Test steps [OK]
Hint: Steps = actions to perform in test case [OK]
Common Mistakes:
  • Confusing expected results with steps
  • Thinking actual results describe actions
  • Mixing test summary with steps
2. Which of the following is the correct way to write the expected result in a test case?
easy
A. User clicks the login button and waits.
B. Click the login button to open the login page.
C. Login page appears sometimes after clicking.
D. The system should display the login page after clicking the login button.

Solution

  1. Step 1: Identify expected result format

    Expected results describe what should happen clearly and precisely.
  2. Step 2: Compare options

    The system should display the login page after clicking the login button. clearly states the expected system behavior after an action.
  3. Final Answer:

    The system should display the login page after clicking the login button. -> Option D
  4. Quick Check:

    Expected result = clear system behavior [OK]
Hint: Expected result = clear, precise system behavior [OK]
Common Mistakes:
  • Writing steps instead of expected results
  • Being vague or uncertain in expected results
  • Mixing user actions with expected outcomes
3. Given this test case snippet:
Steps: 1. Enter username 'user1'
2. Enter password 'pass123'
3. Click 'Submit'
Expected: User is logged in and dashboard appears
Actual: Error message 'Invalid credentials'

What does this test result indicate?
medium
A. Test failed due to incorrect actual result
B. Expected result is wrong
C. Test steps are incomplete
D. Test passed successfully

Solution

  1. Step 1: Compare expected and actual results

    Expected is successful login; actual shows error message.
  2. Step 2: Determine test outcome

    Mismatch means test failed due to unexpected actual result.
  3. Final Answer:

    Test failed due to incorrect actual result -> Option A
  4. Quick Check:

    Expected ≠ Actual = Fail [OK]
Hint: If actual ≠ expected, test fails [OK]
Common Mistakes:
  • Assuming test passed despite different actual result
  • Confusing steps with results
  • Ignoring error messages in actual results
4. A tester wrote this test case:
Steps: 1. Open app
2. Click 'Settings'
Expected: Settings page opens
Actual: Settings page opens

But the test is marked as failed. What is the most likely error?
medium
A. Steps are missing details
B. Actual result was not recorded correctly
C. Expected result is unclear
D. Test case lacks test data

Solution

  1. Step 1: Check expected vs actual results

    Both say settings page opens, so results match.
  2. Step 2: Consider why test marked failed

    If test failed despite matching results, actual result might be recorded incorrectly or test status set wrongly.
  3. Final Answer:

    Actual result was not recorded correctly -> Option B
  4. Quick Check:

    Matching results but fail = recording error [OK]
Hint: Matching expected and actual means test should pass [OK]
Common Mistakes:
  • Assuming missing steps cause fail here
  • Confusing unclear expected with fail reason
  • Ignoring test status errors
5. You have a test case with these components:
Steps: 1. Add item to cart
2. Proceed to checkout
Expected: Total price updates correctly
Actual: Total price remains unchanged

How should you update the test case to better capture the issue?
hard
A. Remove actual result to avoid confusion
B. Change expected result to match actual price
C. Add detailed steps to verify price calculation and record exact actual price
D. Skip the test since actual differs from expected

Solution

  1. Step 1: Analyze test case problem

    Actual result shows a bug: price not updating as expected.
  2. Step 2: Improve test case details

    Adding detailed steps and exact actual price helps reproduce and fix the bug.
  3. Final Answer:

    Add detailed steps to verify price calculation and record exact actual price -> Option C
  4. Quick Check:

    More detail = better bug capture [OK]
Hint: Add details and exact actual results to clarify bugs [OK]
Common Mistakes:
  • Changing expected to hide bugs
  • Removing actual results loses evidence
  • Skipping tests hides problems
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