Software Testing - Functional Testing

Software testing types can be grouped into broad categories based on their goals, methods, and the stage of testing. Here’s a clear breakdown:


1. Functional Testing

Checks whether the software meets the specified requirements and works as intended.
Examples:

  • Unit Testing – Testing individual modules/components.

  • Integration Testing – Ensuring modules work together.

  • System Testing – Testing the complete system as a whole.

  • Acceptance Testing – Validating the system against business needs (e.g., UAT).

  • Regression Testing – Making sure new changes don’t break existing features.

  • Smoke Testing – Quick check to see if the basic build is stable.

  • Sanity Testing – Narrow testing after fixes to verify correctness.


2. Non-Functional Testing

Evaluates how the system performs, rather than what it does.
Examples:

  • Performance Testing (load, stress, endurance, spike)

  • Security Testing

  • Usability Testing

  • Compatibility Testing

  • Scalability Testing

  • Reliability Testing

  • Localization & Internationalization Testing (language, culture, date formats)


3. Maintenance Testing

Happens after deployment to ensure ongoing quality.
Examples:

  • Regression Testing after updates

  • Confirmation Testing to verify bug fixes

  • Patch Testing for small updates


4. Specialized Testing

Targets specific areas or risks.
Examples:

  • Exploratory Testing – Testers explore the application without predefined cases.

  • Ad-hoc Testing – Unstructured, quick checks.

  • Alpha & Beta Testing – Pre-release testing with internal or external users.

  • A/B Testing – Comparing two versions for user preference.

  • Recovery Testing – Checking how the system recovers from crashes or failures.

  • Installation Testing – Ensuring setup and updates work correctly.

  • Compliance Testing – Checking against legal or regulatory standards.