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:

  • Almost 90% of the software/systems are developed with an assumption that they will be operating under normal scenario. And 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) software/system/website failure under extreme conditions in real time can be huge (or may be catastrophic for the organization or entity owning the software/system).
  • It is always better to be prepared for extreme conditions rather than letting the system/software/website crash, when the limit of normal operation is crossed.
  • Testing carried out by the developer of the system/software/website may not be sufficient to help unveil conditions which will lead to crash of the system/software when it is actually submitted to the operating environment.
  • It’s not always possible to unveil possible problems or bugs in a system/software, 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 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.