Let’s face it, testing multiple browsers on multiple systems isn’t very practical. But it's still a fact of life for the web developer. What I’m about to show you is how I manage testing in multiple browser versions.
About three years ago, I used to do all of my development on a Windows laptop. I had an old Mac G3 tower, an Ubuntu server, and a Windows 2000 server. All of these were separate—and rather ancient and noisy—machines that sat in my office. I would have IE7 and the latest version of Firefox on my machine. I would hop onto my Windows server for IE6 testing, onto my Mac for Safari testing, and ... well, okay, I didn’t test any browser in Ubuntu.
When I got my Mac, I decided to try out VMWare Fusion. There wasn’t anything in particular that drove me to try it over Parallels but it seemed to get mentioned more frequently and so I just went for it.
The Virtual Machines
I started off by installing Windows XP. After which, I installed Ubuntu and more recently, I installed Windows 7 and also the emulator for the soon-to-be-released BlackBerry PlayBook.
Admittedly, my Ubuntu VM doesn’t get much love. I used it for testing Adobe AIR applications when I was still working on them and also test in Firefox, just in case something interesting comes of it.
I tried to install Windows Vista but it took forever to install and never seemed to work quite right. Thankfully, Windows 7 installed just fine and performs quite well in VMWare.
I was surprised to discover that the emulator for the upcoming BlackBerry PlayBook actually runs in VMWare Fusion. It made it quite easy to set up, although I’m doubtful how often I’ll be loading this one unless I start getting into some development.
Snapshots
Many people I know either use something like IETester in their single VM or install multiple VMs, one for each browser that they wish to test with. In the case of using IETester, there are some known limitations which may impact accurate testing. In the case of multiple VMs, you’ll need to have the hard drive space for multiple operating systems being installed on your system.
I took another route and realized that I could take a Snapshot of a particular point in time and then launch that snapshot whenever I wanted to. By taking a snapshot while the system is running, I can load a snapshot without having to wait for a virtual machine to boot up. It’s already booted. Loading a snapshot just copies the state of the virtual machine back into memory. I’m usually back up and running from a snapshot within 15 seconds.
The amount of space that a snapshot takes on the hard drive is also much smaller than a virtual machine: it’s just the size of memory, which may be between 512MB to 2GB, depending on VM configuration.
With IE6 on my machine, I took a snapshot. Then I installed IE7 and saved that as a snapshot. Then I installed IE8 and saved that as a snapshot. I used to keep various versions of Safari, Chrome and Firefox in those different VMs but I kept forgetting which snapshot had which alternate browser. So, I’ve started saving the different versions of those browsers as separate snapshots, as well.
This approach has come in quite handy. For example, I needed to test a localized version of Chrome for China. I was able to install and test the browser without worrying about it overwriting or impacting my main configuration. Once I was done with it, I could just delete the snapshot or load another snapshot without saving my current configuration.
Wishes
My biggest wish right now is to be able to install Mac OS X as a virtual machine, too. Unfortunately, Apple’s licensing doesn’t allow it. (Although, there are some hacks on the Internet that can get around that.) I’d love to have copies of 10.4 or 10.5 that I could load up and test.
Anyways, this is how I use VMWare Fusion. How do you handle your cross-browser, cross-platform testing?