Load testing is testing the behavior of the application under different load conditions where multiple users access it simultaneously.
When you want to understand if your system is meeting the performance goals, this is the type of test you'll run.
Run a load test to:
- Asses the current performance of your system under typical and peak load.
- Can be used to simulate a normal day in your system
Stress testing is a type of performance testing used to determine the limits of the system.
The purpose of this testing is to verify the stability and reliability of the system under extreme conditions.
Run a stress test to:
- Determine how your system will behave under extreme conditions.
- Determine what is the maximum capacity of your system in terms of users or throughput.
- Determine the breaking point of your system and its failure mode.
Spike testing is a variation of stress test, but it does not gradually increase the load, instead it spikes to extreme load over a very short window of time.
Run a spike test to:
- Determine how your system will perform under a sudden surge of traffic.
- Determine if your system will recover without manual intervention after the traffic has subsided.
Success is based on expectations. System will generally react in 1 of 4 ways:
- Excellent: system performance is not degrated during the surge of traffic. Response time is similar during low traffic and high traffic
- Good: response time is slower, but the system does not produce any errors. All requests are handled
- Poor: system produces errors during the surge of traffic, but recovers to normal after the traffic subside
- Bad: system crashes, and does not recover after the traffic has subside
Soak testing is used to validate reliability of the system over a long time. A soak test is a long-running test that is used to determine application performance and/or stability over time. An application may work well for an hour or two, and then start to experience issues. These tests are especially useful when trying to track down memory leaks or corruption.
Run a soak test to:
- Verify that your system does not suffer from bugs or memory leaks
Capacity testing is a test to determine how many users your application can handle before either performance or stability becomes unacceptable. As usual we start performance testing from capacity testing. We find max users and throughput which server can process
Quality characteristics:
- Response time
- Throughput (number of requests in second) - represents the ability of the server to handle heavy load. The higher the throughput is, the better is the server performance.
- Concurrency
Types of metrics:
- application-side metrics (response time (average, median, min, max), throughput, error, users)
- server-side metrics (CPU and Memory usage)
Reports:
- jmeter generate html report
- blazemeter
- Taurus
- Grafana
How to start performance testing:
- capacity testing (take 1000 users and big rump-up time)



