Recovery Testing in Software Testing
Overview
Recovery testing validates the application's ability to retain the state of working after the breakdown of any sub-process. Recovery testing is critical for the organization as an interruption in customer experience can lead to a huge loss for any company. The restoration strategy is very important for quick recovery.
What is Recovery Testing?
Recovery testing is a non-functional testing type where the application is tested for its robustness. Recovery testing tests the ability of the software to continue working after a feature is failed. Recovery testing ensures the application can handle any disaster or data loss in adverse conditions. Maintaining regular internal backups and having a parallel execution path in case of failure is the key here.
Recovery Testing Example
For instance, for a website for education, users can signup for the site. They can use the comment section and update their profile. In recovery testing, the following case scenarios would be tested.
- If the user has entered an incorrect email address. And wants to update it. The user should be able to recover all the previous data.
- User tries to signup for the application, and in between, system failure happens. Entire data in the database must rollback.
- User can recover the password through a secured authentication route.
- User has the feasibility to disable the account. And on reactivation, data should be in the previous state.
Recovery Life Cycle Process
-
Validating Working of Normal Process: The first step is to validate the functional working of all the hardware and software components and evaluate the limit of the load hardware can take in. Then only one can evaluate the operational post-breakpoint parameters along with Retesting the software and doing integration testing.
-
Disaster Event Occurrence: The software is made to fail deliberately at this step. That is, hardware capabilities are pushed beyond calculated limits. For example, if the software can take a load of 10,000 people at a given time, then requests more than the capacity is provided. Software crashing also at calculated scenarios is done.
-
Failure of Operation: Observing the product's behavior during the disruption phase is critical. The operations failing and the order of failure are crucial as well. The disruption phase leads to major losses to any organization in terms of money, goodwill, and business losses.
-
Recovery Process: Setting up a backup plan for interruption is essential. For similar processes, offline download mode, cache, and session management are kept. Degrading video quality and giving warnings when the network is less enhance user experience. The application itself should handle all these.
-
Reconstruction of Normal Process: After the system or the feature is crashed and later has regained the normal configuration, ensuring smooth functioning becomes crucial. For example, Refreshing the module without asking the user directly but being handled at the backend pipeline.
Restoration Strategy
- To have a 24/7 recovery team of experienced developers.
- To maintain both offline and online backup.
- To maintain multiple backups at different geographical locations.
- To schedule a pipeline to maintain backups automatically.
Testing Procedure After Restoration
- Match the original documents with the recovered ones.
- It is equally critical to validate the order of recovery.
- Ensure the files are not corrupted or have issues opening.
- Lastly, run a script for comparison and generate the report.
Conclusion
- Recovery testing is a non-functional testing type where the application is tested for its ability to restore the operation after a system failure.
- Restoration strategy is critical for any application. Disasters could cause huge business losses.
- Organizations should have a 24/7 support system for recovery operations.
- After recovery, the documents and restoration order must be validated.