Recovery testing is a software testing in which it is tested whether the software can recover itself from any interruption, system halt, power failure, network error, hardware failure, software failure, deadlocks, etc and roll-back to its original state or the state when the interruption occurred without losing any important data.
Recovery testing is very important as it is solely related to the security of the software. A software without the capability of recovering itself from an interruption may not be of any use in some important cases.
Let us consider some examples of software recovery.
When the software has repaired the browser (Google Chrome) opens automatically and the URLs which were loaded at the time of interruption, are again loaded automatically, and exactly the same page is shown again. We call it - The software has recovered its state.
When the power is connected and the machine turns on, the software is loaded within a few seconds, though its an embedded OS. The software starts the process from the 26th packet and continues up 100 packets as was input initially before the power failure. We call it - The software has recovered its state.
But in this case, the installation should start exactly from the point where it was interrupted. This is called recovery property of the software even during installation.
The dimension of recovery is many. There is a numerous factor which is seen when a recovery testing is carried out. Let us see what are the different situations when the recovery properties will be used.
Rollback is a property of a software in which the software moves back to its normal state or the initial state when during the state change it faces any problem. This is called the consistency of the software.
Rolling back to its normal state or initial state is one of the major properties that good software must possess. Say for example: While performing a banking transaction due to an error in the server side, the transaction did not complete and the request is canceled and the balance is restored back in the account.
Now, the balance amount which is restored into the account should be displayed in the interface too, otherwise, the customer will never know about the update.
Data recovery is one of the major concern of recovery of the software. The data used by the software has to be kept in storage media or any local server during any operations so that in case of failure, the data can be retrieved back from the storage and the deleted or lost data can be restored back.
For this to happen the software must be able to back up the data to the internet in the background when during the software run.
This is a property of the software to continue with the data transfer when the network connected to it is detached and connected back soon.
Let us consider an example when we start to download a file from the internet. Meanwhile, the internet cable connected to the computer is disconnected due to some reason and the download is paused.
When the internet is connected back, by simply clicking into the resume option we can start the download again exactly from the point where we left.
This is also a recovery property of the software. Directly no data is seen to be recovered because the file downloaded before the disconnection is saved into the system and so after the connection.
But the interesting fact is that there are different sessions, attributes, protocol ID, etc which are also data, and are responsible for the resumption of the download.
Recovery Testing is one of the main concern of Security. There are different websites and software related to the government, police, and hospitals which may crash due to many reasons, and the data lost cannot be compromised.
Therefore, there should be a strong backup and recovery procedure for those software and websites which can make the software alive once recovered.
In today's world, there is a numerous account which is created by the users, starting from email to different social sites and so on. When one invest more time on using a particular account, the users' data are stored in the relevant server for that account.
Now, if the user wants to delete the account and tries to recover the account back on a later period of time, then all the data are restored in his/her account automatically or an option is provided.
There are scenarios when an interruption in the file transfer can corrupt the file itself. Therefore, this is the function of the software that, all the transfer attribute are saved from time to time so that when the transfer is resumed again, it starts from the same point and the file does not get corrupted.
There are different ways of performing Recovery Testing. There are different scenarios and situations when the recovery may be needed. Before starting any kind of recovery testing, we must assure first that, the system (hardware and other software) are configured well.
Let us see some recovery scenario, then we will see how the recovery test case is created and performed.
Let us consider a file transfer between two systems using some application software using some Application Layer Procotol.
Now, the software is designed in such a way, that during the transfer all the transfer attributes such as sync-object, sender-id, receiver-id, activity-log, etc are recorded by the software. Now when the file-transfer stopped by disconnecting the cable, it stopped, did not show canceled.
When the cable is connected again, the transfer again started exactly from the point it was interrupted and the file was completely transferred. Now, when the file is opened, it shows some error. The file has been corrupted and has become obsolete. This is the problem.
The connection recovery was carried out successfully, but due to some lacking in the software, the file got corrupted.
Steps to carry out recovery testing : (Subject to change as per scenarios)
This is a simple example of recovery testing. As stated earlier that there are different scenarios of testing. And different situations which the testing can be carried out.
As was stated earlier, there are different ways of carrying recovery testing. Let us consider a simple example and let us see how a recovery testing test case looks like:
As we have seen in the test case, the internet browser was able to retain the download details, but failed to initiate the process at the point it was expected. Every time when the internet got disconnected, the progress parameters were saved but, when the internet was restored, the download started form first.
Even when the internet was interrupted after the 99% download, and restored, the file started to download from the beginning. Therefore, the software could not maintain its properties of recovery.
There are different connections related to a software. Like, the internet, data transfer cable, wifi, radio connections, etc. These connection are used for the different purpose, with a single aim of connecting the software with the external world.
Now during any interruption in file operation or any operation in which there are data transfers through the connection may push the software into a state of incompletion, corruption, asynchronization, etc. which may also load to losing the file or turning it into corrupt one.
Damage of servers is possible when there is any natural disaster or a sudden break down of the storage in the servers. In case of the damage in the servers, the data which are relevant to day to day life should be accessible and therefore there must be different back-up facilities provided by the server.