Today we will learn one of the many parts of the performance testing process – recovery testing.
Any system created can fail and there are very limited ways in which we can help the user not get affected by it. Recovery testing helps in creating those ways by testing the system and analyzing the results by putting the system under adverse conditions.
These conditions can be anything from a total system failure to a minute error. However, whatever the condition is, the system should be robust enough to overcome these situations and bounce back to the original condition. This quality is what makes any application successful in the market.
In this article, we will learn deeply about recovery testing, steps to perform it, advantages, and much more. So let’s begin.
What is Recovery testing?
Recovery testing is a type of testing that is performed to check if the system under test is capable of recovering from any application crashes or other failures or not. The system is forcefully made to crash to note its recovery rate or time.
This ensures if the system is safe to use even after some failures and there is scope for recovery. These failures can be inside the software or even due to external factors.
Some common failures might include- power failure, server not responding, signal loss, network issue, file not found, etc.
During the testing process, all these failures are simulated in the testing environment to create real-time scenarios and how the system would react in such situations.
Another motive is to keep the data intact. Any kind of failure should not affect the data of the application. To avoid such situations recovery testing is performed in the end during system testing.
Let us, deep diver, into the topic and understand the complete working of this process.
Life Cycle of Recovery Testing
There are 5 primary steps in the recovery testing life cycle-
- Standard operations
Initially, the system is at the default level. It is made to work just the way it is intended to. All the software and hardware functions work in the way specified in the required documentation.
- Disaster and failure occurrence
In this step, the system is tested to identify various failures. All these failures are simulated in a testing environment. The failures can be –
- Hardware failure
- File not found
- System crash
- Server unreachable
- Interruption in the standard process
- Physical conditions
- Power Failure, etc.
- Interruption to Standard Process
All the monetary losses, business losses, opportunity losses, disrupted relations with the client, reputation in the market, etc. are included in this phase. Any company should be ready with a disaster recovery plan. This will reduce the interruption phase with minimal damages.
- Recovery Process
If a successful backup plan gets implemented then the company can get on a quick road to recovery. The recovery process helps in backing up the data and other important assets from the interruption process.
This will also lessen the time, effort, and cost of the recovery phase. There should be a team dedicated to helping the company from the interruption phase.
- Rebuild phase
In this last step, all the configured files and folders are rebuilt to retrieve the lost data. Proper documentation is required for a step-by-step reconstruction of the business.
Recovery testing example
Let’s try to understand recovery testing with the help of real-world examples.
- We can simulate a network failure by unplugging the cable over which data is being received. If after plugging the cable the data starts getting received from the same point, this proves the software has a good recovery rate.
- Another good example could be, try downloading a file through wi-fi. Now try moving away from the wi-fi to a no-network place. Now to check the recovery process, get back to the same place having wi-fi network. If the files resume downloading from the same point then the recovery rate is good.
- During multiple sessions on your computer, suddenly remove the power supply of the system. If after restarting all the applications and web pages get reloaded then the system is damage-proof.
In a similar manner, a lot of common failures need to be tested to verify the recovery rate. Some of these include-
- Power failure
- System failure
- Missing files
- Database overload
- Network issues
- Connected device not responding, etc.
Steps performed in recovery testing
Following steps should be performed to obtain optimum recovery testing performance.
- Recovery Analysis
Before starting the recovery process it is important to analyze the system’s ability to recover. This can include the system’s capability to allocate additional servers or CPUs, or the effect of failures and their solutions.
- Preparation of test plan
In this step test cases are designed with respect to the analysis done in the previous step.
- Preparation of test environment
The result of the recovery analysis phase decides the test environment in which the recovery testing has to be performed.
- Maintaining Backup
The next step is to maintain a backup of significant data related to the software. Now, this backup can be achieved in various ways-
- Backing up data at various locations
- Backing up at a single place
- Online/offline backups
- Tracking backups
- Recovery Personal Allocation
Once all the data is backed up, next is to allocate recovery personnel who are well informed about the recovery testing process.
The last step is dedicated to documenting each step that was performed, as mentioned above. This is to do performance testing of the system in case of failure.
Advantages of Recovery testing
Following are some of the many advantages of recovery testing
- The primary benefit of the recovery phase is to detect bugs and fix them. This improves the system’s quality.
- Recovery testing also helps in eliminating unnecessary risks
- Performance-related issues can be easily identified through recovery testing.
- It helps in stabilizing the system/application.
- In case of failure, backup data is always maintained.
Disadvantages of Recovery testing
- It is a time-consuming process.
- There is a need for a skilled person who knows the system inside out.
- There are few cases where the potential risks and flaws are uncertain.
- Not all bugs can be found even after rigorous testing.
- Recovery testing is expensive to perform.
In this article, we learned how recovery testing helps in the better understanding of the system. It also helps in determining if the system meets the requirements even after a failure.
Also, one should keep in mind that failures are inevitable and despite performing rigorous testing failures can never cease to exist.
Kuldeep is the founder and lead author of ArtOfTesting. He is skilled in test automation, performance testing, big data, and CI-CD. He brings his decade of experience to his current role where he is dedicated to educating the QA professionals. You can connect with him on LinkedIn.