Vladimir Averkin, Sunil Kutty & Usman Janjua, Microsoft
A modern app is a connected app – distributed, spanning multiple machines. How do we simulate the varied execution environments for such an app? How to stage an app that requires multiple machines working together in a finely tuned, elaborately configured ensemble? How to deploy complex topologies repeatedly and reliably, support detailed configuration, and facilitate real-world testing simulation in a controlled lab environment? How do we accomplish all these with a self-contained module, which is independent of test execution details and highly pluggable with varying test execution infrastructure? We attempt to provide a solution based on virtualization and lightweight script-driven automation. Employing technologies of Hyper-V, virtualized storage, Windows PowerShell and Windows Management Instrumentation, we deliver a solution to automate deployment of complex multi-forest multi-tiered test topologies, with elaborate machine-level and cross-machine configuration, and a fully consumable topology definition. Hyper-V facilitates fault-injection and destructive testing on topology machines which are easily restored to states saved earlier. With the imminent evolution to centralized test-labs in distant cloud-farms, we are bound to face the challenge of decreasing physical access to machines and less control and flexibility of custom-created test environments. A lightweight, agile, scalable and extensible solution available in-house, capable of creating highly customized test environments in a rapid and repeatable pattern is bound to prove very useful. An implemented concept of such a solution is what we are going to present here.