There are numerous types of tests within the umbrella of automated performance testing, which will help you understand how the system performs under varying criteria. Here are the main types used:
- Load Testing: Load testing benchmarks performance and response-time levels operating under anticipated user actions. That includes how the system performs and if it remains stable with a range of concurrent users. This testing type is focused on how the system handles everyday operational conditions.
- Stress Testing: Commonly referred to as fatigue testing, the purpose of stress testing is to understand how the system responds to unreasonable amounts of load—exceeding its thresholds. Here you will learn how the system fails but typically does so in a controlled manner from the perspective of understanding its breaking point in terms of the load and how it self-recovers.
- Spike Testing: In spike testing, you will assess the system's performance and stability in response to short bursts of extreme and shift amounts of loads for shorter durations. This sets up the testing framework to understand how the system self-corrects itself (if so) in response to sudden and unpredictable amounts of loads.
- Endurance Testing (Soak Testing): The purpose of endurance testing is to see how the system responds to sustained amounts of duration and loads over a designated timeframe. This is more about performance rather than testing for levels of breaking points. However, you may start to see basic issues starting to flush to the surface (like memory leaks) that would impact performance over intervals.
- Scalability Testing: Testing will allow you to understand the system's ability (or inability) to scale upwards or downwards depending on load levels. This gives system administrators the ability to figure out if they need to add capacity on newly created resources (like servers) when user load demand exceeds considerations of current concurrent users.
- Volume Testing: A form of flood testing, used as a gauge to see how the system performs under immediate shifts of clustered and/or large volumes of loads to certify no performance degradation point exists or, more importantly, at what level of actions a failure point in performance occurs.
- Peak Testing: As implied, peak testing is in regards to performing behavioral testing within a predetermined peak load threshold. This could also occur in scenarios like flash selling of items or viral items and asks the question of how the system maintains performance during times and periods of extreme activity and loads but not into a prolonged amount of time.
Simply put, testing is key to understanding whether or not applications can perform under the real-world demands of user actions and load requests.