What is Stability Testing?
Stability testing is a non-functional type of testing which usually comes under performance testing. The main focus is to determine the stability of the software when it exposed to heavy load, stress and different environments. It does not verify the normal behaviour but the point when software crashes, which is known as the breaking point of the system. It is also referred to as soak testing and is time-based testing where performance measured over time. The load is applied to the system under test over a long period of time, which helps determine how stable the software is.
Why Should We Perform Stability Testing?
- Software developers have a fear of making a lot of changes in the system because they do not want to break the software. This fear is very well taken care of by stability testing.
Advantages of performing stability testing on the system under test
- Provides the limit of the data that could be handled by the system practically.
- Gives confidence in the system’s performance
- Determines the stability and robustness of the system under load
- Leads to a better end-user experience
Disadvantages of not performing stability testing on the system under test
- The system slows down with a large amount of data.
- System crashes abruptly.
- It behaves abnormally when taken to a different temperature or attached to the different voltage.
- Performance of the system decreases, which in turn can have bad effects on the business.
- To avoid all the above issues, stability testing should be carried out before giving a green flag for pushing the system in the market, and since it is time-based testing, it is crucial to know the time limit required to carry out the whole testing process. We would not want to cross the testing deadline.
How To Perform Stability Testing?
Stability testing can be performed using tools (Automation) and also, manually tested.
- Let me explain this as an example.
The smartphone is a perfect example of stability testing. When the handset is loaded with the latest developed software, the first thing which is tested is booting, and then regression or smoke testing is carried out. Once the first level of testing passed, functional and non-functional testing is carried out. Functional includes execution of all the functionality related test cases and non-functional or performance testing includes load testing, stress testing, stability testing, and reliability testing.
Now for testing the performance, we have the following aspects to look at:
- Memory is 60% filled with data, and the system is tested for the performance.
- 0% of the memory is filled and then tested again.
- Tools like Load Runner is used to load the system and then test the stability.
- Automation scripts can also be run to fill the system’s memory and to test the performance.
Some of the examples are:
- Clicking on a particular button for 100 times, sending 1000 requests to the system at a time, pressing random buttons, open and close some downloaded applications, etc.
- Battery life and performance can also be tested; sometimes, the software loaded on the handset eats decreases battery life unexpectedly.
- The maximum allowed load is applied to the system both internally and externally, to determine the breaking point.
- Stability testing needs a proper test environment with required tools and structured approach for high effectiveness.
- If the system crashes while testing, then the time it takes to recover from the crash also determines the performance to handle negative scenarios.
Stability vs Reliability
Often people get confused about stability and reliability. They are quite different from each other, but they both come under performance testing.
For instance, we have an application which works perfectly, aside from the fact that it crashes every 5 minutes, but it’s up instantly without any data loss. That would be considered reliable, but not stable. I can rely on it for not losing any important data and working correctly even though it is not stable.
Check Also: Adhoc and Exploratory Testing
Like the internet is far from stable, we can see connections drop and reappear, packets collide and are lost, and all kinds of other unstable things happen. However, it’s pretty amazing how reliable it is given all the instability inherent in it. Someone might refer to a system as stable but unreliable if it is always up and running but intermittently produces incorrect results or occasionally loses data. When software is stable and also reliable, then it is considered as the high quality and performance software.
Software systems with simple architecture are considered more stable than software with complex architecture. Since simple architectures are easier to understand and modify, which in turn minimizes the time that is spent understanding the system, and making required changes, which maximizes the software stability. Time plays an important role in stability testing as a system which performs well for a long duration of time is considered as the high performer.