tldr: System testing validates the complete, integrated application against its requirements, as a whole, from the outside. It sits above integration testing and below acceptance testing in the levels of testing. It is where you finally test the product the way a user meets it.
What system testing is
System testing exercises the fully assembled system end to end. Every component is integrated, the environment mirrors production, and the tests check behavior against the specified requirements rather than against the code's internals.
It is black-box by nature. You drive the system through its real interfaces and judge it on outputs, not implementation. The question is whether the whole product does what it was built to do.
Where it sits in the levels of testing
The classic progression runs unit, integration, system, then acceptance. Unit and integration check parts and their connections. System testing is the first level that judges the entire product as one thing.
Acceptance testing comes next and asks a different question: not "does it meet the spec" but "does it meet the user's actual need." See levels of testing for the full ladder.
Types of system tests
System testing is an umbrella for both functional and non-functional checks on the whole system:
- Functional: complete end-to-end user journeys against requirements
- Performance: response time and throughput under expected load
- Security: access control, data protection, and abuse cases
- Usability: whether real tasks can be completed without friction
- Compatibility: behavior across browsers, devices, and operating systems
- Recovery: graceful handling of failures and restarts
Entry and exit criteria
System testing should start from a known gate, not whenever someone has time. Entry criteria usually require integration testing to be complete, a stable build deployed to a production-like environment, and test data ready.
Exit criteria define done: required scenarios executed, no open critical or high-severity defects, and results documented. Clear gates keep the phase from sliding indefinitely.
Running full end-to-end system coverage on every release is exactly what Bug0 handles as a managed service, with tests built on an AI engine and every result verified. See regression testing for how that coverage stays current over time.
FAQs
What is the difference between system testing and integration testing?
Integration testing checks that components work together. System testing checks that the complete, integrated product meets its requirements as a whole.
Is system testing black-box or white-box?
Black-box. You test through the system's real interfaces against requirements, without relying on internal implementation detail.
What comes after system testing?
Acceptance testing, which validates the product against the user's actual needs rather than the written specification.
Is system testing only functional?
No. It covers non-functional dimensions too, including performance, security, usability, and compatibility on the full system.
