Test Environment Management
Test Environment Management
Test environment management is the process by which test machines (clients, servers, or
both) are managed. There's a lot of data center management happening here. It's super-critical
to have clean machines when running automated and manual tests; some groups I've worked
with in Microsoft have thousands of physical or virtual machines (VMs) for running tests -enough that it could require multiple full-time resources to manage them!
Modern lab management tools abound -- probably the best tool for managing labs is the use
of virtual machines managed by a central tool. Microsoft's recent release of System Center
Virtual Machine Manager (SCVMM) is a great tool for doing this -- it automates
provisioning of machines, allows for state saving and quick image recovery, and provides
centralized management of all of this. Coupled with enterprise-quality server hardware, test
organizations can win significant reductions in both manual resource requirements and power,
cooling and floor space. Note that the biggest constraint I have seen in virtualized test labs is
hard disk space; most organizations find they need to invest either in a SAN or some very serious
RAID array technologies. A knowledgeable virtualization vendor contact will help you determine
the correct hardware for you.
Other vendors (VMware, for example) also offer competitive virtualization solutions.
So how would you implement this? First you need to capture your requirements -- do you need
to be cross-platform, or do you support/test only on one platform? Do you require complete
automation, or can some manual intervention be tolerated? How many virtualized machines do
you need, and what are the required hardware specs? Can you run the automation you need in
this environment?
Once you have researched and selected your virtualization technology, you need to ensure
that the vendor supplying the technology also offers sufficient management control. Can
you deploy VMs remotely with a touch of a button? Can you save state? (This is an
incredible feature for testing -- when you find a bug, you can just "freeze" the machine's
state until your developer has time to investigate.)
When you have all your requirements figured out, and you've selected your vendor, implement
the solution. Factor in a serious amount of time for your test team to really figure out the
environment and the new tools (expect as low as 50% efficiency during the first couple of
weeks). Over the course of a few weeks, though, your productivity should end up netpositive.