Cloud testing is a testing approach in which the power of the cloud is harnessed. This is mostly done, either to decrease the amount of time taken to test or to simulate real world traffic for an application. Moreover, in order to meet the scalability demands of high traffic web applications, tests need to scale as well.
Matt Heusser mentioned that in old days test labs were prevalent. These used to take a lot of space and had a variety of machines.
It took up hundreds of square feet of space and contained between five and twenty computers. Each computer had different combinations of system software. We would have to install, test, and then possibly re-image the machine for the next test run.
Today the scenario is much different. With the help of tools like VMware Fusion, it is possible to run various combinations on the same machine. Likewise, it is possible to run several instances of the server on the same physical device. Thus, creating the test environment could be as simple as a one line command. In order to reduce the time the tests take to execute, Matt recommended the use of distributed computing.
Imagine splitting the test suite into a dozen tests (or a hundred) and spooling up fifteen computers, each to take a test, report back with results, and then take another test. If you max out a virtualization tool, you can rent space from a cloud-hosting provider for pennies per processor-hour. A test run only takes as long as your slowest test.
With approaches like Model driven test automation, it would be possible to execute various scenarios in parallel in a very short period of time.
Jim Ensell suggested that cloud has had a positive impact on Agile development. According to Jim,
Developers and QA managers will continually want to provision cloud resources for multi-platform testing, run unit and functional tests in parallel, and execute effective load testing. These are loads that are optimal for public cloud use, as they tend to use cloud resources in spurts and have variable demands over time. The utility pricing model works extremely well for this type of cloud use as well.
Devcentral mentioned that the scale of the web applications today needs to be tested with a similarly scaling testing infrastructure. Thanks to the cloud, an organization would be saved from prohibitive exposure to costs for setting up such an infrastructure.
Automated Internet-scalability for applications could do the same – at a fraction of the cost – for Internet-scale testing solutions. So all you need is a cloud-deployable load generation client, a couple of cloud computing environments, and a way to control those distributed clients in such a way as to generate the scale necessary to push your application and infrastructure to its limits.
However, going to the cloud for testing comes with its own set of worries.
According to Matt a tester, just like the development team needs to ask “what happens if the cloud fails?” Other important questions would include the backup strategy, restoration strategy and strategy to recover from test data loss.
Inspite of a small set of challenges, cloud provides a powerful platform for testing. The key lies in identifying the need and developing a strategy to make efficient use of the enormous resources available at a fraction of the cost.