What is Stress Testing?
Stress testing is a type of performance testing designed to test the endurance, robustness or stability of an application, system or network. Testers are generally more interested in defects and anomalies caused by system failures from stress testing, rather than the failures themselves (which are expected). Stress testing is typically only used to test business-critical systems and applications in order to find ways to improve their endurance or create failsafes, rather than to establish any sort of performance baseline or find specific defects.
Why is stress testing important?
Because most software and systems are designed to function optimally under normal load, attention isn’t always paid to what happens in abnormal conditions, such as network traffic spikes (for a website), resource allocation errors (in software products) or system-level failures (like CPU malfunctions and other hardware failures). For critical systems, this could lead to unforeseen issues with other software and systems that normal testing, even performance testing, can’t detect.
Many businesses work under strict service level agreement requirements, including high-percentile availability and compliance requirements. Any defects that disrupt these SLAs could end up costing companies much more than the cost of the systems themselves, and thus it’s vital for them to understand the consequences of system failure on their SLAs. Stress testing is a relatively inexpensive way for companies to determine – and hence minimise – the risks of system failure, and to put in place contingency plans, such as offloading to mirror systems, in the event of a failure, in order to deliver on their SLAs.
Stress testing can also pick up issues in other systems that result in a failure of interdependent or connected systems. For example, if an application becomes unavailable on one system, it can have a domino effect by disrupting the normal function of other applications on other systems that would not have otherwise been detected using other testing methods.
How is stress testing done?
Like other forms of testing, stress testing typically involves understanding the requirements of a particular system or software, and then purposefully attempting to break the delivery chain for those requirements. This can be done in different ways, including:
- Planning test cases that target specific functions, such as network load, CPU and memory utilisation, and certain dependencies built in to most software systems;
- Executing and recording the results of these tests, paying particular attention to the stress points of each systems and the effects on other systems and applications;
- Writing test scripts that can be run automatically to periodically test the system’s stress points; and
- Determining acceptable levels of performance under certain conditions that can be written into SLAs.