# Types of Software Testing

# 🧪Types of Software Testing – Categorized by Aspects

## ✅ By Execution Approach

### 🔹 Manual Testing

* Testing performed manually without automation tools.
    
* Testers execute test cases, observe behavior, and report bugs.
    
* Best suited for exploratory, usability, and ad-hoc testing.
    

### 🔹 Automation Testing

* Testing done using tools/scripts (e.g., Selenium, TestNG).
    
* Ideal for repetitive and regression tests.
    
* Saves time in the long run but requires initial scripting effort.
    

---

## 🧱 By Visibility (Code Access)

### 🔹 Black Box Testing

* No access to source code.
    
* Focus is on input-output behavior of the application.
    
* Example: Validating login functionality via UI.
    

### 🔹 White Box Testing

* Full access to internal code logic.
    
* Performed mostly by developers (e.g., unit testing).
    
* Example: Validating loops and code paths.
    

### 🔹 Gray Box Testing

* Partial knowledge of the codebase.
    
* Combines black box and white box approaches.
    
* Example: Testing UI with knowledge of database schema.
    

---

## 🎯 By Objective

### 🔹 Functional Testing

* Ensures features work as per business requirements.
    
* Includes unit, integration, system, smoke, sanity, and UAT testing.
    

### 🔹 Non-Functional Testing

* Evaluates performance, usability, security, and reliability.
    
* Examples: Load Testing, Security Testing, Compatibility Testing.
    

---

## ⏱️ By Timing / Stage

### 🔹 Alpha Testing

* Done by internal teams before release.
    
* Simulates real usage in a controlled environment.
    

### 🔹 Beta Testing

* Performed by actual users in real environments.
    
* Helps uncover issues before official release.
    

### 🔹 User Acceptance Testing (UAT)

* Conducted by clients/business users.
    
* Validates the system meets business needs and is ready for production.
    

---

## 📦 By Scope

### 🔹 Static Testing

* Testing without executing code.
    
* Involves document reviews, walkthroughs, and inspections.
    

### 🔹 Dynamic Testing

* Testing with code execution.
    
* Validates actual system behavior and logic.
    

---

## 🧠 Other Types

### 🔹 Exploratory Testing

* No predefined test cases.
    
* Tester learns and tests simultaneously.
    
* Great for early-stage or unstructured testing.
    

### 🔹 Ad-hoc Testing

* Informal, unplanned testing.
    
* Relies on tester's experience and intuition.
    

### 🔹 End-to-End (E2E) Testing

* Validates complete user workflows from start to finish.
    
* Example: Login → Add to Cart → Checkout → Payment → Logout.
    

---

> ✅ This structured categorization helps in understanding the breadth of testing types used across various stages and scopes in software development.
