Performance Testing

What Is Performance Testing and Why Is It Important?


 

Performance testing measures how a website, web application, or API responds as traffic, concurrent users, and transaction volume change. It helps teams evaluate response times, throughput, errors, stability, and scalability before users are affected.



Performance test dashboard showing response time and throughput curves as concurrent users ramp up against a web application

Performance Testing Overview

A performance test puts a defined number of concurrent users or requests on a website, web application, or API, raises that demand along a planned curve, and records what changes: response times, throughput, error rate, and how much server, database, and network capacity the system used to keep up. The output is a set of numbers compared against a target, not an impression of how fast the site feels.

The target can be a public site, an authenticated journey through a portal or SaaS application, a sequence of API calls, or an internal web application behind a firewall.

The goal is not to make a site fast in general. It is to confirm that its most important pages, workflows, and API calls meet defined requirements at expected traffic levels. A checkout can work normally for one user but slow down or time out when hundreds of customers place orders at once.

Functional testing confirms that a page or transaction works correctly. Performance testing measures whether it remains fast, stable, and reliable as traffic increases.

What Can You Performance Test?

Performance testing commonly covers four HTTP/S targets: websites, web applications, APIs, and internal web applications. Each requires different scripts and measurements.

TargetWhat the Test MeasuresTypical Journeys
WebsitesPage response and stability as visitor traffic rises, including the effect on the web server, CDN, origin, and external scripts.Homepage, landing pages, product pages, site search.
Web applicationsMultistep journeys run by concurrent users, including the time a real browser spends rendering and executing JavaScript.Login, search, forms, shopping carts, checkout, portals, authenticated dashboards.
APIsEndpoint response times, throughput, errors, authentication, payload handling, and multistep call sequences at different request volumes.REST and SOAP endpoints, token exchange followed by data calls, mobile and partner backends.
Internal web applicationsThe measurements above, run against systems that are not reachable from the public internet through whitelisted static IPs or a load injector installed on premises.Intranets, HR and finance portals, staging environments.

Why Performance Testing Is Important

The value of a performance test is a specific answer that arrives before users find the problem:

  • Bottlenecks show up before release. A slow query or an undersized connection pool appears in a test report instead of a support queue.
  • Capacity and scaling plans get verified. Autoscaling rules, CDN cache settings, and instance sizes are assumptions until traffic proves them.
  • The journeys that earn revenue stay protected. Login, search, checkout, file upload, and the API calls behind them are the paths to test first.
  • Peak events produce fewer slowdowns, errors, and outages. Launches, campaigns, enrollment windows, and seasonal sales often have predictable traffic patterns that can be tested beforehand.
  • Regressions get caught. Code, API, database, infrastructure, and external service changes each shift performance a little, and the drift compounds across releases.
  • Release decisions and service level objectives get evidence. A p95 number against a target is easier to act on than an opinion that the site “feels slow.”

Types of Performance Testing

Each type applies traffic in a different shape to answer a different question. Most programs combine several.

Test TypeQuestion It AnswersTypical Use
Load testingCan the system handle expected and peak demand?Confirming a planned campaign or a normal Monday morning stays within response time and error targets.
Stress testingWhere does the system fail, and how does it recover?Pushing past peak to find the first component that breaks, then checking recovery when load drops.
Spike testingWhat happens when demand rises or falls suddenly?Flash sales, ticket releases, TV ad airings, push notifications, and the recovery afterward.
Endurance (soak) testingDoes performance degrade during a long run?Holding normal load for hours to expose memory growth, connection leaks, disk fill, and cache expiry effects.
Volume testingWhat happens when the system processes large amounts of data?Large catalogs, bulk imports, report generation, and search across big tables.
Scalability testingDoes added capacity produce the expected improvement as demand grows?Checking that doubling instances or raising autoscale limits actually raises the supported user count.
Capacity testingHow many users, requests, or transactions can the current system support within the acceptance criteria?Setting a documented ceiling for capacity planning and commitments to sales and marketing.
Baseline testingWhat is the current result that future changes will be compared against?Recording a reference run before a release, migration, or infrastructure change.

Endurance testing and soak testing are two names for the same test, not two types. And the line between load and stress testing is the one teams blur most often, so it has its own page: load testing vs. stress testing.

