Skip to main content

Performance Testing

Finding out what happens under load before your customers do. Most useful when you can name the event you are worried about.

What This Is

Performance testing is the work of measuring how your system behaves under realistic and peak load. Not how fast a single request is, but how many concurrent users it can serve before response times degrade, error rates climb, or the system falls over entirely. It is the only way to know what your application will do under traffic before it actually meets that traffic.

A system that feels fast in development can fall apart at fifty concurrent users because of a query that does not scale, a connection pool that exhausts, or a queue that backs up faster than workers can drain it. None of those problems are visible in unit tests, end-to-end tests, or local development. They only appear when load is applied, which means they often appear for the first time in front of real users, on a launch day or a marketing-driven traffic spike.

Performance testing replaces hope with evidence. We design realistic load profiles, run them against staging or pre-production environments, and produce reports showing where the system holds up and where it breaks. The output is not just “it failed at X users” but “it failed at X users because of Y, and here is what fixing Y looks like.”

When You Need This

Performance testing is essential when:

  • You have an upcoming launch, campaign, or event that will drive traffic well above your normal baseline and you need to know if the system will hold
  • Your application is growing and you want to identify the next bottleneck before it bites
  • You are migrating infrastructure (new servers, new database, new region) and need to verify the new environment performs at least as well as the old
  • You have autoscaling and need to confirm that scaling actually keeps up with traffic, including the time it takes for new instances to come online
  • Your SLA or contract commits you to specific response times under specific load and you need to prove the commitment is realistic

This is not the right service if your application is currently slow at low load. That is a Performance Optimisation job, not a load testing job. The bottleneck is already visible. Performance testing finds the problems that only appear at scale.

How We Work

Performance testing starts with realistic traffic modelling, not synthetic load. A test that just hits one endpoint in a tight loop is barely useful. Real users do not behave that way. We model the traffic mix from your analytics: which pages get hit, which APIs are called, what proportion of users authenticate, how long sessions last. The load test then exercises the system the way real users would, just at a higher rate.

We run a graduated test plan. A single “hammer it as hard as possible” test produces less information than a graduated plan: smoke test (low load to verify the test rig works), baseline test (typical load to establish current behaviour), peak test (expected highest load), stress test (well above peak to find the breaking point), and soak test (sustained moderate load to find memory leaks and slow degradation).

We measure at every layer. Response time at the edge is the headline number, but the diagnosis lives in database query times, application server CPU, queue depth, cache hit rates, and connection pool saturation. We collect metrics from every layer during the test so the breakdown is actionable, not just “it got slow.”

We test against an environment that resembles production. Load testing against an underprovisioned staging server tells you about the staging server, not about production. We work with your team to size the test environment realistically: ideally a staging environment that mirrors production, or production itself during a maintenance window for the highest-stakes tests.

What You Get

  • Load profile based on realistic traffic patterns from your analytics
  • Graduated test plan: smoke, baseline, peak, stress, and soak
  • Test scripts in k6, JMeter, or Locust depending on your stack
  • Per-layer metrics covering application, database, cache, queue, and infrastructure
  • Bottleneck analysis identifying where and why the system breaks first
  • Report with concrete recommendations and specific fixes prioritised by impact
  • Reproducible test rig the team can run again after fixes are applied

Technologies We Use

  • k6 for HTTP and API load testing, scripted in JavaScript with clean reports
  • JMeter when teams already have JMeter expertise or existing test suites
  • Locust for Python-based load shaping with custom user behaviour
  • Grafana dashboards for live metric visualisation during tests
  • Laravel Telescope, New Relic, or equivalent APM for in-application metrics
  • Database query logs with timing data for bottleneck diagnosis

Related Systems

Performance testing applies to any system where load matters. A reporting dashboard used by hundreds of users at month-end needs to scale for that peak. A booking system where everyone tries to book at once when slots open needs to survive the rush. A lead generation system hit by a marketing campaign needs to absorb the spike without dropping leads. Performance testing tells you whether each will hold.

