Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Why testing prevents costly failures in Testing Fundamentals - Automation Benefits in Action

Choose your learning style10 modes available
Verify that a function correctly calculates the total price including tax
Preconditions (3)
Step 1: Call calculate_total_price with price=100.0 and tax_rate=0.1
Step 2: Call calculate_total_price with price=50.0 and tax_rate=0.2
Step 3: Call calculate_total_price with price=0 and tax_rate=0.15
✅ Expected Result: The function returns 110.0, 60.0, and 0.0 respectively for the three calls
Automation Requirements - pytest
Assertions Needed:
Assert that calculate_total_price(100.0, 0.1) == 110.0
Assert that calculate_total_price(50.0, 0.2) == 60.0
Assert that calculate_total_price(0, 0.15) == 0.0
Best Practices:
Use clear and descriptive test function names
Use assert statements for validation
Keep tests independent and simple
Test edge cases such as zero price
Automated Solution
Testing Fundamentals
import pytest

def calculate_total_price(price: float, tax_rate: float) -> float:
    return price + (price * tax_rate)


def test_calculate_total_price():
    assert calculate_total_price(100.0, 0.1) == 110.0
    assert calculate_total_price(50.0, 0.2) == 60.0
    assert calculate_total_price(0, 0.15) == 0.0

if __name__ == "__main__":
    pytest.main()

The calculate_total_price function is defined to add tax to the price.

The test function test_calculate_total_price calls this function with three sets of inputs and uses assert statements to check if the output matches the expected values.

This simple test prevents costly failures by ensuring the calculation logic is correct before using it in real scenarios.

Using pytest allows easy running and reporting of test results.

Common Mistakes - 3 Pitfalls
Not using assert statements to verify output
Testing only one input case
Hardcoding expected results incorrectly
Bonus Challenge

Now add data-driven testing with 3 different sets of price and tax_rate inputs

Show Hint

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