System Testing
Use when asked to evaluate an entire integrated system as a whole — combining functional, performance, security, usability, compatibility, and regression checks — as the whole-system layer between integration testing (see integration-testing) and acceptance testing (see acceptance-testing).
System testing evaluates and verifies an entire system's behavior and functionality as a whole, confirming that all software components work together correctly and the system satisfies its requirements — identifying defects that only surface once every component is combined and running together, not just pairwise (Integration Testing) or in isolation (Unit Testing).
Types of checks performed during system testing
- Functional testing — the system's functions per requirements and specifications: inputs, processing, outputs (see Functional Testing).
- Performance testing — behavior under normal and peak load (see Performance Testing).
- Security testing — security features and vulnerabilities (see Security Testing).
- Usability testing — interface and user experience quality (see Usability Testing).
- Compatibility testing — behavior across different hardware, software, and operating systems.
- Regression testing — confirming existing functionality still works after changes (see Regression Testing).
System testing is where these otherwise-separate testing disciplines get applied together against the complete, assembled system, rather than each being scoped to a narrower piece of it.
Where it fits in the sequence
Comes after unit and integration testing (individual pieces and their pairwise interactions already verified) and before acceptance testing (the client/user-facing readiness gate — see Acceptance Testing). System testing confirms the whole system works as an integrated product; acceptance testing then confirms that product is the right one.
Common pitfalls
- Treating system testing as redundant with integration testing — it operates at a different scope (the whole system, not module pairs) and covers dimensions (security, usability, compatibility) integration testing typically doesn't.
- Skipping compatibility testing for a system meant to run across varied environments — a system tested only in one configuration can fail in a different but equally real deployment target.
- No regression pass as part of system testing after a late-stage change — a fix applied during system testing can itself introduce a new regression that only a retest would catch.
Learn more
- Integration Testing for the component-interaction layer below system testing.
- Acceptance Testing for the client/user-facing readiness gate above it.