Stress testing is a process for establishing limits of adverse environment in which the system/software/website under test will crash. Know more about stress testing.
Stress testing has different meanings for different industries where it is used. For the finance 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.
These extreme condition can be 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 processes 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 the IT Industry
Stress testing in IT industry means testing of software/hardware for its effectiveness in giving a 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, 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 is crossed.
The 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.
Stress testing in connection with websites or certain software is considered to be an effective process of determining the limit, at which the system 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.
It is considered to be important because of following reasons:
♦ Almost 90% of the software/systems are developed with an assumption that they will be operating under normal scenario. Even if it is considered that the limit of normal operating conditions will be crossed, it is not considerably as high as it really could be.
♦ The cost or effect of a very important (critical) system failure under extreme conditions in real time can be huge (or catastrophic for the organization or entity owning the system).
♦ It is always better to be prepared for extreme conditions rather than letting the system, when the limit of normal operation is crossed.
♦ Testing carried out by the developer of the system may not be sufficient to help unveil conditions which will lead to crash of the system when it is actually submitted to the operating environment.
♦ It's not always possible to unveil possible problems or bugs in a system, unless it is subjected to such type of testing.
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, viruses, etc., problems arising due deadlock situation, memory leak, race condition, etc.
This type of testing is mostly done with the help of various tools 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 and capturing values of parameters that help confirm the robustness, availability, and performance of the system being tested.
Few of the actions involved in stress testing are bombarding a website with huge number of requests, running 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 a virus, etc.
The intensity of the adverse conditions is increased slowly while measuring all the parameters till the point where the system crashes. The collected data (observation and parameter values) are used for further improvement.