Lesson 2: Software Testing Fundamentals

1. What is Software Testing?

Software testing is the process of evaluating a software application to ensure it meets requirements and works as expected.

Key goals:

  • Find defects before release
  • Validate functionality
  • Improve quality and user satisfaction

2. SDLC vs STLC

SDLC (Software Development Life Cycle)

  • Phases: Requirements → Design → Development → Testing → Deployment → Maintenance
  • Focus: Building the software

STLC (Software Testing Life Cycle)

  • Phases: Requirement Analysis → Test Planning → Test Design → Test Execution → Defect Reporting → Test Closure
  • Focus: Testing the software

💡 Key difference: SDLC is about making the product, STLC is about validating the product.


3. Levels of Testing

  1. Unit Testing
    • Performed by developers
    • Tests smallest pieces of code (functions, classes)
  2. Integration Testing
    • Ensures modules work together correctly
    • Example: login module + database
  3. System Testing
    • Tests the entire application as a whole
  4. User Acceptance Testing (UAT)
    • Done by client/business users
    • Checks if product meets business requirements

4. Types of Testing

Functional Testing

  • Validates what the system does
  • Examples: login, payment, signup

Non-functional Testing

  • Validates how the system performs
  • Examples: performance, load, security, usability

5. Verification vs Validation

  • Verification = “Are we building the product right?”
    (reviews, static testing, documentation checks)
  • Validation = “Are we building the right product?”
    (dynamic testing, executing the application)

6. Test Artifacts

  • Test Plan → outlines scope, approach, tools, schedule
  • Test Case → steps to verify functionality
  • Traceability Matrix → links requirements ↔ test cases
  • Defect Report → logs bugs with details

7. Practical Example

Requirement: A user should be able to reset password via email link.

  • Verification: Check requirement document includes fields for email validation and token expiry.
  • Validation: Execute test cases to ensure password reset works on the actual app.

8. Quick Exercise

👉 Try this:

  1. Pick a real-life app you use daily (WhatsApp, Gmail, LinkedIn).
  2. Identify one functional and one non-functional test you could run.
    • Functional: sending a message
    • Non-functional: how fast the message is delivered

9. Summary

  • SDLC vs STLC: SDLC = build, STLC = test
  • Levels of Testing: Unit → Integration → System → UAT
  • Types: Functional vs Non-functional
  • Verification vs Validation: process vs execution
  • Testers work with test plans, cases, and defect reports

💡 Next Lesson Preview: Test Design Techniques → We’ll cover equivalence partitioning, boundary value analysis, and decision tables.