Diagram showing performance testing as the parent category with eight test types beneath it: load, stress, spike, endurance, volume, scalability, capacity, and baseline

Performance testing is the category. Each type below it changes how much traffic arrives, how fast, and for how long.

Performance Testing vs. Load Testing

Performance testing is the broader practice of evaluating speed, stability, scalability, and resource use under different conditions. Load testing is one type of performance testing focused on expected and peak traffic.

The terms are often used interchangeably because load testing is commonly the first performance test teams run. Other test types are needed to find breaking points, long term degradation, or scaling problems.

Performance TestingLoad Testing
ScopeBroad category containing several test typesOne type of performance testing
Main questionHow does the system perform under defined conditions?Can it handle expected and peak demand?
Possible conditionsBaseline, load, stress, spike, endurance, volume, and scalabilityRealistic normal and peak traffic
OutputEvidence about speed, stability, scalability, resource use, and bottlenecksEvidence about performance as users or transactions increase

For a comparison that also covers stress testing, read performance testing vs. stress testing vs. load testing.

How to Perform Performance Testing

The steps below apply to a landing page, a checkout flow, or an authenticated API sequence.

1. Define the Goal and Acceptance Criteria

State what the test must prove, in numbers. Examples: p95 response time under 2 seconds for checkout at 1,500 concurrent users; error rate below 0.5%; the orders API sustains 400 transactions per second. A test without pass/fail criteria produces data but not a decision.

2. Model Website, Application, or API Traffic

Pull web analytics, access logs, APM data, and business forecasts. Identify the critical pages or journeys, how traffic splits between them, peak concurrency, request rates, think time between steps, the geographic mix, and API calls per session. Page views are not concurrent users: 100,000 daily page views may mean a peak of a few hundred simultaneous sessions, and the model should say which.

3. Prepare a Representative Test Environment

Match the production web stack, application build, database size, CDN and caching behavior, API dependencies, integrations, and scaling rules as closely as practical. Use safe test accounts and payment sandboxes. Where the environment must differ, write the difference down so nobody reads the result as a production guarantee.

4. Choose the Test Type and Testing Method

Pick load, stress, spike, endurance, volume, scalability, or a combination based on the question from step 1. Then choose how to generate traffic. HTTP/S tests send requests directly and are efficient for high request volume against pages and APIs. Real browser tests execute JavaScript and follow multistep user behavior, so they measure what a person waits for. Many teams run protocol tests for scale and a smaller group of real browser users for user experience.

5. Establish a Baseline

Run a controlled test at moderate load before changing anything. This confirms the script completes, the test data is valid, and the load generators are not the bottleneck. Record the result and test conditions because differences in caching, test data, or the environment can make later comparisons unreliable.

6. Run the Test and Monitor the Full System

Increase demand along the planned load curve (a steady ramp, a step, or a sudden spike) rather than applying an unexplained number of users at once. Capture web server, application, infrastructure, database, network, and external service data next to the test results. Without data from the server, you will know something slowed down but not what.

7. Analyze Bottlenecks

Compare results with the acceptance criteria first. Then correlate slow transactions or errors with CPU, memory, database, cache, queue, connection pool, network, and dependency behavior in the same time window. Stop when you can name the component and the condition under which it degrades, not when you have an average response time.

8. Fix, Retest, and Automate

Change one important variable at a time when you can, rerun the same scenario, and compare it with the baseline. Then add smaller regression tests to CI/CD so critical transactions run on every build, and schedule larger tests before major releases, campaigns, and seasonal peaks.

Key Performance Testing Metrics

Test metrics describe what users would experience. System metrics help explain why. You need both for the same minutes of the test to reach a cause.

