Types of Web Application Load Tests
There are a number of different common types of load tests. They each serve different purposes, and vet different capabilities.
Real-World Concurrency Test
A Real-World Concurrency test simulates normal production-like usage and determines the application’s scalability. This test is probably the single most important test for vetting a site’s capabilities.
Purpose: Vets the application for a certain number of users with production-like traffic and verifies performance characteristics.
Detects: Bottlenecks, issues including inadequate web server connections, CPU, memory, keepalives, inefficient queries and algorithms, load-balancer issues, worker thread/process issues, database connections, query problems and more.
Stress Test
A Stress Test verifies the websites capabilities when pushed passed expected capacity.
Purpose: Determine upper limit of system capacity and the next expected bottleneck.
Detects: Website breaking point, website degradation profile under increasing load.
Failover Stress Test
A Failover Stress Test verifies website performance when resources are taken away and recovered.
Purpose: Determine how failover conditions are handled including reduced web server, app server and database offlining, as well as recovery from changes in these conditions.
Detects: Correct behavior in the face of reduced capabilities, load balancing, automated recovery, error handling.
Endurance Test
An Endurance Test, also known as a soak test, involves testing a system with typical production load for a longer period of use.
Purpose: Verify the application can handle extended usage without resource scarcity issues.
Detects: Resource utilization problems over time where usage of a finite resources is exhausted over time. Typical problems include memory leaks, file handle leaks, database connection recycling, unrolled log files absorbing all disk space.
Bandwidth Test
A Bandwidth Test verifies the amount of bandwidth that your web server tier can pass. This test uses a large image hosted on your web server (not a CDN!) to determine the throughput your website can push through. A Bandwidth Test verifies the promised bandwidth can be delivered given your current configuration. By running an isolated bandwidth test, other tests may be safely run without downloading assets like images so long as the implied bandwidth requirements of those tests is within your established bandwidth-ceiling.
Purpose: Verifies your web server and networking capabilities in isolation.
Detects: Limitations with web hosting providers, network misconfiguration, load balancers, web server, and connection problems.
Baseline Performance Test
A Baseline Performance Test verifies website performance under a minimal-traffic scenario.
Purpose: This test determines best-case performance measurements for page load times.
Detects: Best-case page load time. Issues in testing scripts themselves.