Performance Testing (Part 1): Load, Stress, and Soak
Performance testing checks how the system behaves under load: response time, throughput, and stability. This post introduces load, stress, and soak testing—what they are and when to use them.
Load testing
Goal: Verify behavior under expected load (e.g. 100 concurrent users, 50 requests/second).
- What to measure: Response time (e.g. p95, p99), throughput (requests/second), error rate.
- When: Before release or after major changes; baseline and regression.
- Pass criteria: Response time and error rate within SLA (e.g. p95 < 500ms, 0% errors).
Stress testing
Goal: Find the limit: how much load the system can handle before it degrades or fails.
- What to do: Increase load (users or rate) until response time spikes or errors appear.
- What to measure: Breaking point (e.g. max users before failure), recovery after load drops.
- When: To size capacity and plan scaling; to see how the system fails and recovers.
Soak (endurance) testing
Goal: Verify stability over time (e.g. hours or days) under sustained load.
- What to do: Run moderate load for a long period (e.g. 4–24 hours).
- What to measure: Response time and error rate over time; memory leaks, connection leaks.
- When: To catch degradation that only appears after long runs.
Summary
- Load = expected load; stress = find limit; soak = sustained load over time.
- Measure response time, throughput, and error rate; define pass criteria for load tests.
- Use load for baseline and regression; stress for capacity; soak for stability and leaks.