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
Unit Testing: Targets individual components.
Integration Testing: Analyzes system functionality.
Validation Testing: Verifies customer requirements.
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.