Types of Software Testing
Software testing can be categorized in multiple ways based on the testing approach, level, and purpose. This document provides a comprehensive guide to different types of testing used in QA.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TESTING LEVELS PYRAMID β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β /\ β
β / \ β
β / \ β
β / E2E \ <-- End-to-End Tests β
β /________\ (Few, Slow, Costly) β
β / \ β
β / Integration\ <-- Integration Tests β
β /______________\ (Medium) β
β / \ β
β / Unit Tests \ <-- Unit Tests β
β /____________________\ (Many, Fast, Cheap) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Definition: Testing individual components or functions in isolation.
Aspect
Details
Scope
Single function, method, or class
Who
Developers
When
During development
Tools
JUnit, NUnit, pytest, Jest
// Function to test
function add ( a , b ) {
return a + b ;
}
// Unit test
test ( 'adds 1 + 2 to equal 3' , ( ) => {
expect ( add ( 1 , 2 ) ) . toBe ( 3 ) ;
} ) ;
Definition: Testing the interaction between integrated units/modules.
Aspect
Details
Scope
Multiple modules together
Who
Developers/QA
When
After unit testing
Tools
Postman, REST Assured, TestNG
Big Bang - All modules integrated at once
Top-Down - Testing from top modules to bottom
Bottom-Up - Testing from bottom modules to top
Hybrid/Sandwich - Combination of top-down and bottom-up
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INTEGRATION TESTING APPROACHES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Top-Down Bottom-Up Hybrid β
β βββββ ββββββββββ βββββ β
β β A β β D ββ E β β A β β
β βββ¬ββ βββ¬βββββ¬ββ βββ¬ββ β
β β β β β β
β βββββ΄ββββ ββββ¬ββ βββββ΄ββββ β
β βββ΄ββ βββ΄ββ ββββ΄βββ βββ΄ββ βββ΄ββ β
β β B β β C β β C β β B β β C β β
β βββββ βββββ ββββ¬βββ βββββ βββββ β
β | | β ^ ^ β
β Stubs Stubs ββββ΄βββ βββ΄ββ βββ΄ββ β
β β B β β D β β E β β
β ββββ¬βββ βββββ βββββ β
β β β
β ββββ΄βββ β
β β A β β
β βββββββ β
β ^ β
β Drivers β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Definition: Testing the complete, integrated system as a whole.
Aspect
Details
Scope
Entire application
Who
QA Team
When
After integration testing
Tools
Selenium, Cypress, Playwright
Functional Testing
Performance Testing
Security Testing
Usability Testing
Compatibility Testing
Definition: Testing to verify the system meets business requirements.
Type
Description
Performed By
UAT
User Acceptance Testing
End Users
BAT
Business Acceptance Testing
Business Analysts
OAT
Operational Acceptance Testing
Operations Team
Alpha
Testing in controlled environment
Internal Team
Beta
Testing in real environment
External Users
Functional vs Non-Functional Testing
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TESTING CATEGORIES β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ€
β FUNCTIONAL TESTING β NON-FUNCTIONAL TESTING β
ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ€
β - Unit Testing β - Performance Testing β
β - Integration Testing β - Load Testing β
β - System Testing β - Stress Testing β
β - Acceptance Testing β - Security Testing β
β - Smoke Testing β - Usability Testing β
β - Sanity Testing β - Compatibility Testing β
β - Regression Testing β - Reliability Testing β
β - Exploratory Testing β - Scalability Testing β
ββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββ
Purpose: Verify basic functionality works after a new build.
Aspect
Details
Also Called
Build Verification Testing (BVT)
Scope
Critical functionalities only
Depth
Shallow - broad coverage
When
After every new build
Purpose: Verify specific functionality after minor changes.
Aspect
Details
Scope
Specific modules affected by changes
Depth
Deep - narrow coverage
When
After bug fixes or minor changes
Purpose: Ensure existing functionality is not broken by new changes.
Aspect
Details
Scope
Previously working features
When
After any code change
Best Practice
Automate regression tests
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β REGRESSION TESTING SCENARIOS β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β When to Perform: β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β - New feature added β β
β β - Bug fix deployed β β
β β - Configuration changes β β
β β - Patch updates β β
β β - Environment changes β β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Purpose: Simultaneous learning, test design, and execution.
Aspect
Details
Approach
Unscripted, investigative
Best For
Finding unexpected issues
Skill Required
Experience and domain knowledge
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PERFORMANCE TESTING TYPES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β LOAD β β STRESS β β SPIKE β β
β β TESTING β β TESTING β β TESTING β β
β ββββββββββββββββ€ ββββββββββββββββ€ ββββββββββββββββ€ β
β β Normal load β β Beyond normalβ β Sudden load β β
β β conditions β β capacity β β increase β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β ENDURANCE β β VOLUME β β SCALABILITY β β
β β TESTING β β TESTING β β TESTING β β
β ββββββββββββββββ€ ββββββββββββββββ€ ββββββββββββββββ€ β
β β Extended β β Large data β β Increasing β β
β β period test β β volumes β β resources β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Type
Purpose
Example
Load
Test under expected load
1000 concurrent users
Stress
Test beyond capacity
5000 users (limit: 2000)
Spike
Test sudden load spikes
0 to 5000 users instantly
Endurance
Test over extended time
1000 users for 24 hours
Volume
Test with large data
1 million records
Scalability
Test scaling capability
Add servers under load
Purpose: Identify vulnerabilities and security risks.
Type
Description
Vulnerability Scanning
Automated scanning for known vulnerabilities
Penetration Testing
Simulated attacks to find weaknesses
Security Auditing
Code and configuration review
Ethical Hacking
Authorized attempt to breach security
OWASP Top 10 Testing Areas
Injection
Broken Authentication
Sensitive Data Exposure
XML External Entities
Broken Access Control
Security Misconfiguration
Cross-Site Scripting (XSS)
Insecure Deserialization
Using Components with Known Vulnerabilities
Insufficient Logging and Monitoring
Purpose: Evaluate user experience and interface intuitiveness.
Aspect
Focus Areas
Learnability
How easy to learn for new users
Efficiency
How quickly tasks can be completed
Memorability
How easy to remember for returning users
Errors
How many errors users make
Satisfaction
How pleasant to use
Purpose: Verify software works across different environments.
Type
Testing Focus
Browser
Chrome, Firefox, Safari, Edge
OS
Windows, macOS, Linux, iOS, Android
Device
Desktop, Tablet, Mobile
Network
Different bandwidth conditions
Database
Different database versions
Test based on requirements without knowing internal code
Techniques: Equivalence Partitioning, Boundary Value Analysis, Decision Table
Test based on internal code structure
Techniques: Statement Coverage, Branch Coverage, Path Coverage
Combination of black box and white box
Partial knowledge of internal structure
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TESTING TECHNIQUES COMPARISON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β BLACK BOX GREY BOX WHITE BOX β
β ββββββββββ ββββββββββ ββββββββββ β
β β ###### β β ..#### β β ...... β β
β β ###### β β ..#### β β ...... β β
β β ###### β β ..#### β β ...... β β
β ββββββββββ ββββββββββ ββββββββββ β
β No knowledge Partial Full β
β of internals knowledge knowledge β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Testing Type
Focus
When
Who
Unit
Individual components
Development
Developers
Integration
Module interactions
After unit tests
Dev/QA
System
Complete system
After integration
QA Team
Acceptance
Business requirements
Before release
Users/BA
Smoke
Build stability
Every build
QA Team
Sanity
Specific changes
After fixes
QA Team
Regression
Existing features
After changes
QA Team
Performance
Speed and stability
Before release
Performance Team
Security
Vulnerabilities
Before release
Security Team
Usability
User experience
During development
UX Team