Open In App

Recovery Testing in Software Testing

Last Updated : 08 Jan, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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 :

  1. 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.
  2. Test Plan preparation – Designing the test cases keeping in mind the environment and results obtained in recovery analysis.
  3. Test environment preparation – Designing the test environment according to the recovery analysis results.
  4. 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.
  5. Recovery personnel Allocation – For the recovery testing process, it is important to allocate recovery personnel who are aware and educated enough for the recovery testing being conducted.
  6. 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.

Types of Recovery Testing

  • Database Recovery Testing: Evaluate the system’s capacity to recover from corrupted or malfunctioning databases. In order to test how well the system can restore the database to a consistent and useful condition, it involves intentionally destroying or damaging it.
  • Load and Stress Recovery Testing: Determine how effectively the system bounces back from variables that affect performance, including heavy loads or stressful situations. It helps in determining if the system is capable of handling higher loads and in the event that it cannot, how soon it will resume normal operation after the load is dropped.
  • Crash Recovery Testing: Determine how well the system bounces back from a hardware or software failure. To make sure the system can resume regular operations without losing data, it can involve unexpected shutdowns, abrupt power failures or a sudden halt of services.
  • Security Recovery Testing: Examine the system’s resilience to security lapses, illegal access, and other security-related events by conducting security recovery testing. It guarantees that the system can recover from security breaches and helps discover loopholes in the security procedures, reducing the impact of any unauthorized access.
  • Data Recovery Testing: Evaluate the system’s capacity to restore data following an unplanned disruption or failure. To make sure that data backups, restoration procedures and recovery mechanisms are efficient and dependable, this might involve planned data loss scenarios.
  • Environment Recovery Testing: Examine the software’s ability to adjust to changes in dependencies or configurations in the environment. It guarantees that in the event of modifications to the underlying structure or environmental circumstances, the system can recover and go on operating as anticipated.

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.

Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads