If a decade ago, someone would have given you a software and asked you to find out if it is working properly or not on all the operating systems and browsers available then you would have used only one available method. Set up hundreds of computers with every possible combination of operating systems, browser, and browser versions, and then perform the testing of the software. But with the advancements in technology and softwares, this task has been simplified to leaps and bounds. One of such technology that allows you to test software on a localized platform is Virtualization.
Virtualization is creating a virtual version of any Operating system, storage, server, network, network resources, or desktop rather than the actual version. You can visualize this as a completely different system running inside your own computer. With the help of virtualization, you can develop a system of your required memory, OS, browser, and other specifications on your hardware system. Operating system virtualization allows a single piece of hardware to run multiple operating systems at the same time keeping the hardware unaware of the fact that the operating systems being run are virtual.
Virtualization is a big field. You can quite literally segment and virtualize your solutions and infrastructure on multiple points. The major types of virtualization techniques that you will encounter in day to day life include:
- Network Virtualization
- Storage Virtualization
- Server Virtualization
- Data Virtualization
- Desktop Virtualization
- Application Virtualization
Whenever a tester encounters a testing project he does so in a series of steps that involve creating a test environment, testing the application, and reporting the results. This setup take some time. You may argue that most of the time of a tester is expected to be spent on testing rather than creating a test environment, setting up configurations, creating backup files, and configurations. But it is necessary for the tester to be sure that the infra is running smoothly, so that in cases such as system crashes, the files are not lost. But what if we develop a virtual environment which automatically creates the backup files and in case if the system crashes then it will not be the actual operating systems that crashes, just the virtual environment created on the actual hardware. This method of creation of virtual desktop or environment on the actual hardware system is called as ‘Desktop Virtualization’.
So, now the question is how does virtualization help the testers in Software Testing?
While performing software testing a tester needs to test the software/application on all the possible combinations of memory, OS, browsers and browser versions. Doing this with the actual hardware will not be possible as it will add up to the company’s cost and manual efforts. Virtualization here provides a possible solution by giving the tester the environment where he can actually test the software on all possible configurations on a single hardware system. He can very easily customize the system according to his requirements of different configurations. This not only helps the tester to test in various environments but also to protect the actual hardware system from potential bugs and crashes. If the virtual system crashes it will not affect the actual system and within few minutes a new virtual environment will be created.
Virtualization can effectively reduce man-hours and increase efficiency if properly applied to software testing. It provides the following benefits to the software testing :
With Virtualization, you can achieve server consolidation of 10:1 virtual-to-physical servers. Or you can run 10 virtual servers on a single physical server. This adds more numbers of users which can test the same software.
It also allows you to run the latest application technology on the old physical systems by selecting the latest system configurations.
Virtualization also prevents your physical system from any bugs, if encountered while testing. Some bugs can be very harmful to the system that they can even crash the software and it becomes almost impossible to track where they entered into the system and they can keep on smashing your system again and again. Virtualization provides you a major relief in this context as if the tester is performing testing on a virtual environment and a potentially harmful bug is encountered then it will crash the virtual desktop and the physical desktop will remain unaffected.
You can save a lot of your important time by applying virtualization in software testing as it prevents you to install a numerous number of libraries on your desktop. Also, hours of re-installation can be saved in case of the system crash by just copying the virtual image.
Use of virtual system makes your software available at any place for testing. You have to select the configurations and test the system. This also provides flexibility and easy portability of your software system.
Virtual system eliminates the complexity of hardware and software devices and drivers to leaps and bounds. Thus reducing the hardware requirements to an enormous level.
Virtualization helps you to secure your data as in case if the server fails the application stays up and the data can be easily recovered.
The major problems that you’ll face while virtualizing software testing can be:
- Unsupportive drivers Some virtualization drivers may not be supported in your system.
- Out of memory If you are running short of memory then the system will not be able to save backup files and screenshots(if generated) by the virtual machine.
- Low performance Even the virtual machines provide you with everything you need but its performance will be lower than the actual machine.
Virtualization is evolving continuously and is proving to be a helping hand for software testing. If we properly implement this technology in our real life, we can avoid most of the problems and simplify our testing methods.