This document explains the four main levels of software testing—unit integration, system, and acceptance—and describes how each fits into the traditional release cycle and environments.
A comprehensive overview of the four primary levels of software testing: unit, integration, system, and user acceptance testing (UAT). It explains the distinct scope and objectives of each level, highlighting how unit tests validate individual components, integration tests ensure correct interactions between modules, system tests verify the complete system against requirements, and UAT confirms business needs are met before release.
Software testing is performed at multiple levels, each with a distinct scope and purpose. Understanding these levels helps ensure that software is robust, reliable, and meets requirements throughout its lifecycle.
There are four testing levels as shown below:
flowchart TD
U[Unit Testing]
I[Integration Testing]
S[System Testing]
A[Acceptance Testing]
U --> I
I --> S
S --> A
Unit testing focuses on individual units or components of a software system. The goal is to validate that each unit performs as designed. Developers write tests for both expected (happy path) and unexpected (sad path) scenarios, including error handling and exception cases. Unit tests require detailed knowledge of the module’s internals and are typically run in continuous integration pipelines.
Integration testing combines individual units and tests them as a group. The purpose is to expose flaws in the interaction between integrated units, such as incorrect API usage or communication issues. This level is less concerned with internal details and more with how modules work together. Behavior-driven development is often applied at this stage.
System testing evaluates the complete, integrated system to ensure it meets specified requirements. This is performed in a staging or pre-production environment that closely resembles production. The focus is on verifying that the entire system works as intended.
User acceptance testing assesses whether the system meets business requirements and is acceptable for delivery. End users typically perform these tests in an environment similar to production, confirming that the system is ready for release.
Different testing levels are performed in different environments throughout the release cycle:
| Environment | Typical Testing Performed |
|---|---|
| Development | Unit testing, code commits |
| Build | Further unit testing, artifact creation |
| Test | Integration, system, acceptance testing |
| Staging/Pre-Prod | System, acceptance testing |
| Production | Final acceptance, monitoring |
Artifacts such as JAR files, Python wheels, and Docker images are built and stored in repositories, then deployed and tested in progressively more production-like environments.

Testing Levels
The software testing process includes four main levels: unit, integration, system, and acceptance. Each level plays a critical role in ensuring software quality and reliability throughout the release cycle, from development to production.
(2) Unit testing focuses on individual components and their correctness.
(2) Integration testing checks how modules work together.
(2) UAT is typically performed in a staging or pre-production environment.
| Level | Primary Focus |
|---|---|
| A. Unit Testing | 2. Individual components |
| B. Integration Testing | 3. Interactions between modules |
| C. System Testing | 1. Complete integrated system |
| D. Acceptance Testing | 4. Business requirements and delivery |
A-2, B-3, C-1, D-4.
(3) UAT is not typically performed in development.
(1) System testing verifies the whole system’s compliance with requirements.
The level of testing performed varies throughout the phases of the traditional release cycle.
True. Different testing levels are performed at different stages and environments.