Where performance problems are already confirmed, operational visibility dashboards help your team monitor the system continuously after fixes are applied, so degradation does not creep back in unnoticed. For verifying that critical user flows still work under load, performance testing can pair with end-to-end testing to cover both correctness and throughput.

Talk to Us About Load Testing Your System

Performance testing is part of our software testing services. If you have a launch coming up, a growing user base, or an SLA you need to prove you can hold, get in touch and we will scope a load testing engagement that produces real numbers.

When This Is Worth Doing

When you can name the event you are worried about.

A product launch, a campaign, a seasonal peak, an onboarding of a large customer, a regulatory deadline that puts everyone on the system at once. Those are real and testable.

Testing “in general”, with no expected load in mind, produces numbers nobody can interpret. The first question is always what you expect to happen and when, because that decides what to simulate.

What It Actually Tells You

Where it breaks first. Almost never the thing people expect. Usually the database, occasionally a third party, sometimes a single unoptimised query that was fine at current volume.

Whether it degrades or collapses. A system that gets gradually slower is manageable. One that falls over at a threshold is not, and the difference only shows under load.

What the ceiling is, so capacity decisions are based on a measurement rather than a guess.

Whether recovery works. What happens after the spike passes matters as much as during it.

The Distinction Worth Understanding

Load testing is expected traffic, verifying it holds up.

Stress testing is deliberately beyond that, to find where and how it fails.

Soak testing is normal load sustained for hours, which finds the slow leaks that only appear over time and which never show in a short test.

Most businesses need the first, sometimes the second. The third matters for anything running continuously, and it catches a category of problem nothing else does.

What Moves The Price

Whether the environment can be reproduced. Testing against something that does not resemble production tells you very little, and building a realistic environment is frequently most of the cost.

Realistic data volumes. A database with a thousand rows behaves nothing like one with a million. Generating credible test data is real work.

How complex the user journey is. Hitting one page is simple. Simulating a genuine session with login, search and checkout is more involved and considerably more useful.

Whether third parties are involved, since you cannot load-test somebody else’s payment provider.

Where This Goes Wrong

Testing the wrong thing. Hammering the homepage while the actual constraint is a reporting query.

Unrealistic data. The most common flaw, and it makes the whole exercise misleading.

No plan for the findings. A report saying the system falls over at 400 concurrent users, with no follow-on work, has cost money and changed nothing.

Testing once. Performance regresses with ordinary development. A single test is a snapshot of a system that no longer exists a month later.

Questions To Ask Whoever Runs It

  • What load are we testing for, and where did that number come from?
  • Does the test environment match production, and how closely?
  • How realistic is the data?
  • What will we do with the findings? Agree this before, not after.
  • Are we testing the journeys that matter, or the pages that are easy?

A Brief You Can Send Anyone

The event we are worried about: [launch, campaign, season, customer]
Expected load: [users, requests, or orders, and over what period]
Current typical load: [for comparison]
What must not fail: [checkout, login, the core task]
What downtime costs: [per hour]
Environment available: [staging, production copy, or nothing]
When we need to know: [the date]

How We Approach It

Establish the number first, build a realistic environment and dataset, test the journeys that matter rather than the pages that are convenient, and agree in advance what happens with the findings.

Where the outcome is that something is too slow, performance optimisation covers the fixing, and the measurement done here is what makes that work cheap because the cause is already known.

The wider testing picture is on the testing page.

Portrait of Alexander De Sousa, founder of Digital Royalty
Founder-led
“I’ve put everything I know into how this company works — the standards, the method, the care on every project. It runs through the whole team, and I hold us all to it.”

Alexander De Sousa · Founder LinkedIn

Featured on BBC Radio Solent

Get started

Tell us what you need

A few quick questions, then a straight answer from a real person — usually within a few hours.

Tell us what you're working on

Whether it's a new site, a platform, or a process that shouldn't be manual any more — we'll tell you honestly if we can help.