MetricWhat It ShowsHow to Use It
Response time percentiles (p50, p95, p99)How long typical, slow, and slowest requests take.Set targets on p95 or p99. The average can hide slow requests; percentiles show the experience of slower users.
Throughput (requests or transactions per second)How much work the system completes per second.Plot against load. When throughput flattens while users keep rising, you have found the ceiling.
Error rate and timeout rateShare of requests returning errors or no response in time.Set a hard limit. A test that passes on response time but returns 3% errors did not pass.
Concurrent users or active sessionsHow many simulated users were active at each point.Use as the x-axis, never as the only target. Pair it with response time, throughput, and error criteria.
CPU utilizationCompute used by application and database servers.CPU that remains near 100% as latency rises points to compute bound work or insufficient capacity.
Memory utilization and growth over timeMemory in use and its growth during the run.Steady growth under constant load points to leaks, cache growth, or objects never released.
Disk and network activityI/O throughput, latency, and bandwidth use.Check when CPU and memory look fine but response time still rises.
Database query time, connections, and locksQuery duration, open connections, and lock waits.Compare against the transaction that slowed. Connection pool exhaustion often appears here first.
Queue depth or backlogWork waiting in message, job, or request queues.Rising backlog under steady load means consumers cannot keep up with producers.
Browser timingTime to first byte, DOM ready, page load, and timing for each element in a real browser.Separate server slowness from browser scripts, external tags, and asset delivery.

Test metrics identify symptoms. Server, database, and observability data locate the cause. LoadView performance reports cover the test side, from summary charts down to a waterfall chart for each session. But the server side has to come from your own monitoring or APM, matched to the test timeline.

How to Read Performance Test Results

A few patterns repeat across most web systems. None proves a root cause on its own, but each indicates where to investigate next.

What You SeeWhere to Investigate
Response time rises while throughput stops increasingThe system has reached saturation. Find which resource flattened first: CPU, connections, threads, or a downstream dependency.
CPU stays near saturation as latency risesHigh CPU demand, inefficient code paths, or too little capacity for the load.
Memory keeps rising during a long testLeaks, unbounded caches, session objects never released, or garbage collection that cannot keep up.
Errors increase once connections reach a limitDatabase connection pools, downstream service limits, load balancer or web server connection caps, or rate limiting.
One transaction slows while the rest stay stableThat transaction's code path and dependencies: a specific query, an external service call, a lock, or a synchronous report.
Browser time rises while server response stays flatBrowser JavaScript, external scripts, large assets, or CDN behavior in the tested regions.
Chart of a load test showing throughput flattening and response time climbing sharply after the saturation point as concurrent users increase

When throughput levels off and response time begins climbing, the system has likely reached a capacity limit.

When to Run Performance Tests

Performance testing is not a one time task before launch. The useful triggers:

  • Early in design, while architecture and the important user journeys are still being decided and changes are cheap.
  • After meaningful changes to code, database schema, infrastructure, or integrations, including changes to external scripts and CDN configuration.
  • In CI/CD, as short regression checks on the transactions that matter most.
  • Before major releases, campaigns, seasonal peaks, and migrations, at the traffic level the event is forecast to produce.
  • After a production incident, to confirm the fix holds under the conditions that caused it.
  • On a schedule, to catch performance drift that no single release explained.

Performance Testing vs. Website Speed Testing

A website speed test loads one page or one session at one point in time, usually with no other traffic on the site, and reports how long it took. It is useful for front end optimization and for comparing one build with another.

Performance testing applies changing levels of traffic or concurrent users to see how a website, application, or API behaves as demand increases. Both report page or response timing. Performance testing adds what a speed test cannot answer: how many users the system supports, the error rate at peak, where throughput flattens, and how long the system stays stable. And a page that scores well on a speed test can still fail at 500 concurrent sessions.

How to Choose a Performance Testing Tool

Judge a cloud performance and load testing tool against the tests you need to run, not a feature count:

  • Supports websites, multistep web applications, and the API protocols you use, including authentication flows.
  • Can model realistic traffic: browser journeys, API sequences, think time, data variation, and adjustable load curves.
  • Provides enough scale for your peak, from locations that match where your users are.
  • Supports protocol testing, real browser testing, or both, depending on what you need to measure.
  • Produces usable percentiles, error breakdowns, results for each transaction, and reports you can share with people who did not run the test.
  • Integrates with CI/CD and with your monitoring or observability tools for the server side.
  • Supports internal web applications when testing behind the firewall is required.
  • Is maintainable by the people who will create and rerun the tests.

