Recovery Testing in Software Testing
Recovery testing is a type of system testing which aims at testing whether a system can recover from failures or not. The technique involves failing the system and then verifying that the system recovery is performed properly.
To ensure that a system is fault-tolerant and can recover well from failures, recovery testing is important to perform. A system is expected to recover from faults and resume its work within a pre-specified time period. Recovery testing is essential for any mission-critical system, for example, the defense systems, medical devices, etc. In such systems, there is a strict protocol that is imposed on how and within what time period the system should recover from failure and how the system should behave during the failure.
A system or software should be recovery tested for failures like :
- Power supply failure
- The external server is unreachable
- Wireless network signal loss
- Physical conditions
- The external device not responding
- The external device is not responding as expected, etc.
Steps to be performed before executing a Recovery Test :
A tester must ensure that the following steps are performed before carrying out the Recovery testing procedure :
- Recovery Analysis –
It is important to analyze the system’s ability to allocate extra resources like servers or additional CPUs. This would help to better understand the recovery-related changes that can impact the working of the system. Also, each of the possible failures, their possible impact, their severity, and how to perform them should be studied.
- Test Plan preparation –
Designing the test cases keeping in mind the environment and results obtained in recovery analysis.
- Test environment preparation –
Designing the test environment according to the recovery analysis results.
- Maintaining Back-up –
Information related to the software, like various states of the software and database should be backed up. Also, if the data is important, then the backing up of the data at multiple locations is important.
- Recovery personnel Allocation –
For the recovery testing process, it is important to allocate recovery personnel who is aware and educated enough for the recovery testing being conducted.
- Documentation –
This step emphasizes on documenting all the steps performed before and during the recovery testing so that the system can be analyzed for its performance in case of a failure.
Example of Recovery Testing :
- When a system is receiving some data over a network for processing purposes, we can stimulate software failure by unplugging the system power. After a while, we can plug in the system again and test its ability to recover and continue receiving the data from where it stopped.
- Another example could be when a browser is working on multiple sessions, we can stimulate software failure by restarting the system. After restarting the system, we can check if it recovers from the failure and reloads all the sessions it was previously working on.
- While downloading a movie over a Wifi network, if we move to a place where there is no network, then the downloading process will be interrupted. Now to check if the process recovers from the interruption and continues working as before, we move back to a place where there is a Wifi network. If the downloading resumes, then the software has a good recovery rate.
Advantages of Recovery Testing :
- Improves the quality of the system by eliminating the potential flaws in the system so that the system works as expected.
- Recovery testing is also referred to as Disaster Recovery Testing. A lot of companies have disaster recovery centers to make sure that if any of the systems is damaged or fails due to some reason, then there is back up to recover from the failure.
- Risk elimination is possible as the potential flaws are detected and removed from the system.
- Improved performance as faults are removed and the system becomes more reliable and performs better in case a failure occurs.
Disadvantages of Recovery testing :
- Recovery testing is a time-consuming process as it involves multiple steps and preparations before and during the process.
- The recovery personnel must be trained as the process of recovery testing takes place under his supervision. So, the tester needs to be trained to ensure that recovery testing is performed in the proper way. For performing recovery testing, he should have enough data and back up files to perform recovery testing.
- The potential flaws or issues are unpredictable in a few cases. It is difficult to point out the exact reason for the same, however, since the quality of the software must be maintained, so random test cases are created and executed to ensure such potential flaws are removed.