In this section, we are going to understand recovery testing, which is an important part of Non-functional testing and used to test how soon the application is recovered from the hardware crashed or fails.

And we also learn about its process, why we need to perform the recovery testing, who perform the recovery testing, example, advantage and disadvantage.

Introduction of Recovery Testing

Recovery testing is testing where the test engineer will test the application to check how well the Software or the application recovers from disasters or crashes.

It is one of the most important types of non-functional testing categorized under performance testing.

In other words, we can say that the recovery testing is done to verify how fast and better the application can improve or learn the capability of the software after it has gone through any software, hardware crashes or network failures etc.

It is the software's required failure in a diversity of ways to confirm that recovery is properly performed.

While executing the recovery testing, we should first take the backup and save it to a secured location to keep away from any data loss if the data is not recovered successfully.

The software/ hardware is forcefully failed to verify the following aspects while executing the recovery testing:

  • Lost data can be retrieved completely or not.
  • It fails to verify that the fraction of scenarios in which the system can recover back.
  • It is failing to verify that if any other additional operations of the software can be done or not.

Note: A good software application is the one that recovers in no time from crashes, hardware failures or other such types of failures.

Example of Recovery testing

Let us see a scenarios where we can understand how the recovery testing is performed:

Scenario 1

Suppose we are using the browser, let say Google Chrome, and the power goes off. When we switch on the system again and re-open Google Chrome, we get a message window that displays whether we want to start a new session or restore the previous session.

So, in this situation, while we are restarting the system while a browser has a definite number of sessions and check if the browser can recover all of them or not.

Some of the most common failures which need to test for recovery:

Here, we list out some of the most frequent failures which needs to test, while performing the recovery testing:

  • External device not responding
  • Network issue
  • Wireless network signal loss
  • Power failure
  • Server not responding
  • Database overload
  • External server not reachable
  • DLL file missing
  • Physical conditions
  • Stopped services

Why recovery testing is important?

The recovery testing is significant if we are developing the application for a user who will decides the difference between success and failure for our organization. T

Therefore, we need to develop software, which has enough consistency and recoverability.

When do we need to perform the recovery testing?

  • Whenever we have a release or upgrade, we need to review the system-specific recovery testing.
  • To perform recovery testing, we need to ensure that everyone is included in each other's roles and responsibilities.
  • Critical business functions can normally run when there is a failure or disaster.

Who implements Recovery testing?

The Recovery testing is a part of Business Continuity Planning (BCP) and involves a host of roles. The following concerned persons can perform the recovery testing:

  • It can be executed by the Production Service and Service Management teams who have the knowledge and experience in managing such outages.
  • The Technical SMEs recognize the core systems maintained by the hardware.
  • The recovery testing can perform by the IT operations teams which manage servers and other hardware infrastructure.

Recovery testing life cycle

The recovery testing life cycle includes the various phase, which is as follows:

  • Standard operations
  • Disaster and failure occurrence
  • Interruption to Standard Process
  • Recovery Process
  • Rebuild Process

Let's understand them one by one in details:

Recovery testing
  • Standard Operations

In the standard operations phase, we will establish the system according to the Software and hardware requirements, where the particular system can execute as expected. It is used to define the way system is planned to work.

  • Disaster and failure Occurrence

In the next phase of recovery testing, we can identify the several failures of the system and those failures are as follows:

  • Power failure
  • Hardware failure
  • Physical conditions
  • Server not reachable and many more.
  • Interruption to Standard Process

It leads us to losses in terms of business, financial losses, relations with the client, reputation in the market, etc.

  • Recovery Process

In recovery testing, the recovery process is used to keep away from the most important losses in companies and have backup plans with minimal impact on the interruption system.

  • Rebuild Process

The last phase of the recovery testing process is the rebuild process, which contains the already specified documents and processes that have to be followed. And in this phase, all configuration files and folders are restored to retrieve the lost data.

Steps to be performed before implementing a Recovery Testing:

The following steps need to be performed before executing the recovery testing process to ensure the performance of recovery testing:

Recovery testing

Step1: Appropriate recovery analysis

Before implementing the recovery testing, we should make sure that the proper analysis has to be done to verify the possibility of recovery. The recovery analysis is necessary for our better understanding of the recovery-related modification, which can impact the system's working.

To complete the appropriate analysis, we can observe the below aspects:

  • The system's capability to allocate additional resources such as servers in case of critical failures or additional CPUs.
  • How to track the failures.
  • The effect of the failures, failures that can occur, and solutions to the failure.

Step2: Preparation of Test Plan

In the next step, we will prepare the Test cases according to the analysis results, which we discussed in the above step.

Step3: Preparation of Test environment

After preparing the test cases, we moved to our next step to design the test environment as per the recovery analysis results.

Step4: Keeping the Back-up of the data

After the preparing the test cases and test environment, we can go to our next step to keep the back-up data related to the software, for example, several states of the software and database.

Similarly, if the data is significant, then we can keep the backup data depending upon the criticality, with the help of the below strategies:

  • The backing up of the data at one or various locations.
  • Single back up or Multiple back-ups.
  • Automatic set up for back up at every n minute, for example, 20 minutes.
  • Online and Offline backups.
  • To perform and track the backups, we can have a separate team.
  • Allocation of resources for recovery testing.

Step5: Recovery personnel Allocation

Once the backup of data is sustained successfully, we will have enough knowledge for the recovery testing being conducted and allocate the recovery personnel.

Step6: Documentation

In the last step, we will document all the steps performed before and throughout the recovery testing because, in case of a failure, the system can be tested for its performance.

Advantages and Disadvantages of Recovery testing

Advantages

Some of the major benefits of performing the recovery testing are as follows:

  • One of the most important advantages of recovery testing is to recovers system quality because whenever the bugs are detected and fixed, it improves the system's quality.
  • The recovery testing will help us to remove risks.
  • It helps us to decreases the risk of failure of the software product in the market.
  • When we implement the recovery testing, we can easily identify the performance-related issues and fix them before the software product goes live in the market.
  • The system is more stable, reliable and bug-free once we performed the recovery testing.

Disadvantages

Following are the disadvantages of recovery testing:

  • Recovery testing is a time-consuming process as the test cases are random.
  • It is an expensive process.
  • A skilled person is essential to test the recovery testing; if the untrained test engineer implements the recovery testing, they should have all the data for testing: data and backup files.
  • In recovery testing, we may not detect all the potential bugs in a few cases because sometimes the issues are unpredictable.

Overview

In the above recovery testing tutorial, we have understood the numerous recovery testing characteristics, which helps to learn whether the system or program meets its requirements after a failure.

Recovery testing is necessary if we have any project that overhauls business processes or technology. In case of failures it helps us to validate that recovery.

The occurrence of executing recovery testing is in reverse proportional to the impact of failure on the system. Therefore, recurrent testing plays an important role in minimizing the impact.

As we know that the failures can happen anytime due to many common reasons, such as recovery testing removes critical bugs, which makes the system ready to recover from those failures.