Testing complicated software systems can be a headache. I sometimes require that a test machine (server or client) be in a very specific known state prior to executing tests. I'll need to reset the state of the machine before executing more tests. I would be better off if I had several PCs to execute automated tests; running multiple scenarios in parallel drastically reduces turnaround time for testing. It would be helpful to be able to remotely monitor the progress of the test machines during evenings, weekends, or even just to save a walk down the hall to the test lab.
I doubt that I’m the only one to face these issues while testing software. Fortunately, virtualization can help with the above-mentioned problems.
Virtualization has been around almost as long as mainframes. In the past twenty five years there have been several attempts to bring virtualization to the Unix and x86 platforms. DESQview, released in 1985, allowed multiple MS-DOS applications to run simultaneously but never took the world by storm. Today we see affordable, multi-CPU machines that have clock speeds greater than 3.0 GHz. No longer an odd or temperamental option on the x86 platform, virtualization is ready for primetime use, particularly in production environments thanks to ease of management, load balancing, and failover.
Most medium and large organizations are looking into virtualization or already implementing it. There are several commercial and open source virtualization tools available, but VMware Inc. looks to be the current market leader.
VMware’s four products—VMware Player, VMware Workstation, VMware Server, and VMware ESX Server—allow a single computer to host multiple virtual x86 computers simultaneously and transparently. Each virtual machine (VM) appears as a separate PC. An entire operating environment is encapsulated into a set of files that resides on a physical server. Each VM has a unique registry, installed software, BIOS, MAC address, IP address, etc. VMware Workstation is installed on top of a host operating system such as Windows for use on the desktops of individual testers and developers. VMware Server is also installed on a host operating system but runs in the data center. VMware Server is a free option for users new to server virtualization technology. VMware's ESX Server software is used when performance and reliability are critical, such as in production environments. VMware Player may be the most useful for testers. In addition to being free, it allows a user to run dozens of "virtual appliances"—VMware’s term for a "fully pre-installed and pre-configured application and operating system environment"—which are freely downloadable from VMware.
Using either Microsoft's Remote Desktop Connection tool (included with XP) or a proprietary client from VMware, you connect and log in to your VM from your usual PC or terminal. The remote VM's desktop appears in a window and can be manipulated like a physical machine. A single user can connect to multiple VMs simultaneously, manipulating each as needed.
Your department may have a single server with two or even four CPUs. It is likely that this powerful machine is underutilized—CPU and RAM usage may average single digits to host files and run simple tasks. According to an article in InfoWorld, Sun Microsystems has estimated that most production servers are only 15 percent utilized. If VMware (Server or ESX Server) is installed, your server may host as many as six individual VMs, each running a separate task (testing, development, regularly scheduled jobs, etc.) This approach allows you to leverage your hardware resources much more effectively and economically. Take advantage of these unused CPU cycles to avoid purchasing new hardware as often.
Testers are keenly aware of the need for