Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Black-box vs white-box testing in Testing Fundamentals - Automation Approaches Compared

Choose your learning style10 modes available
Automate testing for a simple calculator add function using black-box and white-box approaches
Preconditions (2)
Step 1: Call add(2, 3) and verify the result is 5 (black-box test)
Step 2: Call add(-1, 1) and verify the result is 0 (black-box test)
Step 3: Review the add function code to confirm it returns a + b (white-box test)
Step 4: Write a test that covers the internal logic of add function explicitly (white-box test)
✅ Expected Result: All tests pass confirming correct addition behavior and code logic
Automation Requirements - pytest
Assertions Needed:
assert add(2, 3) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
Best Practices:
Use clear test function names indicating black-box or white-box
Keep tests independent and simple
Use assert statements for validation
Document test purpose in comments
Automated Solution
Testing Fundamentals
import pytest

# Simple calculator add function

def add(a: int, b: int) -> int:
    return a + b

# Black-box tests: test only inputs and outputs

def test_add_black_box_positive():
    # Test adding positive numbers
    assert add(2, 3) == 5

def test_add_black_box_negative_and_positive():
    # Test adding negative and positive number
    assert add(-1, 1) == 0

def test_add_black_box_zeros():
    # Test adding zeros
    assert add(0, 0) == 0

# White-box test: test internal logic explicitly

def test_add_white_box_logic():
    # Since add is a simple return of a + b, test with multiple values
    for a, b in [(10, 5), (-3, -7), (0, 4)]:
        expected = a + b
        result = add(a, b)
        assert result == expected, f"Expected {expected} but got {result}"

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

The add function is a simple addition returning a + b.

Black-box tests test_add_black_box_positive, test_add_black_box_negative_and_positive, and test_add_black_box_zeros check the function output for given inputs without looking at the code.

The white-box test test_add_white_box_logic runs multiple inputs and compares the result to the expected sum, explicitly verifying the logic inside the function.

Using pytest allows simple assert statements and easy test running.

Each test is independent and clearly named to show if it is black-box or white-box testing.

Common Mistakes - 4 Pitfalls
Not using assert statements properly
Mixing black-box and white-box tests without clear separation
Testing only positive cases and ignoring edge cases
Hardcoding expected results without calculation
Bonus Challenge

Now add data-driven testing with 3 different input pairs for the add function

Show Hint

Practice

(1/5)
1. Which testing type focuses on testing software without knowing its internal code?
easy
A. Integration testing
B. Black-box testing
C. Unit testing
D. White-box testing

Solution

  1. Step 1: Understand black-box testing concept

    Black-box testing examines software functionality without looking at the code inside.
  2. Step 2: Compare with white-box testing

    White-box testing requires knowledge of the internal code structure, unlike black-box testing.
  3. Final Answer:

    Black-box testing -> Option B
  4. Quick Check:

    Black-box = no code knowledge [OK]
Hint: Black-box ignores code, tests only inputs and outputs [OK]
Common Mistakes:
  • Confusing black-box with white-box testing
  • Thinking unit testing is always black-box
  • Assuming integration testing is black-box by default
2. Which of the following is a correct statement about white-box testing?
easy
A. It tests software without any knowledge of internal code.
B. It ignores the program's internal logic.
C. It only tests the user interface.
D. It requires access to the source code to design test cases.

Solution

  1. Step 1: Recall white-box testing definition

    White-box testing involves looking inside the code to create test cases.
  2. Step 2: Evaluate each option

    It requires access to the source code to design test cases. correctly states the need for source code access; others describe black-box or incorrect ideas.
  3. Final Answer:

    It requires access to the source code to design test cases. -> Option D
  4. Quick Check:

    White-box = code access needed [OK]
Hint: White-box needs code access; black-box does not [OK]
Common Mistakes:
  • Mixing up white-box and black-box definitions
  • Thinking white-box only tests UI
  • Believing white-box ignores internal logic
3. Consider this scenario: A tester writes test cases based on the program's code paths and conditions. What type of testing is this?
medium
A. White-box testing
B. Black-box testing
C. System testing
D. Acceptance testing

Solution

  1. Step 1: Identify testing based on code paths

    Testing that uses knowledge of code paths and conditions is white-box testing.
  2. Step 2: Eliminate other options

    Black-box ignores code; system and acceptance testing focus on overall system or user needs, not code paths.
  3. Final Answer:

    White-box testing -> Option A
  4. Quick Check:

    Code path testing = white-box [OK]
Hint: Code path knowledge means white-box testing [OK]
Common Mistakes:
  • Choosing black-box because of 'test cases' mention
  • Confusing system testing with white-box
  • Ignoring code path clues
4. A tester tries to perform white-box testing but does not have access to the source code. What is the main problem here?
medium
A. White-box testing only tests the user interface.
B. Black-box testing requires source code access.
C. White-box testing cannot be done without source code access.
D. Source code access is optional for white-box testing.

Solution

  1. Step 1: Understand white-box testing requirements

    White-box testing needs access to source code to examine internal logic.
  2. Step 2: Analyze options

    White-box testing cannot be done without source code access. correctly states the problem; others are false or contradict white-box principles.
  3. Final Answer:

    White-box testing cannot be done without source code access. -> Option C
  4. Quick Check:

    White-box needs code access [OK]
Hint: No code access means no white-box testing [OK]
Common Mistakes:
  • Thinking black-box needs code access
  • Believing white-box tests only UI
  • Assuming code access is optional
5. A software team wants to improve test coverage by combining black-box and white-box testing. Which approach best achieves this?
hard
A. Use black-box testing to check user inputs and outputs, and white-box testing to verify internal code paths.
B. Only perform black-box testing since it covers all code paths.
C. Use white-box testing exclusively because it tests the interface.
D. Skip testing and rely on user feedback after release.

Solution

  1. Step 1: Understand strengths of black-box and white-box testing

    Black-box tests functionality without code knowledge; white-box tests internal code paths.
  2. Step 2: Combine both methods effectively

    Using black-box for inputs/outputs and white-box for code paths covers more test cases and improves quality.
  3. Final Answer:

    Use black-box testing to check user inputs and outputs, and white-box testing to verify internal code paths. -> Option A
  4. Quick Check:

    Combine black-box + white-box for best coverage [OK]
Hint: Combine black-box for UI and white-box for code paths [OK]
Common Mistakes:
  • Relying on only one testing type
  • Confusing white-box with UI testing
  • Ignoring testing before release
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