TESTING

Software Engineering tutorial · PySpark.in

1. INTRODUCTION TO SOFTWARE TESTING

Definition

Software Testing is the process of evaluating a software system to identify defects, ensure quality, and verify that the software meets user requirements.

Objectives

Why Testing is Important?


2. SOFTWARE QUALITY

Quality

Degree to which software meets customer expectations.

Quality Assurance (QA)

Quality Control (QC)

Difference: QA vs QC

QAQC
Prevents defectsDetects defects
Process orientedProduct oriented
ProactiveReactive

3. VERIFICATION & VALIDATION (V&V)

Verification

“Are we building the product right?”
Ensures the software meets design and requirements.

Validation

“Are we building the right product?”
Ensures the final product matches user needs.

Difference:

VerificationValidation
Static processDynamic process
Reviews, walkthroughsTesting, execution
No code executionCode execution required

4. SOFTWARE TESTING LEVELS

1. Unit Testing

2. Integration Testing

Tests combined modules.
Types:

3. System Testing

4. Acceptance Testing

Performed by client/user
Types:


5. SOFTWARE TESTING TECHNIQUES

A. Black-Box Testing

Focus on inputs & outputs, NOT internal code.

Techniques:

  1. Equivalence Partitioning

    • Divide input into valid/invalid classes

  2. Boundary Value Analysis

    • Test at boundaries (min, max, min+1, max-1)

  3. Decision Table

    • For complex business rules

  4. State Transition

    • Based on states & events (ATM, login)

  5. Use Case Testing

    • End-to-end scenarios


B. White-Box Testing

Focus on internal code.

Techniques:

  1. Statement Coverage

  2. Branch/Decision Coverage

  3. Condition Coverage

  4. Path Coverage

  5. Loop Testing


C. Gray-Box Testing

Combination of both. Tester knows logic partially.


6. TESTING TYPES

Functional Testing

Non-Functional Testing


7. STATIC TESTING

No code execution.

Includes:


8. DYNAMIC TESTING

Requires execution of software.


9. SMOKE, SANITY, REGRESSION

Smoke Testing

Sanity Testing

Regression Testing


10. SOFTWARE TESTING LIFE CYCLE (STLC)

  1. Requirement Analysis

  2. Test Planning

  3. Test Case Design

  4. Test Environment Setup

  5. Test Execution

  6. Defect Reporting

  7. Test Closure


11. DEFECT LIFE CYCLE

Defect States:

More Software Engineering tutorials

All tutorials · Try the free PySpark compiler · Practice challenges