Early detection of performance issues significantly reduces application support costs and increases reliability for end users.
Most systems are developed to function under normal operating conditions. However, it is important to ensure that the system does not collapse under heavy loads.
What is Stress Testing?
Stress Testing is a type of Software Testing that checks the capacity limits and the reliability of a system under load. It ensures that the system does not collapse under heavy load conditions. It stresses the system beyond the normal operating load conditions and evaluates how the system works under these extreme loads. It also checks if the system displays effective error management.
Why do we need Stress Testing?
It is important to perform load tests on an application ecosystem to examine its behavior whenever there is a spike or sudden surge in traffic. Failure l to deal with such sudden load changes, could result in losing money and reputation. Stress testing is also required for the following reasons:
-
To check if the system continues to operate under abnormal conditions.
-
To display the appropriate error message when the system is under a load stress.
-
System failure in extreme conditions can lead to huge revenue loss.
-
To prepare applications or websites for extreme conditions.
-
To significantly reduce the cost of application support, as fixing problems in "production" mode has huge costs.
-
To significantly increase the reliability of the system to end users, thus improving its market value.
What is the technical goal of Stress Testing?
The procedures of Stress Testing are aimed at the following:
-
Extracting a relationship between the system load and its response time. For loading, in a standard web application, the number of requests per second (req / sec) is used as a unit of measurement. Typically, as the number of req / sec increases, so does the response time of the system. Thus, if the maximum acceptable response time is set by the organism, the req / sec maximum limit can be determined, to which the system behaves acceptably (i.e the maximum load that it can receive).
-
Observing the behavior of the system when it reaches its limit. In general, the goal of a stress test is to get a system to its load limit (that is, to make it unresponsive and / or make it fail). At this limit, the behavior of the system is observed. In specific, what is important is if it fails "properly" (gracefully). "Proper" failure means the failure of the system in such a way that it does not affect its business operation (for example, it does not result in inconsistent data in the database).
-
It should be noted that the purpose of the stress testing process is not to justify the performance of the system, but only to record it. To justify the system's performance (or inefficiency), it is recommended to use APM (Performance Monitoring) APM tools.
Τhe stages of Stress Testing
DataBlue follows the standard 5 steps when performing extreme load simulations in any application:
-
Development the Stress Test procedure with the help of the client - In this step, the system data is collected, the system is analyzed and the test objectives are defined.
-
Creation of automation bundles - The stress test automation scenarios are created and the test data are prepared for the execution scenarios.
-
Execute a set of actions - In the third step, the stress test automation scenarios are executed and the results of the scenarios are stored.
-
Results analysis - After storing the results, the analysis stage follows in order to locate the congestion points.
-
Optimization - In the final step we help the customer to optimize the system by proposing possible solutions with changes in the infrastructure or the code of the applications and another cycle of executions of the scenarios follows, to observe if there are improvements based on the observations.
What are the types of Stress Test controls?
-
Load testing: is the test of the system under a specific load. This load may be the expected one, an estimate of which has come from collected performance statistics, or it may be arbitrary.
-
Stress testing: is the process that aims to find a system load limit. Its ultimate goal is the failure of the system (that is, to determine when it becomes unresponsive). It is also important to find out how gracefully the system behaves in such a failure (especially if it leaves its data in a consistent state).
-
Soak testing: is the test of the system under a specific load, for a lengthy period of time. The purpose of this test is to determine the stability of the system (detection of memory leaks, etc.).
-
Spike testing: is the test that involves the sudden and abrupt increase in system load. The purpose of the process is to determine how a system behaves in such sudden changes.
It is important for an organization that is interested in controlling its applications to understand the importance of each part of the above process, and to choose which, if not all, processes it will activate.