System testing verifies the entire integrated system meets requirements, testing it as a complete product.
System Testing = Integration Testing + Full Environment
Not just: Do services talk to each other? But: Does the entire system work in production-like environment?
Like testing an entire airplane before first passenger flight:
Component Testing: Each part tested (✅ done)
Integration Testing: Parts work together (✅ done)
System Testing: Complete airplane test
✓ Can it taxi on runway?
✓ Can it take off?
✓ Can it fly at cruising altitude?
✓ Can it land safely?
✓ Do all systems work together (navigation, fuel, hydraulics)?
✓ Can it handle turbulence?
Test the COMPLETE system as passengers will experience it!
System Under Test:
Web frontend (React)
Mobile app (iOS/Android)
API gateway
Authentication service
Account service
Transaction service
Notification service
Database cluster
Message queue
External payment gateway
System Test Scenario: "Fund Transfer"
Prerequisites:
✓ Production-like environment deployed
✓ Test data loaded (accounts, balances)
✓ All services running
✓ External systems configured (mocked or sandbox)
Test Steps:
User logs in via web app
Verify: ✓ Session created
Verify: ✓ Dashboard loads with account balance
User navigates to transfer page
Verify: ✓ Account list populated
Verify: ✓ Available balance correct
User initiates transfer ($500)
Input: Recipient account, amount, note
Verify: ✓ Validation works (sufficient funds)
Verify: ✓ Confirmation screen shown
User confirms transfer
Verify: ✓ Transaction processes
Verify: ✓ Sender balance decreases
Verify: ✓ Recipient balance increases
Verify: ✓ Transaction logged in database
System sends notifications
Verify: ✓ SMS sent to sender
Verify: ✓ Email sent to sender
Verify: ✓ Push notification to mobile app
User checks mobile app
Verify: ✓ Transaction appears in history
Verify: ✓ Balance updated
Verify: ✓ Transaction details correct
System processes batch jobs (overnight)
Verify: ✓ Daily summary generated
Verify: ✓ Audit logs created
Verify: ✓ Compliance reports generated
All components working together in complete system! ✅
Test: Complete business workflows
User registration flow
Purchase flow
Refund flow
Account closure flow
Each flow touches multiple subsystems
Test: System qualities
Performance (response times under load)
Security (penetration testing)
Usability (can users navigate easily?)
Reliability (uptime, error rates)
Scalability (handles growth?)
Test: System recovery from failures
Simulate failures:
Kill database mid-transaction
Expected: ✓ Transaction rolled back
Expected: ✓ User sees error message
Expected: ✓ System remains stable
Restart application server
Expected: ✓ In-flight requests handled gracefully
Expected: ✓ New requests succeed after restart
Network partition
Expected: ✓ System detects partition
Expected: ✓ Failover to backup
Production-like "Staging" Environment:
[Load Balancer] (Same config as prod)
↓
[App Servers] (Same scale as prod)
↓
[Databases] (Replicated setup)
↓
[Cache Layer] (Redis cluster)
↓
[Message Queue] (RabbitMQ/Kafka)
↓
[External APIs] (Sandbox/mocked)
As close to production as possible!
Key characteristics: