What is Soak Testing?
Soak testing (also called endurance or longevity testing) runs a system under a sustained, typical load for an extended period, hours or days, to surface problems that only appear over time, such as memory leaks, resource exhaustion, and gradual performance degradation.
Free to start · 7-day trial on paid plans
In depth.
A short load test can pass while a system is quietly broken. Soak testing exists because some failures are time-dependent: a small memory leak that is invisible in a ten-minute run will crash the service after twelve hours; a connection or file handle that is never released will eventually exhaust the pool; logs or caches that grow unbounded will fill the disk; and response times can creep upward as garbage collection or fragmentation accumulates.
The method is to apply a realistic, sustained load (not a peak, but normal expected traffic) and watch trend lines over a long window: memory, CPU, connection counts, response times, and error rates. The signal you are hunting is a slow drift, anything that is not flat over time is suspect. Soak tests are usually run in a production-like environment with good observability, because without metrics over time you cannot see the slope.
It sits in the performance-testing family alongside load testing (behavior at expected and peak load), stress testing (beyond capacity to find the breaking point), and spike testing (sudden sharp changes). Soak is the one that catches the bugs a clock reveals.
Keep the four performance test types straight with two axes: intensity and duration. Load testing applies expected and peak traffic for a short window (commonly 30 to 60 minutes) to validate throughput and response-time targets. Stress testing pushes past capacity until something breaks, to find the ceiling and observe the failure mode. Spike testing changes load abruptly, jumping to many times normal within seconds, to test elasticity and recovery. Soak testing holds normal load flat for a long window: 8 to 24 hours is typical for release gating, while telecom, medical, and infrastructure teams commonly run 48 to 72 hours before major releases.
The defect classes soak testing catches are specific and worth naming. Memory leaks show up as a steady upward heap or RSS trend that survives garbage collection. Connection-pool exhaustion appears when database or HTTP connections are opened per request and never returned, so throughput collapses hours in. Unbounded log growth and temp-file accumulation fill disks, and cache bloat sets in when caches lack TTLs or eviction, degrading hit rate and memory at once. Slower burns include file-descriptor and thread leaks, scheduled-job pileups, session-store growth, and counter- or clock-related bugs that only fire after a threshold of elapsed time.
Tooling is the easy part: k6 models a soak with a constant-vus executor or a stages profile that holds, say, 400 virtual users for 12 hours; JMeter uses a long-running thread group driven from CI in non-GUI mode; Gatling defines a constantUsersPerSec injection profile over hours. The discriminating skill is instrumentation: pair the load generator with dashboards (Grafana with Prometheus, or Datadog) and watch heap and RSS memory, GC pause frequency, connection-pool utilization, file descriptors, disk usage, p95/p99 latency, and error rate as trend lines. The pass criterion is not a number but a shape: every curve should be flat after warm-up, and any consistent slope is a finding.
Why interviewers ask about this.
Soak testing signals that you think about reliability over time, not just a passing snapshot. For SDET, performance, and platform roles, knowing it catches leaks and slow degradation that short tests miss is a strong differentiator.
Example scenario.
A service passes every load test but is soak-tested at normal traffic for 24 hours before launch. Memory climbs steadily and the service OOMs at hour 16, a leaked database connection per request. The slow leak was invisible in short runs and would have taken down production overnight.
Interview tip.
Define soak testing as sustained, normal load over a long window to find time-dependent failures (leaks, resource exhaustion, drift). Distinguish it from load, stress, and spike testing, and stress that you watch trends over time, not a single number.
Frequently asked questions.
What is the difference between soak testing and load testing?
Load testing checks behavior at expected and peak load over a short window. Soak testing applies sustained normal load over a long period (hours to days) to surface time-dependent issues like memory leaks and gradual degradation.
How long should a soak test run?
Long enough for slow problems to appear, commonly several hours to a few days, depending on the system and release risk. The goal is to watch resource and response-time trends drift, so the window must be long enough to see the slope.
What is the difference between soak testing and stress testing?
Stress testing pushes load beyond capacity for a short time to find the breaking point and observe the failure mode. Soak testing stays at normal, realistic load but runs for hours or days to find time-dependent failures such as memory leaks and connection-pool exhaustion. Stress answers "how much can it take"; soak answers "how long can it last."
What issues does soak testing uncover?
Memory leaks (heap or RSS climbing steadily across garbage collections), connection- and thread-pool exhaustion from resources opened but never released, unbounded log or temp-file growth that fills disks, cache bloat when eviction or TTLs are missing, file-descriptor leaks, and gradual latency drift from fragmentation or scheduled-job pileups. None of these are visible in a 30-minute load test.
Which tools are used for soak testing?
The same tools as load testing, configured for duration: k6 with a constant-vus executor held for many hours, JMeter thread groups run from CI in non-GUI mode, and Gatling with a constantUsersPerSec injection profile. The critical companion is monitoring, such as Grafana with Prometheus, because the result is read from trend lines of memory, connections, p95/p99 latency, and error rate over time.
Related Terms
Explore related glossary terms to deepen your understanding.
Related Resources
Dive deeper with these related interview prep pages.
Free QA career tools, no account needed
Instant and private, everything runs in your browser. Try them before you sign up.
QA Resume Checker
Instant 0-100 score on automation keywords, impact, and ATS formatting.
QA Cover Letter Generator
A tailored 3-paragraph QA cover letter from your resume and a job post.
QA Application Tracker
Drag-and-drop kanban to track every QA application from Applied to Offer.
QA Take-Home Test Generator
A realistic take-home assignment with a scenario, tasks, and a rubric.
QA LinkedIn Headline Generator
A recruiter-searchable headline, About section, and skills list.
QA STAR Story Builder
Structure a QA behavioral answer with the STAR method and instant checks.
QA Bug Report Generator
Build a clean, reproducible bug report for Markdown, Jira, or plain text.
Boundary Value Analysis Generator
Generate boundary value and equivalence partitioning test cases from a range.
QA Metrics Calculator
Calculate DRE, defect leakage, defect density, and pass rate with interpretation.
QA Test Plan Generator
Build a structured test plan (scope, approach, criteria, risks) in Markdown.
QA Salary Calculator
Estimate QA, SDET, and automation tester pay by level, market, and skills.
QA Offer Evaluator
See total comp, a counter range, and a ready-to-send negotiation message.
Ready to Ace Your QA Interview?
Practice explaining soak testing and other key concepts with our AI interviewer.
Join 1,200+ QA engineers already practicing with AssertHired.
Start your free QA interviewCurious how it works first? See the QA mock interview