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
PRO

Unlock with Pro

Unlock the full content and everything at this level.

Get Pro — $9/moAlready a member? Log in
Chapter complete!

Course Complete!

You've finished all 42 chapters of

System Design Indermediate

Browse courses
Up next End To End Testing
Continue
preview