Types of Testing
Testing the performance of a system can be done with different types of tests that all pursue a different goal. The overall goal is to learn about the system’s behavior and to find potential bottlenecks under various usage scenarios. In the following we give an overview of the most common testing types.
Compared to all the other types of performance testing, load testing is the simplest one. Basically, it describes the simulation of a defined amount of load onto an application while observing the system’s behavior.
Benchmark or Configuration Testing
The goal of configuration testing is to find an optimal configuration or setup of your system. Benchmarking or configuration testing is used to verify different configurations or setups. Basically, you change one parameter of your application or infrastructure at a time and run the test to determine if there is a performance improvement or degradation.
The goal of stress testing is to unearth application bugs that surface only under high load conditions and to find potential bottlenecks. Stress testing is used to detect performance issues under heavy load. In this kind of test you set up a worst case scenario with a huge amount of load and try to detect potential bottlenecks. Normally, the load gets increased till non-functional requirements are violated or the system fails.
The goal of spike testing is to find bottlenecks under heavy load spikes. Spike testing is used to simulate a load spike. This can be caused by high traffic events for example an increase of usage due to a newsletter. In such a scenario the load is expected to increase in a short amount of time.
Soak and Endurance Testing
The goal of soak and endurance testing is to determine if the system can sustain a continuous load and to identify issues relating to memory allocation (leaks), log file handles, and database resource utilization. Soak or endurance testing is used to verify a system’s stability and performance characteristics over an extended period of time. In this kind of test you try to simulate production use and observe the system behavior. It shows whether the system performance changes after a long period of sustained activity.
The goal of capacity testing is to determine the system’s ultimate failure point.
Capacity testing is used to figure out the maximum capacity of a system. Basically, it is a specific term of load or stress testing. You steadily increase the load till non-functional requirements are violated or the system fails.
The goal of scalability testing is to test the scalability configuration and to see whether the system is able to utilize additional resources as efficiently as possible to increase capacity. It is also useful to get a feeling on how much your system performance increases if you add additional ressources. Capacity testing can be seen as the basis for scalability testing on how to determine the performance of an altered configuration or setup. Scalability testing is used to test your system’s scalability behavior. For this kind of test you steadily increase the load and check if the system is able to scale appropriately to satisfy the defined performance conditions.