Software Testing – Stress Testing
Stress testing has different meaning for different industries where it is used. For a financial industry/sector, it means a process of testing financial instruments to find out their robustness and level of accuracy they can maintain under extreme conditions such as sudden or continuous market crash at a certain level, sudden or extreme change in various parameters, for example interest rates, repo and reverse repo used in the financial sector, sudden rise or decline in the price of materials that can affect financial projections etc. For the manufacturing industry, it may include different parameters and operating process for testing of different systems. For medical industry, stress testing means a process that can help understand a patient’s condition, etc.
Stress Testing in IT Industry
Stress testing in IT industry (hardware as well as software sectors) means testing of software/hardware for its effectiveness in giving consistent or satisfactory performance under extreme and unfavorable conditions such as heavy network traffic, heavy processes load, under or over clocking of underlying hardware, working under maximum requests for resource utilization of the peripheral or in the system etc.
In other words, it helps find out the level of robustness and consistent or satisfactory performance even when the limits for normal operation for the system (software/hardware) is crossed.
Most important use of stress testing is found in testing of software and hardware that are supposed to be operating in critical or real time situation. Such as a website will always be online and the server hosting the website must be able to handle the traffic in all possible ways (even if the traffic increases manifold), a mission critical software or hardware that works in real time scenario etc. Stress testing in connection with websites or certain software is considered to be an effective process of determining the limit, at which the system/software/hardware/website shows robustness, is always available to perform its task, effectively manages the load than the normal scenario and even shows effective error management under extreme conditions.
Need for Stress Testing
It is considered to be important because of following reasons:
To help overcome problems like denial of service attacks, in case of web servers for a web site, security breach related problems due to spamming, hacking and viruses etc., problems arising out of conditions where software/system/website need to handle requests for resource allocation for requesting processes at the time when all the required resources are already allocated to some other process that needs some more resources to complete its work (which is called deadlock situation), memory leak, race condition etc.
This type of testing is mostly done with the help of various stress testing software available in market. These tools are configured to automate a process of increasing stress (i.e. creation and increasing degree of adverse environment) on a system/software/website and capturing values of various parameters that help confirm the robustness, availability and performance of the system/software/website being tested. Few of the actions involved in stress testing are bombarding a website with huge number of requests, running of many resource hungry applications in a computer, making numerous attempts to access ports of a computer in order to hack it and use it for various purposes such as spamming, spreading virus etc.
Intensity of the adverse conditions is increased slowly while measuring all the parameters till the point where the system/software/website crashes. The collected data (observation and parameter values) are used for further improvement of the system/software/website.