Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Acceptance testing in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify user can successfully register and login
Preconditions (2)
Step 1: Enter 'newuser@example.com' in the email field
Step 2: Enter 'Password123!' in the password field
Step 3: Click the 'Register' button
Step 4: Verify registration success message is displayed
Step 5: Navigate to the login page
Step 6: Enter 'newuser@example.com' in the email field
Step 7: Enter 'Password123!' in the password field
Step 8: Click the 'Login' button
✅ Expected Result: User is redirected to the dashboard page with a welcome message
Automation Requirements - Selenium with Python
Assertions Needed:
Verify registration success message is visible
Verify current URL is dashboard URL after login
Verify welcome message is displayed on dashboard
Best Practices:
Use explicit waits to wait for elements
Use Page Object Model to organize locators and actions
Use clear and descriptive assertion messages
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

class RegistrationPage:
    def __init__(self, driver):
        self.driver = driver
        self.email_input = (By.ID, 'email')
        self.password_input = (By.ID, 'password')
        self.register_button = (By.ID, 'register-btn')
        self.success_message = (By.ID, 'register-success')

    def register(self, email, password):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.email_input)).send_keys(email)
        self.driver.find_element(*self.password_input).send_keys(password)
        self.driver.find_element(*self.register_button).click()

    def is_registration_successful(self):
        return WebDriverWait(self.driver, 10).until(
            EC.visibility_of_element_located(self.success_message))

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.email_input = (By.ID, 'email')
        self.password_input = (By.ID, 'password')
        self.login_button = (By.ID, 'login-btn')

    def login(self, email, password):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.email_input)).send_keys(email)
        self.driver.find_element(*self.password_input).send_keys(password)
        self.driver.find_element(*self.login_button).click()

class DashboardPage:
    def __init__(self, driver):
        self.driver = driver
        self.welcome_message = (By.ID, 'welcome-msg')

    def is_welcome_message_displayed(self):
        return WebDriverWait(self.driver, 10).until(
            EC.visibility_of_element_located(self.welcome_message))


def test_user_registration_and_login():
    driver = webdriver.Chrome()
    driver.get('https://example.com/register')

    registration_page = RegistrationPage(driver)
    registration_page.register('newuser@example.com', 'Password123!')

    assert registration_page.is_registration_successful(), 'Registration success message not displayed'

    driver.get('https://example.com/login')

    login_page = LoginPage(driver)
    login_page.login('newuser@example.com', 'Password123!')

    WebDriverWait(driver, 10).until(EC.url_contains('/dashboard'))
    assert '/dashboard' in driver.current_url, 'Did not navigate to dashboard after login'

    dashboard_page = DashboardPage(driver)
    assert dashboard_page.is_welcome_message_displayed(), 'Welcome message not displayed on dashboard'

    driver.quit()

This test script automates the acceptance test case for user registration and login.

We use the Page Object Model to keep locators and actions organized for each page: RegistrationPage, LoginPage, and DashboardPage.

Explicit waits ensure the test waits for elements to appear before interacting or asserting, avoiding flaky tests.

Assertions check that the registration success message appears, the URL changes to the dashboard after login, and the welcome message is visible on the dashboard.

Finally, the browser is closed with driver.quit() to clean up.

Common Mistakes - 3 Pitfalls
Using time.sleep() instead of explicit waits
Hardcoding URLs and locators without using variables or page objects
Not verifying important outcomes like success messages or URL changes
Bonus Challenge

Now add data-driven testing with 3 different user email and password combinations for registration and login.

Show Hint

Practice

(1/5)
1. What is the main purpose of acceptance testing in software development?
easy
A. To test individual functions or methods in isolation
B. To check the internal code quality and structure
C. To verify the software meets user requirements and expectations
D. To find syntax errors in the source code

Solution

  1. Step 1: Understand acceptance testing goal

    Acceptance testing focuses on confirming the software meets what users expect and need.
  2. Step 2: Compare options to acceptance testing purpose

    Options B, C, and D relate to other testing types like unit or code testing, not acceptance testing.
  3. Final Answer:

    To verify the software meets user requirements and expectations -> Option C
  4. Quick Check:

    Acceptance testing = user requirements check [OK]
