Stability testing is a system testing with the intended load under real conditions, which is distributed over a long period of time in order to check the behavior of the system with significant loads.
The main purpose of stability testing is to indicate changes in consumable resources, time of an application response during a certain time. Therefore, the duration of the tests does not play a primary role. More often, this type of testing is used to define the response of an object in an artificial environment for a specified period and at a certain threshold. All the data obtained during the stability test, after being analyzed and they are used to optimize system performance.
Let’s suppose we have a system in which is expected (or known) on the average N users simultaneously. A tester has a task to evaluate the performance and efficiency of the system under the expected load. Our goal is to simulate similar load and evaluate the performance of the system during certain time. In this case, we will carry out the stability testing for the load in N users, sometimes increasing (decreasing) the figures to 10-15%.
Why all this is necessary? It often happens that in a short period of time the system is stable and predictable, but with prolonged usage applications may experience different problems.
An example may serve an old bug of Firefox browser. If you leave a browser for an hour with 10 tabs open that were filled with dynamic content, nothing bad happens. But if you repeat this procedure for a longer period, for example, a day, we will get a completely paralyzed computer because Firefox will “eat” all the free RAM. Luckily, the bug has been already fixed and the browser’s work was optimized. However, exactly for such occasions the stability testing is needed.
Sometimes stability testing may take even a couple of months before releasing a software product. External stimuli are applied in parallel, such as high temperature, differential power, etc . But such methods are more relevant to the methods of stress testing.