← New search

Other meanings of Software performance testing

Software Engineering

Software performance testing

Software performance testing is the process of determining how a system performs in terms of responsiveness and stability under a workload. It is a discipline within software engineering that evaluates a system's speed, scalability, and resource usage, often before deployment to identify bottlenecks and ensure service-level agreements are met.

Response time
Time to complete a request
ms
Throughput
Requests processed per unit time
req/s
Error rate
Percentage of failed requests
%
Resource utilization
CPU, memory, disk, network usage
%
1

Purpose and scope

Performance testing aims to verify that a system meets specified performance criteria and to identify performance bottlenecks before release. It differs from functional testing, which checks correctness, by focusing on speed, stability, and scalability under load. Typical goals include validating response times, throughput, and resource consumption against requirements, and ensuring the system can handle expected peak loads without degradation.

Performance testing is often part of a broader quality assurance strategy, complementing load, stress, and endurance testing. It is applied to web applications, databases, mobile apps, and enterprise systems, and is critical for systems with strict service-level agreements (SLAs).

2

Methodologies and types

Performance testing encompasses several distinct types, each targeting a different aspect of system behavior. Load testing applies expected concurrent user loads to measure response times and throughput. Stress testing pushes beyond normal capacity to find the breaking point and observe failure modes. Endurance testing, also called soak testing, checks for memory leaks and performance degradation over extended periods. Spike testing evaluates response to sudden, sharp increases in load.

Each type requires careful design of test scenarios, including realistic user behavior, data volumes, and network conditions. Performance testers often use automated tools to generate load and collect metrics, such as Apache JMeter, Gatling, and LoadRunner. These tools simulate virtual users and provide dashboards for analyzing results.

3

Key metrics and analysis

Core metrics include response time, throughput, error rate, and resource utilization. Response time measures the latency from request to completion, often broken down into percentiles (e.g., 90th, 95th, 99th) to understand tail latency. Throughput indicates the number of transactions or requests processed per second. Error rate reflects the percentage of failed requests, which should be near zero under normal load. Resource utilization tracks CPU, memory, disk I/O, and network bandwidth to identify saturation points.

Analysis involves correlating metrics with system behavior to pinpoint bottlenecks, such as database queries, thread contention, or garbage collection pauses. Performance testers also monitor server logs and application traces to diagnose root causes. Results are typically compared against baseline thresholds and SLAs to determine pass/fail status.

4

Lesser-known aspects

Beyond the standard types, performance testing includes niche practices such as capacity planning, which uses historical data to predict future resource needs, and chaos engineering, which deliberately injects failures to test resilience under adverse conditions. Performance testing also extends to mobile devices, where battery consumption and network variability are critical factors.

Historically, performance testing gained prominence with the rise of client-server architectures in the 1990s, and tools like Mercury LoadRunner (now Micro Focus LoadRunner) became industry standards. Open-source tools like JMeter emerged in the late 1990s, democratizing access. A notable edge case is performance testing of real-time systems, where timing constraints are as critical as functional correctness, requiring specialized techniques like worst-case execution time analysis.

Glossary

Load testing
A type of performance testing that applies expected concurrent user loads to measure system behavior.
Stress testing
Pushing a system beyond normal capacity to find its breaking point.
Endurance testing
Testing over an extended period to detect memory leaks or performance degradation.
Spike testing
Testing response to sudden, sharp increases in load.
Tail latency
The high-percentile response times that indicate worst-case delays.

Performance testing is a critical practice for ensuring system reliability and user satisfaction in modern software development.