Stability Testing – What Why How?

Have you experienced slowing of your computer or your mobile after a certain apps or software are downloaded on your system? I know that’s annoying and sometimes system crashes when you are trying to perform some actions on it. In this article, we are going to learn about Stability Testing – a non-functional time based type of testing which determines the behavior of the software under stress or in certain environments like different temperature, voltages and memory usage.Let’s start with its definition.

What Is Stability Testing?

As I mentioned earlier, it 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 is 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 a time-based testing where performance is measured over time. Load is applied to the system under test over a long period of time, which helps determine how stable the software is.

Stability Testing

Why We Should 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 by the stability testing.

Below are the main disadvantages of not performing stability testing on the system under test:

  1. System slows down with large amount of data.
  2. System crashes abruptly.
  3. It behaves abnormally when taken to different temperature or attached to different voltage.
  4. 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.

Below are the advantages of performing stability testing on the system under test:

  1. Provides the limit of the data that could be handled by the system practically.
  2. Gives the confidence on the system’s performance
  3. Determines the stability and robustness of the system under load
  4. Leads to a better end user experience

How To Perform Stability Testing?

Stability testing can be performed using tools (Automation) and also, manually tested. Let me explain this with an example. Smart phone is the perfect example for stability testing. When the handset is loaded with the latest developed software, first thing which is tested is booting and then regression or smoke testing is carried out.Once the first level of testing is passed, functional and non-functional testing are 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 following aspects to look at:

  1. Memory is 60% filled with data and then system is tested for the performance.
  2. 80% of the memory is filled and then tested again.
  3. Tools like Load Runner is used to load the system and then test the stability.
  4. Automation scripts can also be run to fill the system’s memory and to test the performance.
  5. 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.
  6. Battery life and performance can also be tested, sometimes the software loaded on the handset eats decreases battery life unexpectedly.
  7. Maximum allowed load is applied on 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 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 between 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 crashesevery 5 minutes, but it’s up instantly without any data loss.That would be considered as reliable, but not stable.I can rely on it for not losing any important data, and working correctly. Despite it is not being stable.

Like the internet is basically 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 a software is stable and also reliable then it is considered as the high quality and performance software.

Conclusion

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 system which performs well for a long duration of time is considered as high performer.

Leave a Comment

Share This Post