Foundations of Software Testing Notes
Foundations of Software Testing Notes
TESTING – Notes
Why Do We Test Software?
- Purpose: To identify and fix bugs, defects, or errors to ensure quality.
- Goals:
- Ensure correctness, performance, reliability, and security.
- Improve user satisfaction and prevent system failure.
- Types of Results:
- Pass – expected output received.
- Fail – actual output differs from expected.
Black-Box Testing
- Tests without knowledge of internal code.
- Focuses on input/output behavior.
- Techniques: Equivalence Partitioning, Boundary Value Analysis, Decision Table Testing.
White-Box Testing
- Tests with full knowledge of code structure.
- Focuses on internal logic and flow.
- Techniques: Statement Coverage, Branch Coverage, Path Coverage.
Reliability vs Safety
- Reliability: Ability to function correctly under specific conditions for a period.
- Safety: Avoidance of catastrophic failures that harm people or the environment.
- Difference: A system can be reliable but not safe (e.g., consistent wrong decisions).
Program Inspections
- Static review of code, requirements, or design.
- Detects issues without executing code.
- Roles: Moderator, Author, Reviewer, Recorder.
- Types: Walkthroughs, Inspections, Reviews.
Stages of Testing
a) Unit Testing
- Tests individual units/modules.
- Done by developers.
- Tools: JUnit, NUnit.
b) Integration Testing
- Tests interaction between modules.
- Types: Top-Down, Bottom-Up, Sandwich, Big Bang.
c) System Testing
- Tests the complete integrated system.
- Performed by testers.
- Includes: Functional, Performance, Load, Security Testing.