Hint: Acceptance testing checks if users get what they want [OK]
Common Mistakes:
  • Confusing acceptance testing with unit testing
  • Thinking acceptance testing checks code syntax
  • Believing acceptance testing is done after release
2. Which of the following is the correct way to describe an acceptance test scenario?
easy
A. Check if the software's internal functions return correct values
B. Run automated scripts to find syntax errors
C. Write complex code to test each module separately
D. Describe user actions and expected results in simple language

Solution

  1. Step 1: Identify acceptance test scenario style

    Acceptance tests use simple, clear descriptions of what users do and expect.
  2. Step 2: Eliminate unrelated options

    Options A, C, and D focus on code-level or automated testing, not user-focused scenarios.
  3. Final Answer:

    Describe user actions and expected results in simple language -> Option D
  4. Quick Check:

    Acceptance test scenario = user steps + expected results [OK]
Hint: Acceptance tests use simple user stories, not code details [OK]
Common Mistakes:
  • Writing technical code instead of user steps
  • Confusing acceptance tests with unit tests
  • Using jargon instead of simple language
3. Consider this acceptance test scenario for a login feature:
Given the user is on the login page
When the user enters valid credentials
Then the user should see the dashboard

What is the expected outcome when this test runs?
medium
A. The user is redirected to the dashboard page
B. The application crashes
C. The login page reloads without changes
D. The user sees an error message about invalid credentials

Solution

  1. Step 1: Analyze the acceptance test steps

    The scenario says valid credentials are entered, so login should succeed.
  2. Step 2: Determine expected result from scenario

    After successful login, the user should see the dashboard, meaning redirection to dashboard page.
  3. Final Answer:

    The user is redirected to the dashboard page -> Option A
  4. Quick Check:

    Valid login = dashboard shown [OK]
Hint: Valid login leads to dashboard, not error or crash [OK]
Common Mistakes:
  • Choosing error message for valid credentials
  • Confusing page reload with successful login
  • Assuming crash on valid input
4. A tester wrote this acceptance test scenario:
Given the user is on the homepage
When the user clicks the 'Submit' button
Then the form should be submitted

But during testing, clicking 'Submit' does nothing. What is the most likely cause?
medium
A. The form submission is successful but not visible
B. The 'Submit' button locator is incorrect or missing
C. The user is not on the homepage
D. The acceptance test scenario is invalid syntax

Solution

  1. Step 1: Understand the test failure symptom

    Clicking 'Submit' does nothing, so the button action is not triggered.
  2. Step 2: Identify common causes for no action on click

    Incorrect or missing locator means the test cannot find the button to click, causing no action.
  3. Final Answer:

    The 'Submit' button locator is incorrect or missing -> Option B
  4. Quick Check:

    Button not found = no click action [OK]
Hint: No action on click? Check button locator first [OK]
Common Mistakes:
  • Assuming form submitted but invisible
  • Ignoring locator issues
  • Blaming test syntax instead of element identification
5. You are designing acceptance tests for an online shopping cart. Which scenario best fits acceptance testing principles?
hard
A. Check that adding an item updates the cart total and displays the item
B. Test the database query that retrieves product prices
C. Verify the 'Add to Cart' button triggers the correct JavaScript function
D. Ensure the CSS styles for the cart page load correctly

Solution

  1. Step 1: Identify acceptance test focus

    Acceptance tests check if the user sees expected results after actions, like cart updates.
  2. Step 2: Evaluate each option against acceptance testing

    Check that adding an item updates the cart total and displays the item describes user-visible behavior after adding item, fitting acceptance testing. Options A, B, and D focus on internal code, database, or styling, not user outcomes.
  3. Final Answer:

    Check that adding an item updates the cart total and displays the item -> Option A
  4. Quick Check:

    User sees cart update = acceptance test [OK]
Hint: Acceptance tests focus on user-visible results, not code details [OK]
Common Mistakes:
  • Choosing technical checks over user outcomes
  • Confusing acceptance tests with unit or integration tests
  • Ignoring visible feedback to users
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