Stress testing gives a measure of the reliability of a software system. Stress testing reveals how long a system can remain stable without crashing under a heavy, stressful load. In other words, we can say that stress testing discovers the breakpoint where a system starts to become unreliable. It can also be said that Stress testing is a form of Load testing for discovering the conditions that will cause a system will crash. It is also called Endurance testing.
Why Stress Testing?
Stress testing is carried out to find out why the system crashed under the given stress. So a system recorded is as having successfully passed stress testing when it shows meaningful error messages to the user, while under heavy stress. Thus we can list down the following goals:
- If the system crashes under heavy load, there should be a meaningful error message to the user, saying what has happened and how they can recover.
- To make sure the system performs to its optimum level even when under heavy user load.
- To recover automatically from any failures or crashes.
- To make sure there isn’t any data loss because of the failure.
How does Stress Testing differ from Load Testing?
The goal of load testing is to find out how the system behaves under normal, expected user load whereas stress testing is carried out to find how the system behaves under extreme user load. Load testing is not intended to break a system, but the purpose of stress testing is to force a system to get to the point where the system breaks down and stops working.
Some sample scenarios of stress testing would be:
- When there is a large number of users who access login/sign up at the same time.
- When a number of users try to download a single file at the same time.
- A database shuts down when a large number of users are accessing it.
- Many users are accessing a website, hosted on a server, while a virus scan is initiated on the server at the same time.
- A huge amount of data is copied from the clipboard and saved on a web form by a large set of users at the same time.
- A huge user base simultaneously hits the ‘Add to Cart’ button on a shopping site.
Metrics to Monitor in Stress Testing
There is certain information that you need to ascertain from stress testing results. These include:
- Pages per second: It shows how many pages have been requested per second.
- Throughput: This shows the size of data received per second.
Measuring System Response
- Average Response Time: This refers to the average time taken to get a request back from the server.
- Time To the First Byte (TTFB): This is the time taken to receive the first byte of data back from the server.
- Page Time: This is the time it takes for a page to fully load.
- Failed Requests: Number of requests that failed to prompt a response back from the server due to issues at the server.
- Time-outs Hits: Number of requests which timed out waiting for the response from the server.
Stress Testing Tools
Stress testing uses a similar procedure to Load testing and Performance testing. Hence any Performance and Load Testing Tools can be used for this purpose, but using cloud-based testing tools with load injectors distributed across different regions of the globe are recommended since the demand for load generation in stress testing is huge. It would be hard to live up to this demand if you are using any on-premise tools.
Stress testing is aimed at monitoring the behavior of a software system under extremely stressful conditions. It also monitors system resources such as processor usage, bandwidth usage, memory usage, etc. under various conditions. Most importantly, stress testing monitors the ability of an application to return once more to a normal state. Showing prompt error messages to the user indicates that the system is reliable and has successfully weathered stress testing.