Bird
Raised Fist0
Testing Fundamentalstesting~10 mins

Why testing prevents costly failures in Testing Fundamentals - Test Execution Impact

Choose your learning style10 modes available
Test Overview

This test simulates checking a simple login form to ensure the system catches errors early. It verifies that the login button is clickable and that an error message appears when invalid credentials are entered. This helps prevent costly failures by catching issues before release.

Test Code - Selenium with unittest
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 TestLoginForm(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/login')

    def test_invalid_login_shows_error(self):
        driver = self.driver
        # Wait for username field
        WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'username')))
        username_input = driver.find_element(By.ID, 'username')
        password_input = driver.find_element(By.ID, 'password')
        login_button = driver.find_element(By.ID, 'login-btn')

        username_input.send_keys('wronguser')
        password_input.send_keys('wrongpass')
        login_button.click()

        # Wait for error message
        error = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, 'error-msg'))
        )
        self.assertTrue(error.is_displayed())
        self.assertEqual(error.text, 'Invalid username or password.')

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

if __name__ == '__main__':
    unittest.main()
Execution Trace - 8 Steps
StepActionSystem StateAssertionResult
1Test starts and opens Chrome browserBrowser window opens at 'https://example.com/login' showing login form with username, password fields and login button—PASS
2Waits until username input field is presentUsername input field is visible and ready for inputPresence of element with ID 'username'PASS
3Finds username, password inputs and login button elementsAll three elements found on the page—PASS
4Enters invalid username and passwordUsername field contains 'wronguser', password field contains 'wrongpass'—PASS
5Clicks the login buttonLogin form submits and page processes login attempt—PASS
6Waits for error message to appearError message element with ID 'error-msg' becomes visibleVisibility of element with ID 'error-msg'PASS
7Checks that error message is displayed and text matches expectedError message shown: 'Invalid username or password.'error.is_displayed() is True and error.text equals 'Invalid username or password.'PASS
8Test ends and browser closesBrowser window closes—PASS
Failure Scenario
Failing Condition: Error message does not appear after submitting invalid credentials
Execution Trace Quiz - 3 Questions
Test your understanding
What does the test verify after clicking the login button?
AThat the user is redirected to the homepage
BThat an error message appears for invalid login
CThat the login button becomes disabled
DThat the password field is cleared
Key Result
Testing early by verifying error messages on invalid input helps catch issues before release, preventing costly failures in production.

Practice

(1/5)
1. Why is testing important before releasing software to users?
easy
A. It finds problems early to avoid expensive fixes later
B. It makes the software run faster
C. It increases the size of the software
D. It removes the need for documentation

Solution

  1. Step 1: Understand the purpose of testing

    Testing helps find bugs and issues before users see them.
  2. Step 2: Connect early bug detection to cost savings

    Fixing problems early is cheaper than fixing them after release.
  3. Final Answer:

    It finds problems early to avoid expensive fixes later -> Option A
  4. Quick Check:

    Early bug detection = Cost saving [OK]
Hint: Testing early saves money by catching bugs fast [OK]
Common Mistakes:
  • Thinking testing speeds up software
  • Believing testing increases software size
  • Assuming testing replaces documentation
2. Which of the following is the correct way to write a test case name in a test script?
easy
A. testUserLoginSuccess
B. Test user login success
C. user login test
D. 123testLogin

Solution

  1. Step 1: Identify proper naming conventions

    Test case names should be clear, concise, and follow code naming rules (no spaces, start with letter).
  2. Step 2: Check each option

    testUserLoginSuccess uses camelCase and is descriptive; others have spaces or start with numbers.
  3. Final Answer:

    testUserLoginSuccess -> Option A
  4. Quick Check:

    Proper naming = camelCase, no spaces [OK]
Hint: Use camelCase without spaces for test names [OK]
Common Mistakes:
  • Using spaces in test names
  • Starting names with numbers
  • Using vague or incomplete names
3. Consider this code snippet for a simple test:
def test_sum():
    result = sum([1, 2, 3])
    assert result == 6
    print('Test passed')
What will be the output when this test runs?
medium
A. AssertionError
B. No output
C. 6
D. Test passed

Solution

  1. Step 1: Understand the sum function and assertion

    sum([1, 2, 3]) equals 6, so the assertion result == 6 is true.
  2. Step 2: Check what happens after assertion

    Since assertion passes, print('Test passed') runs and outputs 'Test passed'.
  3. Final Answer:

    Test passed -> Option D
  4. Quick Check:

    Correct sum and assertion = print message [OK]
Hint: If assert passes, print statement runs [OK]
Common Mistakes:
  • Thinking assertion fails and raises error
  • Expecting sum function to print result
  • Assuming no output without explicit print
4. A test script has this code:
def test_divide():
    result = 10 / 0
    assert result == 0
What is the main problem with this test?
medium
A. Assertion is incorrect because 10/0 equals 10
B. Division by zero causes an error before assertion
C. Test will always pass because result is zero
D. No problem; test runs fine

Solution

  1. Step 1: Identify the operation causing error

    Dividing 10 by zero raises a ZeroDivisionError before assertion runs.
  2. Step 2: Understand impact on test execution

    Because of the error, the test stops and does not reach the assertion, causing failure.
  3. Final Answer:

    Division by zero causes an error before assertion -> Option B
  4. Quick Check:

    ZeroDivisionError stops test early [OK]
Hint: Check for runtime errors before assertions [OK]
Common Mistakes:
  • Assuming assertion runs despite error
  • Thinking 10/0 equals 10
  • Believing test passes without error
5. A company wants to avoid costly failures by testing their software regularly. Which strategy best achieves this goal?
hard
A. Test manually only when users report problems
B. Test only once before the final release to save time
C. Run automated tests after every code change and fix failures immediately
D. Ignore minor bugs and focus on adding new features quickly

Solution

  1. Step 1: Understand the benefit of regular automated testing

    Running automated tests after each change catches bugs early and consistently.
  2. Step 2: Compare other options to best practice

    Testing only once or ignoring bugs risks costly failures; manual testing only after problems is reactive, not preventive.
  3. Final Answer:

    Run automated tests after every code change and fix failures immediately -> Option C
  4. Quick Check:

    Regular automated testing = Prevent costly failures [OK]
Hint: Test often with automation to catch bugs early [OK]
Common Mistakes:
  • Testing only once before release
  • Ignoring small bugs
  • Waiting for user reports to test
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