Load test
A load test validates that your system performs acceptably under the traffic levels you actually expect. It answers the question: “Does the system meet its SLOs when a realistic number of users are active at the same time?”
Before you start
Section titled “Before you start”- A smoke test has passed against the same target.
- You have an estimate of your peak concurrent users or target RPS. See How much load do you need?.
- Your target environment is sized to handle real traffic (staging or production).
What is a load test?
Section titled “What is a load test?”A load test applies a sustained, realistic number of virtual users for long enough to reveal how the system behaves at steady-state. Unlike a stress test (which pushes beyond limits), a load test stays within expected operating range.
A well-designed load test has three phases:
- Ramp-up — gradually increase VUs to target level (avoids cold-start noise).
- Hold / plateau — sustain target VU count long enough for the system to reach steady state (≥ 10 min for most systems).
- Ramp-down (optional) — gradually decrease VUs; useful for watching drain behaviour.
How to run a load test in MaxoPerf
Section titled “How to run a load test in MaxoPerf”Load profile
Section titled “Load profile”| Parameter | Value |
|---|---|
| Virtual users (VUs) | 50–500 (match your expected peak concurrency) |
| Ramp-up | 2–5 min to target VU count |
| Hold duration | 10–30 min at plateau |
| Stop mode | Duration |
| Locations | 1–3 managed cloud regions |
Console walk-through
Section titled “Console walk-through”-
From your project, click New test (or open an existing one and click Edit).
-
Upload your test script. A typical Taurus YAML for a load test:
execution:- executor: jmeterconcurrency: 100ramp-up: 3mhold-for: 15mscenario: api-loadscenarios:api-load:requests:- url: https://api.staging.example.com/v1/productslabel: list-products- url: https://api.staging.example.com/v1/cartlabel: get-cartmethod: POSTbody: '{"userId":"user-42"}' -
In Load profile, set Virtual users to your target concurrency (e.g.,
100), Ramp-up to3m, and Duration to15m. -
Select 1–3 managed locations. For a distributed load test, see Multi-region distributed load.
-
Optionally set Failure criteria — for example, p95 < 500 ms — so the run automatically marks as
failedif the threshold is breached. See Failure criteria. -
Click Run and monitor the live results.
How to read the result
Section titled “How to read the result”Once the run reaches finished, open the Overview tab:
- Throughput (RPS) — confirm it stabilises on the plateau. A climbing or crashing throughput line means the system is not at steady state.
- p95 latency — this is your headline metric. Does it stay below your SLO threshold through the whole hold phase?
- Error rate — should be near zero. Any errors during the plateau are a problem.
- Runners tab — verify all runners were healthy; a saturated runner skews latency readings.
Tag the run as baseline if it is the first successful run at this profile. Later load
tests can be compared against it.
Do / don’t
Section titled “Do / don’t”| Do | Don’t |
|---|---|
| Use a ramp-up to avoid cold-start noise | Start at full VU count with no ramp — it can spike error rates |
| Run long enough to see steady-state (≥ 10 min hold) | Stop after 2 min and declare the test done |
| Base VU count on real traffic data or estimation | Guess a “big” number that your system cannot handle |
| Set failure criteria so CI gates automatically | Manually inspect every run without a pass/fail threshold |
| Compare to a known baseline run | Draw conclusions from a single run |
Where to go next
Section titled “Where to go next”- Stress test — push beyond the load-test VU count to find the breaking point.
- Baseline regression test — turn this run into a CI gate.
- Foundations: Core metrics explained — understand RPS, error rate, and percentiles.
- Cookbook: Staged ramp profile — build a multi-stage ramp for more realistic traffic shaping.