Stress test
A stress test deliberately pushes your system beyond its expected operating range to find the point at which performance degrades or errors start to appear. The goal is not to break the system for its own sake — it is to understand where the limit is and how the system behaves as it approaches that limit.
Before you start
Section titled “Before you start”- A load test has established baseline behaviour at expected traffic levels.
- You have authorisation to test the target, and stakeholders know a stress run may cause elevated error rates or temporary unavailability.
- Preferably run against staging — not production.
What is a stress test?
Section titled “What is a stress test?”A stress test ramps the virtual user count steadily upward, past the number used in a normal load test, until one of the following occurs:
- Latency climbs past an unacceptable threshold (e.g., p95 > 2 s).
- Error rate rises above an acceptable ceiling (e.g., > 1 %).
- The system becomes unresponsive and the run itself starts to fail.
The inflection point — where errors begin to spike — marks the breaking point of the current configuration. Everything up to that point describes the system’s safe operating range.
How to run a stress test in MaxoPerf
Section titled “How to run a stress test in MaxoPerf”Load profile
Section titled “Load profile”| Parameter | Value |
|---|---|
| Virtual users (VUs) | Ramp from baseline to 2×–5× expected peak |
| Ramp-up | Slow and steady — 1–2 VU/s or 5-min stages |
| Hold duration | 5–10 min at peak; stop when limits are hit |
| Stop mode | Duration (or stop manually when errors spike) |
| Locations | Same as your load test for comparison |
Console walk-through
Section titled “Console walk-through”-
Duplicate your load-test test file and rename it
api-stress(or similar). -
Modify the Taurus YAML to use a higher VU target and a gradual ramp:
execution:- executor: jmeterconcurrency: 500ramp-up: 10mhold-for: 5mscenario: api-stressscenarios:api-stress:requests:- url: https://api.staging.example.com/v1/productslabel: list-productsThis ramps from 0 to 500 VUs over 10 minutes — roughly 5× the baseline load-test VU count of 100 — then holds for 5 minutes.
-
In Load profile, set Virtual users to
500, Ramp-up to10m, and Duration to15m(ramp + hold). -
Set a Failure criteria threshold to capture the breaking point automatically — for example, error rate > 5 % causes the run to fail and record the moment.
-
Click Run and watch the Overview tab live. The latency chart will show the inflection clearly.
How to read the result
Section titled “How to read the result”Open the Overview tab after the run:
- Latency chart — look for the inflection point where p95 climbs rapidly. The VU count at that point is your effective breaking point.
- Error rate panel — a step-change from near-zero to a rising error rate pinpoints where the system saturates.
- Throughput — often plateaus or drops before the error rate climbs, indicating queuing in the application or database.
Record the VU count at the inflection point and compare it against your expected peak load. If the breaking point is below 2× expected peak, your system needs more capacity margin.
Do / don’t
Section titled “Do / don’t”| Do | Don’t |
|---|---|
| Start from the load-test baseline — only the VU count changes | Run a stress test before a smoke and load test |
| Ramp gradually to observe the degradation curve | Jump instantly to a high VU count — you miss the inflection |
| Document the breaking-point VU count for capacity planning | Draw conclusions from the peak VU count alone |
| Run on staging with stakeholder awareness | Run on production without a maintenance window |
Where to go next
Section titled “Where to go next”- Breakpoint / capacity test — a more rigorous stepped approach to finding the ceiling.
- Spike test — a different failure mode: sudden traffic surge instead of gradual ramp.
- Foundations: Latency percentiles deep dive — understand what p95 climb actually means.
- Best practices: Safe and ethical load testing — authorisation checklist before a stress run.