Matching API performance testing tools to the three questions
Capacity → load generators
Thread groups, ramp-up, distributed workers.
Run before releases and after architecture changes. Expensive to run continuously.
Regression → timing comparison
Needs a baseline and a diff, not high concurrency.
The cheapest of the three and the one most often absent.
Correctness → functional verification
Assertions on bodies, including under awkward input.
The floor under both of the others.
The category most teams are missing
Almost every team that says they do performance testing has a load generator. Very few have anything watching for regression per change. That is backwards on cost and on yield.
Capacity rarely changes between releases, so testing it continuously tells you little. Performance regression arrives one pull request at a time, and by the time a quarterly capacity run catches it you are staring at six months of commits with no idea which one added the unindexed query.
What to look for in each category
Load generators: can you assert on response bodies, at least on a sample. Most can and few teams enable it, which is how a load test reports clean while every response is empty.
Regression tooling: does it compare against your own history rather than an absolute threshold. Borrowed targets tell you nothing about your product.
Functional verification: does it include boundary cases. A query that degrades with a large page size is a structural problem you will find here long before a capacity test surfaces it.
Reading a percentile honestly
Performance tooling reports percentiles, and they are routinely misread in a way that hides the problem you are looking for.
A p50 that looks fine tells you about the median request and says nothing about the experience of anyone unlucky. A p99 that looks fine on an endpoint called a thousand times an hour still means ten slow requests an hour, which is ten annoyed users. And an average across all endpoints is close to meaningless, because it mixes a health check with a report generation.
Two habits fix most of it. Look at percentiles per endpoint rather than in aggregate, and look at p95 and p99 rather than the mean. The endpoints that matter will usually be a short list, and watching those four numbers over time is more useful than any dashboard showing everything at once.
The order that saves money
Correctness, then regression, then capacity. Load testing an endpoint that returns the wrong thing produces a confident number about nothing, and that is the most common way a performance program wastes its first quarter.
Terminal
npm install -g @testsprite/testsprite-cli
testsprite setup
The same setup is available in the TestSprite dashboard if you would rather not install anything locally. The rest of the CLI surface is in the CLI repository.
Sessions, captured values, ordering and cleanup are covered in the API testing documentation.
Two routes, and the choice is really about who owns the pipeline. Connecting the GitHub App from the dashboard needs no change to your repository at all, because it reacts to the deployment your build already emits. Adding a GitHub Actions step puts the check in the repo where it gets reviewed like the rest of the build.
What TestSprite contributes
The correctness column, which is the floor under the other two. It asserts on bodies rather than status codes, covers boundary cases that surface structural slowness, and runs on every pull request.
Coverage is generated from a discovery pass plus your specification. Auto-Authentication keeps sessions alive across a run, Dynamic Variables carry values between calls, Dependency Chains derive execution order, and Auto-Cleanup removes exactly what the run created.
The value is that your capacity numbers start describing a service that works. A query degrading with a large page size shows up here at a fraction of what it costs to find in a load run, and an endpoint quietly returning empty results stops scoring well on throughput.
Does TestSprite belong in this category?
In the correctness column. It verifies behavior including boundary cases, and does not generate sustained load.
Can one tool cover all three?
Some claim to. In practice generating load and asserting deeply on bodies pull against each other, because assertions cost throughput on the generator.
What is a reasonable regression threshold?
Set it from your own variance. If your numbers move ten percent run to run on a quiet environment, a five percent threshold is noise.
Do we need distributed load generation?
Only when a single generator becomes the bottleneck. Many teams buy distributed capacity they never saturate.
Where should each run?
Correctness and regression on every pull request. Capacity before releases and after architecture changes.
Three questions, three instruments.
API performance testing tools split into load generators, regression comparison and functional verification. Most teams have the first and lack the second, and correctness is the floor under both.