11 - Testing Strategies, Debugging, Bug Reporting, and the _5 Whys_

Testing Strategies and Debugging Overview

Testing Strategies
  • Psychology of a Good Tester: Adopt an adversarial mindset; distinguish between testing (identifying errors) and debugging (fixing errors).

  • How to Test:

    • Understand expected behaviors from specifications.

    • Write tests to validate functionality.

    • Check results with expected outcomes in mind.

  • Critical Considerations: Independent testing is crucial due to developers' bias.

Testing Types
  1. Unit Testing: Targets individual components.

  2. Integration Testing: Analyzes system functionality.

  3. Validation Testing: Verifies customer requirements.

  4. System Testing: Tests the entire system.

  • Integration Testing Approaches:

    • Top-Down: Tests from the top level with stubs for incomplete parts.

    • Bottom-Up: Tests from the lowest level with integrated modules.

Validation Testing
  • Alpha Testing: Conducted internally.

  • Beta Testing: Tested by users in real-world scenarios.

System Testing Approaches
  • Black Box Testing: Focus on input/output; ignores internal workings.

  • White Box Testing: Detailed examination of internal operations.

Additional Testing Types
  • Recovery, Security, Performance, and Regression Testing.

Debugging Basics
  • Arises from test failures; involves error identification and correction.

  • Challenges include replicating real-time scenarios and human error.

  • Debugging Strategies: Brute Force, Backtracking, and Cause Elimination.

  • Debugging Tools: Common features include breakpoints and variable tracking.

Post-Debugging Actions
  • Assess potential new bugs and document preventive measures.

Bug Reporting
  • Effective communication through tools like Jira or GitHub.

The "5 Whys"
  • A method for uncovering root causes by repeatedly asking "Why?" until reaching the core issue.