Software Testing Summary
1. Software Development Life Cycle (SDLC)
SDLC is a structured process for developing software, ensuring high quality and efficiency. It
consists of several phases:
1. Planning & Requirement Analysis: Understanding user needs, defining requirements.
2. Defining Requirements: Creating Software Requirement Specification (SRS).
3. Designing Architecture: Choosing the best software design based on SRS.
4. Development: Writing code using programming languages like Java, Python.
5. Testing: Identifying and fixing bugs to ensure functionality.
6. Deployment & Maintenance: Releasing software and providing updates.
Popular SDLC Models:
- Waterfall: Sequential, rigid process.
- Agile: Iterative, flexible approach.
- Spiral: Risk-focused model.
- V-Model: Integrates testing at each stage.
- Iterative: Repeated cycles of development and testing.
2. Software Testing Life Cycle (STLC)
STLC is a structured process for testing software, ensuring quality and defect-free
performance.
Phases of STLC:
1. Requirement Analysis: Understanding testing needs from project requirements.
2. Test Planning: Defining strategy, scope, and required resources.
3. Test Case Development: Writing test cases based on requirements.
4. Test Environment Setup: Preparing the testing infrastructure.
5. Test Execution: Running test cases and logging defects.
6. Test Closure: Documenting results and finalizing testing process.
3. Software Testing Models
Common software testing models:
1. Waterfall Model: Testing follows development in a linear manner.
2. V-Model: Testing is planned alongside development phases.
3. Agile Model: Testing happens iteratively with development.
4. Iterative Model: Software is built and tested in cycles.
5. Spiral Model: Focuses on risk management and incremental testing.
4. Key Software Testing Principles
1. Testing shows the presence of defects, not their absence.
2. Exhaustive testing is impossible; test cases must be optimized.
3. Early testing reduces the cost of defect correction.
4. Defect clustering means most bugs exist in a small part of the system.
5. The pesticide paradox suggests repeated testing becomes ineffective.
6. Testing is context-dependent; different applications need different testing strategies.
7. A bug-free system may still be unusable if it does not meet user needs.
5. Types of Testing
1. Unit Testing: Testing individual software components.
2. Integration Testing: Ensuring modules work together correctly.
3. System Testing: Validating the complete system.
4. User Acceptance Testing (UAT): Checking if the software meets user expectations.
5. Performance Testing: Measuring speed and efficiency under load.
6. Security Testing: Identifying vulnerabilities and risks.