Software Testing - different levels of software testing

1. Unit Testing

  • Purpose: Test individual components or modules (e.g., functions, classes) in isolation.

  • Focus: Logic correctness within a single unit.

  • Who performs it: Usually developers.

  • Example: Testing a login function to ensure it returns "success" for correct credentials.

2. Integration Testing

  • Purpose: Test interactions between modules or services.

  • Focus: Data flow, API calls, and module compatibility.

  • Who performs it: Developers or testers.

  • Example: Checking if the login function correctly communicates with the database and user profile system.

3. System Testing

  • Purpose: Test the complete, integrated system against requirements.

  • Focus: End-to-end functionality, performance, security.

  • Who performs it: Dedicated testing team.

  • Example: Verifying that a user can register, log in, browse products, and checkout without issues.

4. Acceptance Testing

  • Purpose: Verify if the software meets business needs and is ready for delivery.

  • Focus: User expectations and real-world use cases.

  • Who performs it: End-users, clients, or QA team.

  • Example: A client tests the system to confirm it works as expected before signing off for deployment.