What is Stress Testing ?
It is a type of performance testing, which is done to determine the software's robustness, to bear the maximum possible load under extreme conditions.
Stress testing is carried out, with the aim of breaking the system/software product, to determine its maximum or threshold limit, to bear the loads under unexpected or abnormal conditions, before being crashed out. In addition, it is also done with the purpose of evaluating the recoverability power of the system, after its failure, so that the system recovers without any issues, like loss of data.
Why Stress testing is needed?
It is unpredictable to determine the number of users, who will be concurrently accessing and using the software product or system, like in the case of e-commerce websites, which gets heavily trafficked during any festive season or other such season. The failure of one e-commerce website to accommodate this heavy traffic, will certainly give advantage to its counterpart websites, along with the loss of its revenue and market value.
Stress testing of the software product/ system, ensures its capability to withstand the unforeseen traffic or load under severe circumstances, without have gone into a failed state, along with successful recovery, in case of failure.
How it is done ?
This type of testing, generally involves strategy of continually burdening the system or software product with the load, under rigorous environment. This strategy may include:
- Simultaneous access to software product by the large number of users.
- Cutting down of the resources, such as memory and space.
- Execution of tasks by multiple users in a limited or short time.
- Performing critical operations at the same time by the users.
Key points of Stress Testing
Some of the notable features of the stress testing are
- It is a form of both performance and non-functional testing.
- It mainly focuses on recoverability aspect of the software or system, to ensure its hassle-free recovery, after the failure.
- Evaluates, software's robustness to go along with the maximum possible load under unfavourable conditions.
- Determines the breaking limit or point of the system, just before its failure.
- It is different from load testing. The purpose behind load testing is to assess the system's behaviour and response under different load whereas stress testing is a brutal version of load testing, which includes excessive burdening the system, along with other negative approaches such as multiple and simultaneous access, limiting the resources, space and memory, etc., in order to break it.
- Ensures software's error handling and managing feature, responsiveness and throughput evaluation, under heavy load.
- Very often, stress testing is addressed as negative testing.
Tools For carry out Stress Testing
There are numerous tools available in the market, for carrying out stress testing. Some of them are
- Neo load
- Hammerhead 2
- Database Open Source Test Suite