Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

What software testing is in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify that the software correctly identifies a simple bug in a calculator function
Preconditions (2)
Step 1: Open the calculator application
Step 2: Enter the number 2
Step 3: Press the addition (+) button
Step 4: Enter the number 2
Step 5: Press the equals (=) button
Step 6: Observe the result displayed
✅ Expected Result: The calculator displays the result as 4
Automation Requirements - unittest with Selenium WebDriver
Assertions Needed:
Verify the displayed result equals '4'
Best Practices:
Use explicit waits to wait for the result to appear
Use clear and maintainable locators (e.g., By.ID or By.CSS_SELECTOR)
Structure code with setup and teardown methods
Keep assertions simple and focused
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 TestCalculatorAddition(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('http://localhost:8000/calculator')  # Example URL

    def test_addition(self):
        driver = self.driver
        wait = WebDriverWait(driver, 10)

        # Click number 2 button
        driver.find_element(By.ID, 'btn-2').click()
        # Click plus button
        driver.find_element(By.ID, 'btn-plus').click()
        # Click number 2 button again
        driver.find_element(By.ID, 'btn-2').click()
        # Click equals button
        driver.find_element(By.ID, 'btn-equals').click()

        # Wait for result to appear
        result_element = wait.until(EC.visibility_of_element_located((By.ID, 'result')))

        # Assert the result is '4'
        self.assertEqual(result_element.text, '4')

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

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

This test script uses Python's unittest framework with Selenium WebDriver to automate the calculator addition test.

setUp: Opens the browser and navigates to the calculator page.

test_addition: Clicks buttons for '2', '+', '2', and '=' in order. Then waits explicitly for the result element to appear. Finally, it asserts that the displayed result text is '4'.

tearDown: Closes the browser after the test finishes.

This structure keeps the test clear, waits properly for UI updates, and uses maintainable locators by ID.

Common Mistakes - 3 Pitfalls
Using time.sleep() instead of explicit waits
Using brittle XPath locators like absolute paths
Not closing the browser after tests
Bonus Challenge

Now add data-driven testing with 3 different addition inputs and expected results

Show Hint

Practice

(1/5)
1. What is the main purpose of software testing?
easy
A. To find problems in software before users do
B. To write new software features
C. To design the software user interface
D. To increase the software size

Solution

  1. Step 1: Understand the goal of testing

    Testing aims to find bugs or issues in software early.
  2. Step 2: Compare options to this goal

    Only To find problems in software before users do matches this purpose; others describe unrelated tasks.
  3. Final Answer:

    To find problems in software before users do -> Option A
  4. Quick Check:

    Testing purpose = find problems [OK]
Hint: Testing finds bugs early to avoid user issues [OK]
Common Mistakes:
  • Confusing testing with coding new features
  • Thinking testing is about design
  • Believing testing increases software size
2. Which of the following is a correct way to describe software testing?
easy
A. Writing code to add new features
B. Manually or automatically checking software for errors
C. Designing the software architecture
D. Deploying software to users

Solution

  1. Step 1: Identify testing methods

    Testing can be manual or automated to find errors.
  2. Step 2: Match options to testing description

    Only Manually or automatically checking software for errors correctly describes testing methods; others describe different tasks.
  3. Final Answer:

    Manually or automatically checking software for errors -> Option B
  4. Quick Check:

    Testing = manual or automated checks [OK]
Hint: Testing checks software manually or with tools [OK]
Common Mistakes:
  • Mixing testing with coding or deployment
  • Ignoring automated testing
  • Confusing testing with design
3. A software tester wants to check if a login form works correctly. Which testing approach best fits this goal?
easy
A. Deploying the login form to production
B. Writing new code to add login features
C. Manual testing by entering usernames and passwords
D. Designing the login page layout

Solution

  1. Step 1: Understand the testing goal

    The tester wants to verify login functionality works as expected.
  2. Step 2: Choose the correct testing method

    Manual testing by entering credentials simulates real user actions to find issues.
  3. Final Answer:

    Manual testing by entering usernames and passwords -> Option C
  4. Quick Check:

    Testing login = manual input checks [OK]
Hint: Test login by trying real inputs manually [OK]
Common Mistakes:
  • Confusing testing with coding or design
  • Thinking deployment is testing
  • Ignoring manual testing importance
4. Consider this code snippet for a simple test check:
def test_sum():
    result = 2 + 2
    assert result == 4
    print('Test passed')

What will be the output when this test runs?
medium
A. Test passed
B. AssertionError
C. No output
D. SyntaxError

Solution

  1. Step 1: Check the assertion condition

    The sum 2 + 2 equals 4, so assert result == 4 passes.
  2. Step 2: Determine output after assertion

    Since assertion passes, 'Test passed' is printed.
  3. Final Answer:

    Test passed -> Option A
  4. Quick Check:

    2+2=4, assertion passes, print runs [OK]
Hint: If assert condition is true, print statement runs [OK]
Common Mistakes:
  • Thinking assertion fails causing error
  • Expecting no output from print
  • Confusing syntax errors with assertion
5. This test code has an error:
def test_divide():
    result = 10 / 0
    assert result == 0
    print('Test passed')

What is the error and how to fix it?
medium
A. AssertionError; fix by changing assert to result != 0
B. SyntaxError; fix by adding colon after function
C. NameError; fix by defining result before use
D. ZeroDivisionError; fix by avoiding division by zero

Solution

  1. Step 1: Identify the error in code

    Dividing by zero causes ZeroDivisionError at runtime.
  2. Step 2: Fix the error

    Avoid dividing by zero to prevent the error.
  3. Final Answer:

    ZeroDivisionError; fix by avoiding division by zero -> Option D
  4. Quick Check:

    Division by zero causes error [OK]
Hint: Division by zero causes error; never divide by zero [OK]
Common Mistakes:
  • Confusing runtime error with syntax error
  • Thinking assertion fails first
  • Ignoring division by zero problem
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