Courses 0%
26
Software Testing Fundamentals · Chapter 26 of 42

System Testing

Akhil
Akhil Sharma
10 min

🖥️ System Testing:

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?

Real-World Analogy:

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 Test Example: Banking Application

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:

  1. User logs in via web app

    Verify: ✓ Session created

    Verify: ✓ Dashboard loads with account balance

  2. User navigates to transfer page

    Verify: ✓ Account list populated

    Verify: ✓ Available balance correct

  3. User initiates transfer ($500)

    Input: Recipient account, amount, note

    Verify: ✓ Validation works (sufficient funds)

    Verify: ✓ Confirmation screen shown

  4. User confirms transfer

    Verify: ✓ Transaction processes

    Verify: ✓ Sender balance decreases

    Verify: ✓ Recipient balance increases

    Verify: ✓ Transaction logged in database

  5. System sends notifications

    Verify: ✓ SMS sent to sender

    Verify: ✓ Email sent to sender

    Verify: ✓ Push notification to mobile app

  6. User checks mobile app

    Verify: ✓ Transaction appears in history

    Verify: ✓ Balance updated

    Verify: ✓ Transaction details correct

  7. System processes batch jobs (overnight)

    Verify: ✓ Daily summary generated

    Verify: ✓ Audit logs created

    Verify: ✓ Compliance reports generated

All components working together in complete system! ✅

Types of System Testing:

1. Functional System Testing

Test: Complete business workflows

  • User registration flow

  • Purchase flow

  • Refund flow

  • Account closure flow

Each flow touches multiple subsystems

2. Non-Functional System Testing

Test: System qualities

  • Performance (response times under load)

  • Security (penetration testing)

  • Usability (can users navigate easily?)

  • Reliability (uptime, error rates)

  • Scalability (handles growth?)

3. Recovery Testing

Test: System recovery from failures

Simulate failures:

  1. Kill database mid-transaction

    Expected: ✓ Transaction rolled back

    Expected: ✓ User sees error message

    Expected: ✓ System remains stable

  2. Restart application server

    Expected: ✓ In-flight requests handled gracefully

    Expected: ✓ New requests succeed after restart

  3. Network partition

    Expected: ✓ System detects partition

    Expected: ✓ Failover to backup

System Testing Environment:

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:

  • 🎭 End-to-end scope: Entire system, all components
  • 🌍 Production-like environment: Realistic infrastructure
  • 📋 Requirements verification: Does it meet all specs?
  • 🔄 Multiple user workflows: Real usage scenarios

Key Takeaways

  1. System testing validates the entire integrated system end-to-end — testing the full stack as a user would experience it
  2. System tests run in a production-like environment — same infrastructure, configuration, and data characteristics
  3. These tests are slow and expensive — run them less frequently than unit or integration tests (nightly, not on every commit)
  4. System tests catch environment-specific issues — configuration errors, network policies, and resource limits that unit tests miss
Chapter complete!

Course Complete!

You've finished all 42 chapters of

System Design Indermediate

Browse courses
Up next End To End Testing
Continue