0

I want to setup a dedicated test computer that can be restored to a specific system state. The reason for that is that the software tests to be executed on that machine include the installation process. Software can certainly be uninstalled, but that often does not revert the whole system back to its original state.

I often run into problems like software failing when being installed on a freshly setup operating system or reinstalling software giving different results than newly installing it.

In short, I want to test the software deployment.


I don't always want to start from scratch by formatting the drive and installing the operating system. The used operating systems are Windows. I want to be able to easily restore the state of just having installed the operating system, for example.

I found 3 ways of achieving that:

  1. Use some cloning/mirroring software to "capture" the state of the hard drive.
  2. Use the system restore point.
  3. Use virtual machines.

How do these compare in terms of reproducibility and convenience for software tests?

  1. Cloning drives seems to be the most straight forward approach.
  2. With the system restore points, I am not sure if they revert the entire system. Will this also remove windows updates etc? It seems to be a rather convenient option to be able to restore the system this way from within the system itself.
  3. Virtual machines seem to give the best out of both worlds. However, the tests involve connected hardware and adding the virtualisation as another layer might be another source for change of behaviour of the software.
1

How Windows System Restore worked have changed over time. But System Restore doesn't restore as much as drive cloning and VM would, in particular, System Restore by design tries to avoid reverting your personal files. This means if the system under test modifies any of user's personal files, you won't be able to restore them using System Restore. System Restore will revert drivers, windows updates, and user-installed programs to the checkpoint. Also note that System Restore will automatically be deleted by Windows after it expires, even for user-created checkpoint. System Restore would be a very poor method if you want reproducibility.

VM is easily the most reproducible. It's simple, easy, and fast, and you don't depend on the condition of the physical machine as much, which means you can much more easily replicate the testing process with other team members. Additionally, with VM you can create incremental snapshots, which will save you signficant amount of disk space if you create a lot of snapshots. The only tricky part here is you need to connect peripherals hardware, I'd suggest trying to crack that first. In all the popular hypervisors you can setup bypasses for various hardware, so the host operating system doesn't interfere with what the guest machine and the hardware are doing.

As an extra layer of assurance, you may want to do a multi pronged approach. Use VM for most of your day to day testing, but also setup a disk clone for final testing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.