Friday, September 26, 2008

Virtualization benefits for QA

1 Introduction
Increasingly software development companies are focusing towards products that can run on multiple platforms and integrates well with the other applications. Early visibility of working software, Time-to-market and the quality of the product being a key concern has lead to a paradigm shift towards agile development methodologies. This demands availability of QA environment in early stages of SDLC.
The demand of early availability of complex QA environment has posed a major challenge related to the associated appraisal cost (cost of QA).
Virtualization overcomes this challenge by providing a mechanism that allows ability to simulate different environments and experiment with different scenarios, without significant expansion of hardware and physical resources.
This article discusses the benefits of virtualization for QA


2 What is Virtualization?
Virtualization is the creation of a virtual version of something, such as an operating system, a server, a storage device or network resources.
Using virtualization different operating systems and softwares can be configured in a single machine instance. This helps in testing the application against different environments and experiment with different scenarios, without significant expansion of hardware and physical resources. Any defects related to operating system or browser incompatibility can be detected in early stages of SDLC.

3 The Reality
By and large development shops are forced to buy servers for testing purposes. It results in organizations having plethora of servers that are utilized less than 20%. They're only required when the QA team needs to test a new release against a particular. The disadvantages of this approach are:
· Cost of hardware increase
· High server to staff ratio
· Reduced ROI
· As the cost involved is huge the decision to procure the hardware is generally delayed and the team has to wait long for hardware to perform real time testing.
· Difficulty in testing the software under varying hardware configurations E.g. to validate how the system works when memory allocated is increased or decreased.

4 Major Benefits of Virtualization
Development and Test Lab Infrastructure:
· Significant cost benefits can be achieved by Pooling servers, networking, storage & other resources and sharing them across development and test teams.
· It also provides on-demand access to a shared library of complex environment giving the developers and testers instant use of the resource they need.
· The server-to-staff ratio is greatly reduced and also helps in accelerating the development lifecycle.

Portability Testing
· A tester or developer can test the application for multiple platforms with a single machine.
· There is an additional advantage if developers perform the portability testing, the feedback cycle is shortened. If the code does working correctly, the developer knows what has changed since the last working build and can figure out what needs to be changed
· An additional benefit of this approach is that developers can develop for multiple platforms and multiple browsers with no additional purchase of hardware.


Platform Standardization:
· Virtual softwares allow varying of the hardware configuration available for use e.g. the amount of RAM available for use by an application can be increased or decreased to check the application’s performance under varying conditions. This helps in testing an application in a standard platform that has reduced resources and thereby helps in determining the memory requirements for an application to perform optimally.

Defect Snapshots
· Virtualization gives QA engineers an ability that they have historically lacked: capturing the entire state of the machine at the point where a bug manifests. This is possible because the entire VM can be saved at any time in its current state to a single large file. Once saved this way, the VM can be made available to developers who can now see for themselves how the problem manifests. At sites that use defect-tracking software, it is easy to place a URI to the saved VM in the defect report, and thereby greatly improve the quality of the information exchanged between QA and the development teams.

Centralized Configuration Management
· Complete virtual machine environment is saved as a single file; easy to save, move, and copy.
· Standardized virtualized hardware is presented to the application to ensure compatibility to the application to ensure compatibility

5 Virtualization trend in Software Industry
· Virtualization market will grow to $11.7B by 2011!
· More than three-quarters of all companies with 500+ employees today are deploying virtual servers.
· Customer satisfaction is high.
· Survey respondents currently using server virtualization technologies report that they expect 45% of new servers purchased next year will be virtualized.
· More than 50% of all virtual servers are running production level applications, including the most business critical workloads
· Source: IDC


6 Implementation approach
I would suggest the following approach for implementing virtualization in any organization
· Determine the Capabilities Your Organization Needs: Build a requirements matrix and determine the types of testing and usage patterns typically seen in your organization.
· Software for Virtualization: Some of the popular softwares for virtualization are:
o VMware
o Microsoft
o XenEnterprise
o Swsoft Virtuozzo
o Virtual Iron
Depending on the business and technical requirements at organizational level a choice of one of these can be exercised.
· Evaluate Total Cost of Ownership (TCO): Build a Total Cost of Ownership model. Be sure to include software, hardware, implementation, and administration costs.
· Conduct a Trial Project: Conduct a proof-of-concept or trial project using your short-list of solutions.
· Integrate into the QA Process: Once you’ve tested and selected your solution, evaluate your current test practices and update them to reflect the new virtual lab capabilities and invest in training your team before rolling out the solution broadly.

7 Summary
There are many good reasons to adopt virtualization. The cost and testing benefits alone (portability, verification of the correct platform, testing under constrained physical resources, etc.) make virtualization preferred option. On-demand availability and the defect-snapshot capability are additional productivity boost.

No comments: