๐งช Intro to Software Testing
SDLC, STLC, types of testing, black/white/grey box, and 7 ISTQB principles.
What is Software Testing?
Software testing is the process of evaluating and verifying that a software application or system fulfills expected requirements and is free of defects. Testing ensures quality, reliability, security, and optimal performance before product release.
Note: Fixing a bug in production costs up to 100x more than finding it during requirement analysis!
SDLC vs STLC Comparison
Software Development Life Cycle (SDLC) defines phases for building software, whereas Software Testing Life Cycle (STLC) defines phases dedicated specifically to quality assurance.
| Phase | SDLC Activity | STLC Testing Activity |
|---|---|---|
| Requirements | Gather business specs | Requirement Analysis & Review |
| Design | System architecture & UI mockup | Test Strategy & Test Planning |
| Development | Write code & compile | Test Case Design & Test Data setup |
| Testing | Execute tests & log bugs | Test Execution & Bug Reporting |
| Deployment | Release build to Production | Smoke Testing & Test Closure Report |
7 ISTQB Principles of Software Testing
Standard principles governing software quality assurance.
| # | Principle | Key Takeaway |
|---|---|---|
| 1 | Testing shows presence of defects | Testing proves defects exist, not that software is 100% bug-free. |
| 2 | Exhaustive testing is impossible | Testing all input combinations is non-feasible; prioritize via risk analysis. |
| 3 | Early testing saves time/money | Start testing activities as early as possible in SDLC. |
| 4 | Defect clustering (Pareto 80/20) | 80% of software defects are usually found in 20% of modules. |
| 5 | Pesticide paradox | Repeating same tests over and over will cease to discover new bugs. |
| 6 | Testing is context dependent | E-commerce apps require different testing strategies than medical devices. |
| 7 | Absence-of-errors fallacy | Fixing bugs doesn't help if the system is unusable or built wrong. |
Black Box, White Box, and Grey Box Testing
Classification of testing techniques based on visibility into internal source code logic.
| Technique | Code Access | Target Tester | Example |
|---|---|---|---|
| Black Box | No Access to Code | QA Engineer / User | UI Validation & Functional Testing |
| White Box | Full Source Code Access | Developer / SDK Engineer | Unit Testing & Code Coverage |
| Grey Box | Partial Knowledge (DB/APIs) | Automation Tester | API & Database Integration Testing |