Performance Testing Best Practices

  • Start with a specific business or engineering question, then design the test that answers it.
  • Build workloads from analytics, logs, and forecasts rather than guesses.
  • Test login, search, and checkout transactions, not just the homepage.
  • Use realistic data volumes and environments that match production where possible, and document where they differ.
  • Separate problems in the system under test from limits in the load generation setup. Check load generator CPU and network before blaming the application.
  • Track percentiles, errors, throughput, and server resources together for the same test window.
  • Change one major variable at a time when diagnosing improvements.
  • Save baselines and compare the same scenario after every change.
  • Include external dependencies and geographic latency when they affect the user journey, since production users do not skip them.

Performance Testing With LoadView

LoadView is a cloud load testing platform for measuring the performance of websites, multistep web applications, and APIs under traffic. Load comes from a managed cloud, so there is no load generation infrastructure to build or maintain.

Where request volume is the question, HTTP/S tests send thousands of concurrent requests and report response times, throughput, and errors per endpoint. Where the user journey is the question, web application load testing runs scripts in real browsers, so JavaScript execution and rendering time are part of the measurement. Scripts are recorded with the EveryStep Web Recorder by clicking through the journey once. API load testing covers REST and SOAP endpoints, including authenticated and multistep call sequences.

Load curves are adjustable: a load step curve gradually changes concurrent users over a defined period, a goal based curve generates a required transaction rate within a fixed interval, and a dynamic adjustable curve lets teams change user load while the test runs. Traffic can come from more than 40 zones on the geographically distributed network, so regional latency and CDN behavior are part of the result.

Reports show the execution plan, transactions per minute, response times, and errors by type, with a waterfall chart for each session for tracing a slow transaction to a specific request. LoadView integrates with Jenkins, Azure DevOps, and CircleCI. Jenkins and CircleCI can use a Failed Sessions Threshold to flag builds when failed sessions exceed the allowed percentage. Internal applications can be tested through whitelisted static IPs or a load injector installed on premises with testing behind the firewall.

LoadView shows how the website, web application, or API performed during the test. Use server monitoring or APM data alongside the LoadView results to identify the underlying cause of slow responses or errors.

Performance Testing FAQ

What Is Performance Testing for a Website or Web Application?

It applies a controlled number of concurrent users or requests to the site or application and records response times, throughput, errors, and resource use as that demand changes. The result shows if journeys such as login, search, and checkout meet defined requirements at expected and peak traffic.

What Is the Difference Between Performance Testing and Load Testing?

Performance testing is the broad category. Load testing is one type within it that applies expected and peak demand to check that the system stays within its targets. Stress, spike, endurance, volume, scalability, capacity, and baseline tests are the other types, each answering a different question. See the comparison above.

What Are the Main Types of Performance Testing?

Load, stress, spike, endurance (also called soak), volume, scalability, capacity, and baseline testing. They differ in how much traffic they apply, how fast it arrives, how long it lasts, and what the goal is: confirming a target, finding a limit, or recording a reference point. The types table lists the question each one answers.

Which Metrics Should a Performance Test Measure?

At minimum: response time percentiles (p50, p95, p99), throughput, error and timeout rate, and concurrent users. Pair those with server CPU, memory, disk and network activity, database query time and connections, and queue depth. Websites and web applications also need browser timing so slowdowns in the browser are visible.

How Is Performance Testing Different From a Website Speed Test?

A speed test loads one page for one visitor and reports how long it took. Performance testing sends many concurrent users or requests and measures how response time, errors, and capacity change as demand grows. A page can score well on a speed test and still fail under a few hundred simultaneous sessions.

Can Performance Testing Be Automated in CI/CD?

Yes. Short tests against critical transactions can run on every build, with the pipeline failing when error rate or response time exceeds a set limit. Larger load, stress, and endurance tests take longer and usually run on a schedule or before major releases rather than on every commit.

Should Performance Testing Use Real Browsers or HTTP/S Requests?

Use both where they fit. HTTP/S tests generate high request volume cheaply and suit APIs and server capacity questions. Real browser tests execute JavaScript, render the page, and follow multistep journeys, so they measure what a user waits for. Many teams run HTTP/S tests for scale and a smaller group of real browser users for user experience.

Start Performance Testing

Set your performance goals, model realistic traffic, and run your first baseline test.

Take Your Load Testing to the
Next Level

Experience unparalleled features with limitless scalability. No credit card, no contract.