Virtual Server 2005 makes software testing more effecient

While that sounds like a press release tagline, it's the honest truth.

For those of you not familiar with Virtual Server 2005, read this review or the Microsoft Virtual Server site

Some of these features are not unique to Virtual Server, but are useful nonetheless.

  • Simultaneous Virtual Machines:  I can run many Virtual Machines at the same time, all on one Virtual Server, as long as I have the RAM available to support it. This is nice because as I'm doing various tasks throught the day (bug investigations, test development, test runs), I can have more machines than I actually have to do these tasks.
  • Web Interface: This is really handy for letting others use my virtual machine, as well as for accessing multiple Virtual Servers from one machine (I barely log into one of my machines. I just access the Virtual Machines it's hosting through the web interface). I had an interesting experience yesterday as I saw 2 different developers debug an issue on my machine. Previously, this meant the developer would be sitting at my machine, preventing me from getting any work done on that machine. Now it simply meant that I could watch them debug using the web interface, while I carried on business as usual on the REAL machine. It's easier to set up than remote debugging, as well.
  • Better than Imaging: As one who has tried many different solutions for maintaining multiple OS's on the same machine (dual/triple boot, Power Quest Drive Image), this is by far the most efficient. Not only is fast to switch between machines (since I can run them simultaneously), it's also great for having a wide array of OS's available at my fingertips, even if I don't have the RAM available to have it running all the time. And when I'm done dirtying up the machine with my tests, I simply roll back to the “pristine“ state. Goodness.
  • Fully Utilizing Processors: In my testing, I do test runs that only utilize one processor, even though I have a dual proc machine. I also have several different “flavors“ of this run, where different configuration options are set. Using Virtual Server, I can fully utilize the second processor by having the runs running on separate Virtual Machines. Virtual Server (and the OS) take care of the load balancing for me (although there are options to tweak this behavior)
  • Undo Disks: It's easy as pie to make updates to the Virtual Machine. Simply go back to the “pristine“ state, add your updates (say, from Windows Update?) and tell Virtual server to commit undo disks. Now your “pristine“ state has the latest updates. This is much less painful than maintaining a drive image with the latest updates.
  • Library of VM's: One of the test leads on my team has developed a Virtual Machine library, where I can simply copy a zip file to my machine, unzip it, set a few config options, and voila!  I've got myself a new Virtual Machine. Multiply this savings by everyone who uses the Virtual Machine library, and it's easy to see how virtual machine technology can help your bottom line.

There is not much that I dislike about Virtual Server, but there are a couple of issues:

  • Lost Changes: Sometimes, when the machine is rebooted, or there's a power outage, all the stuff that I was working on is lost. The next time I start the VM, I will be in a “pristine“ state again. This can be pretty painful, depending on what you're doing. Maybe this was just a bug that I hit...
  • A Little Too Easy: I mentioned that it was easy to make updates to the “pristine“ state. Well, I once accedentally clicked on the wrong item in the menu, and my “pristine“ state was now not so pristine. I had to destroy the Virtual Machine and start from scratch (which was not so bad, thanks to the the VM Library). Virtual Server warns you every time you're about to delete data, but it doesn't warn you when you're about to update your “pristine“ state.

Overall, the benefits I see far outweigh the cons. I'm still a beginner when it comes to virtual technology, and I can't wait to learn more about it.