Test Levels: Unit, Integration, System, and UAT
Test levels organize testing by scope: from single units of code to the full system and user acceptance. Knowing each level helps you plan test strategy and collaborate with developers and stakeholders.
Unit testing
Scope: One unit (function, class, or component) in isolation, with dependencies mocked.
Who: Usually developers.
When: During implementation; run in CI on every commit.
Goal: Fast feedback that the unit behaves as designed; foundation for refactoring.
Integration testing
Scope: Several units or services working together—APIs, database, message queues.
Who: Developers or QA; often automated.
When: After units are ready; in CI or on a schedule.
Goal: Verify that components integrate correctly and interfaces match.
System testing (E2E)
Scope: Full system as a user would use it—UI, backend, data, integrations.
Who: QA; can be manual or automated.
When: When a build is stable; often in staging.
Goal: Validate end-to-end flows and real-world scenarios.
User Acceptance Testing (UAT)
Scope: Business scenarios and acceptance criteria; often in a production-like environment.
Who: Product owners, business users, or QA facilitating.
When: Before release or go-live.
Goal: Confirm the system meets business needs and is ready for release.
Summary
- Unit → integration → system → UAT: scope grows from code to business.
- Each level catches different kinds of defects; use all four in your test strategy.
- Align ownership and automation with your team (e.g. QA owns system and UAT support).