Skip to content

Performance tests

A Performance API test puts your API under load: MaxoPerf ramps a target number of virtual users against your scenario and measures throughput, latency percentiles, and error rate as load increases. Most MaxoPerf runs use this test type. It is what people mean by “load test” or “stress test.”

Create and run your first load test.

From Tests → New test, select the Performance API test card, then choose how to author it:

  1. Upload script: bring a scenario file for any supported executor: a JMeter .jmx, a k6 script, a Taurus YAML, a Gatling simulation, a Locust locustfile.py, and 16 more. MaxoPerf detects the engine from the file.

  2. Scriptless builder: build one or more HTTP requests in the console. See Scriptless test builders for what the builder supports.

Either path lands on the same authoring page: name, project, scenario/files (or builder), load configuration, and locations.

SettingWhat it controls
Total virtual usersConcurrent VUs, distributed across all locations according to weight
Max VUs per runnerPer-runner cap; MaxoPerf computes the minimum runner count from this
Ramp-up (seconds)Time to linearly increase load from 0 to the target VU count
Stop modeDuration (run for N seconds) or Iterations (run for N request iterations)
Duration / IterationsThe corresponding stop value
The New test form. Name, target, load profile, and locations are all on this one page.

Add one or more rows to the location plan. A row is a managed region (cloud provider + region) or a BYOC private datacenter. Each row gets a runner count and a weight. The weight decides how MaxoPerf spreads virtual users across locations. Auto-balance sets runner counts from the total VU target and the max-VUs-per-runner cap.

Define SLA gates on any run metric (for example p95 latency or error rate), with a comparator and threshold. When a run breaches a criterion, MaxoPerf marks it failed. You can also stop all runners early. The verdict mode controls this: either a breach on any runner fails the run, or all runners must breach.

Each criterion’s label chooses which requests it judges. The default, All labels (stored as ANY), judges the whole run; pick a request label from the suggestions to gate one endpoint. A criterion whose label matched no requests shows No data on the run instead of passing silently. See Failure criteria pass/fail gates.