Virtualization and QA
by Al
Part of the work that I’m doing in QA here right now is focusing on virtualization technologies. This is kind of a project I’ve taken on in order to help create a good environment for our day to day testing.
Back when I first began doing QA work in the mid-90′s, most people involved would have a stack of machines next to or under their desk and a switch box. Tools would be used to wipe machines to a known good state before putting new builds of software on them. If people were really lucky (and moreso as time went on), they would have access to some nice tools, which as client-server imaging software, to automate a lot of this process of getting machines ready.
One of the nice changes over the last five years is the growing amount of virtualization technology being used. Companies like VMware and Parallels are making good businesses at it and there is a reason for it. At my last job, I had to test our software on many different configurations of operating systems and browser types in order to test that our web application was going to work well across the board. Instead of having the bank of machines that I used to have, I was able to do it all on a fairly beefy laptop by using VMware for my work.
Here in the QA group, we’ve been investigating what we want to do with virtualization. I know that we’ve had some discussion about having servers running virtual machines for the community to log into when they have time so that people have access to varied environments. We’re not quite up to that level yet but one of the things I’ve been doing is making a reference set of virtual machines available internally (unfortunately internally because of licensing issues with Windows) so that when a build comes out, we have stable and clean environments to quickly test on. From there, we are working on creating a variety of not-so-clean environments, because most people don’t run Firefox and Thunderbird in some kind of pure clean environment (my home machine is a mess) so we need to be able to test the builds in something more real. Our thoughts around this are being documented in an ongoing basis on the wiki.
If you have thoughts on any of this and the pros and cons of virtualization in general, I’d love to hear about it. Please take a look at the wiki page as well as the thoughts there are pretty preliminary also.

Comments
I’ve been using VMware for quite some time now for Mozilla QA purposes. I find it far more convenient to simply reload a VM from a snapshot so the OS is back to its original configuration so testing can be done on the same set of data as it was previously. My previous setup was using a dual boot method which got rather messy within a few days of testing Firefox trunk builds with the annoyance of switching between Windows and Linux constantly.
My only problem at the moment with virtualisation is the lack of memory in my machine to efficiently run more than one VM at a time although I’m hoping to get my hands on some extra memory in the next few days to resolve that problem. Aside from that minor inconvenience I find virtualisation a very useful and effective means for testing in different environments. Definitely the way to go for QA.
Let me know if you ever run into any problems with VMware or have any questions on how to set stuff up. I do the reference platform stuff on the build side; I think I got “stuck” with it because I worked at VMware before MoCo. :-)
Thanks! I may do that. I’ve just been happy to find out that they compress down well when zipped. I was afraid of eating up too much disk space storing these.
Does anyone have any hardware recomendations for taking a desktop vistualization to a more centralized VM infrastructure? I like th independance of separate systems for testers to use, but I also like the power that a centralized server can use. I see risks with a centralized server and turf battles over resources, and separate desktops being underpowered for certain VM environments.
I currently have a 450 Gb library of VMs that my users manually copy from tje library to VM systems when needed. Does anyone have any better ideas for how to make common VMs available and easily disrtibute them to test systems when needed?