Software Testing System Testing
System testing evaluates the complete, fully integrated software application against its specified requirements. It treats the software as a whole — a finished product — rather than testing individual pieces. This is the first stage where the entire system is tested end-to-end.
Where System Testing Fits
Unit Testing → Test individual functions Integration Testing → Test connected modules System Testing → Test the COMPLETE application ← You are here Acceptance Testing → Business user confirms readiness
System testing comes after integration testing and before the software is handed over to users for acceptance testing.
What System Testing Checks
System testing covers both functional and non-functional aspects of the complete application.
SYSTEM TESTING SCOPE ───────────────────────────────────────────────────────── ✔ All features work as specified in requirements ✔ All modules work together seamlessly ✔ Data flows correctly from start to finish ✔ Error messages are clear and appropriate ✔ Performance meets acceptable thresholds ✔ Security controls are in place ✔ Software works across required environments ✔ Backup and recovery processes function correctly
End-to-End Testing: The Heartbeat of System Testing
End-to-end (E2E) tests simulate a complete user journey through the application — from the first action to the final result — just as a real user would experience it.
E2E Test: Online Shopping Purchase Step 1: User visits the home page Step 2: User searches for "laptop bag" Step 3: User selects a product and views its details Step 4: User adds the item to the cart Step 5: User proceeds to checkout Step 6: User enters shipping address Step 7: User enters payment details Step 8: User places the order Step 9: Confirmation page displays order number Step 10: Confirmation email arrives in inbox Expected: Every step completes correctly, in sequence.
System Testing vs Integration Testing
INTEGRATION TESTING SYSTEM TESTING ─────────────────── ────────────── Tests module connections Tests the whole application Partial system Complete system Finds interface bugs Finds end-to-end workflow bugs Done by developers/testers Done by dedicated testing team Internal view External (user-perspective) view
Types of Tests Performed During System Testing
Functional System Tests
Verify that all features listed in the requirements document work correctly. Each requirement gets at least one test case.
GUI Testing
Checks the graphical user interface — that buttons, menus, forms, icons, and navigation behave correctly and match the approved design.
GUI Test Checklist: ✔ Button labels are correct ✔ Form fields accept correct input types ✔ Error messages display in the right location ✔ Navigation links go to the correct pages ✔ Date picker allows only valid date ranges
Data Integrity Testing
Verifies that data entered at one point of the system appears correctly at all other points. If a user updates their phone number in their profile, the new number must appear in the admin panel, in receipts, and in any other place that displays it.
Error Handling Testing
Deliberately triggers errors to verify the system handles them gracefully — showing helpful messages, logging the error, and continuing without crashing.
Recovery Testing
Checks that the system can recover from failures like power loss, server crash, or network disconnection — and return to a consistent state without data loss.
The System Testing Environment
System testing requires an environment that closely mirrors the production environment — the same operating system, database version, server configuration, and network setup. Testing in a drastically different environment can produce results that do not reflect how the software behaves in real-world conditions.
TEST ENVIRONMENT PRODUCTION ENVIRONMENT ─────────────── ────────────────────── Should match exactly → Real servers, real data Same OS version Same OS version Same database version Same database version Similar server specs Actual server specs Anonymised test data Real user data
System Testing Entry and Exit Criteria
Entry Criteria (When to Start System Testing)
- All modules have passed integration testing.
- The test environment is set up and ready.
- All test cases are reviewed and approved.
- Test data is prepared.
Exit Criteria (When to Stop System Testing)
- All planned test cases have been executed.
- No critical or high-severity bugs remain open.
- Test coverage meets the agreed threshold.
- A test summary report has been signed off.
