Testing, the ‘Cloud’ Way
Date: Monday , July 12, 2010
The Promise of the Cloud
Cloud computing is actively revolutionizing the traditional IT landscape. It is all about paying only for what you consume. It is a legitimate way for companies to significantly lower costs of infrastructure while increasing scale of operations.
Cloud computing promises to increase the speed at which applications are deployed, foster innovation, and lower costs, thereby increasing business agility. Forward-looking companies are now looking at this model to reduce infrastructure costs and simultaneously increase computational capabilities. Gartner has predicted that cloud computing will be the top most technology area IT should concentrate on in the year 20101. Compared to the beginning of 2009, the cloud computing landscape now is very different with a huge potential to change the face of IT for ever. Over the next five years, IDC expects spending on IT cloud services to grow almost threefold, reaching $42 billion by 2012 and accounting for 9 percent of revenues in five key market segments2. More importantly, spending on cloud computing will accelerate throughout the forecast period, capturing 25 percent of IT spending growth in 2012 and nearly a third of growth the following year.
Businesses today require a fast, reliable, and secure IT infrastructure to flourish. Small and medium enterprises are generally unable to meet the huge capital outlay that such an IT setup requires. Therefore, these organizations generally opt to migrate to the cloud, especially since it enables them to focus on their core activities, instead of worrying about maintaining their IT infrastructure.
The Role of Testing
Migrating to the cloud has its own set of challenges and risks such as data integrity, security, privacy, reliability, scalability, business acceptability and manageability, which can be mitigated through adoption of additional procedures. To overcome these challenges, thorough testing of applications becomes mandatory. Traditional methods of testing on-premise software will not provide sufficient coverage,
Various types of testing required for a cloud set up include:
. Functional testing
. System integration testing
. User acceptance testing (UAT)
. Non-functional testing
. Security testing
. SOA testing
. Performance testing
. Load testing
. Stress testing
. Scalability testing
. Compatibility and interoperability testing
. Disaster recovery testing
Several other variables like multiple browser platforms and versions, operating systems, and hardware further complicate the situation. It is evident that a one-size-fits-all approach would not work in such a scenario, and may indeed prove to be a recipe for disaster. Rather, comprehensive cloud testing acquires prime importance that cannot be understated.
With the scope for cloud computing increasing, there is a spike in demand for cloud testing as well. As software applications become more critical for business changes, the software development process is becoming more agile, distributed, and non-cohesive. This, along with the emergence of a global delivery model, has resulted in smaller distributed teams operating independently for development, testing, and integration. To support this kind of development processes and the need for continuous testing, organizations spend a major part of their budgets in setting up test environments and automated tool licenses. Cloud testing leverages cloud computing resources to increase testing functionality and significantly decrease costs. The biggest saving on account of testing in the cloud is achieved through the conversion of capital expenditure (capex) to operational expenditure (opex). Huge initial investments in building capacity are replaced with need based sourcing of infrastructure, quality tools, and human resources leading to multi-tenant, efficient, and certain utilization. With cloud testing, enterprises have unlimited resources at their disposal, paying only for what they consume, only when and if they consume it.
Cloud testing is practiced in the industry in two ways:
Testing cloud: This is to perform testing of the applications, which have migrated or are to be migrated to the cloud so as to ensure that their performance, security, and reliability match or exceed expectations in view of the changing delivery methods
Testing using the cloud: The second one is to leverage the cloud-based hardware infrastructure and computing resources to perform traditional testing like function, performance, load, stress, security, and compatibility testing for regular, on-premise applications
Both the approaches enjoy widespread popularity, and there are numerous vendors and service providers who are providing these types of platforms and services to both consumers and organizations.
One of the most common statements made by experts about cloud computing models is that somehow the economic crisis of the last few years is pushing enterprises to use cloud to save money on IT operations cost. Tightening budgets have opened the minds of enterprises everywhere to the possibilities of cloud computing. A key attribute of cloud computing is how it changes economics. You only pay for what you use, and rates are typically lower than the equivalent cost of building and supporting these services internally. There is a growing trend towards cloud enablement of applications or hosting applications on the cloud, but companies also need to understand the risks associated with it and adopt proper mitigation plans, the core of which is testing. The above model also works well for businesses that are not clear about the business model by reducing the entry barrier. This provides a great value for customers who can consume these products and services at a reasonable price point.
Cloud computing represents a shift towards delivering dynamically scalable IT resources as services over the Internet. These services typically share some key attributes, such as elasticity, resource sharing, multi-tenancy, self-service, and pay per use. Three types of services can be delivered via Cloud Computing:
1. Software as a service (SaaS)
2. Platform as a service (PaaS)
3. Infrastructure as a service (IaaS)
In addition, there is the concept of public cloud and private cloud. All these kinds of clouds need different types of testing, as traditional testing is not sufficient in a cloud environment. Enterprises need to have a better understanding of the way different types of cloud work, how they impact businesses and which testing approaches should be used for them. They need to adopt an end-to-end testing approach, starting from requirements to deployment, because each stage has different testing requirements.
Different Types of Testing during Cloud Enablement
Testing Using Cloud
With the availability of massive cloud infrastructure (servers / load farms) around the globe, some companies have started leveraging them for conventional testing activities, the most prominent one being Performance Testing of Web applications using cloud infrastructure. Prominent tool vendors are also aligning with this business model to provide the tools using cloud.
Performance testing is usually associated with huge capital expenditure due to investment on tools, infrastructure, and resources. Moreover, with the increase in the number of concurrent users, the costs of tools also increase exponentially. Due to this, most companies do not test applications for the expected number of users, resulting in their poor performance and huge investments on building capacities.
However, by leveraging cloud infrastructure, companies can eliminate the investment on infrastructure and tools. Additionally, it also provides for geographically distributed loads, which are similar to a real-world situation, rather than tool-simulated loads.
To sum up, the benefits of testing using cloud are:
• Elimination of upfront investments on tools and infrastructure
• Creation of real-world situations through simulation of geographically distributed load patterns
• Facilitation of on-demand performance testing for organizations
There are only a few services providers in the industry today that offer solutions for both testing of cloud and testing using cloud. To offer such services, companies need a deep understanding of the cloud environment, factors affecting the environment such as security, multi-tenancy, and compatibility, and more importantly, the requirements of cloud computing infrastructure providers.
The Road Ahead
Cloud computing became a buzzword even before it was defined. it’s a game changer in the way applications are delivered, managed, and integrated. With increasing focus on cloud computing technologies, cloud service providers need to equip themselves with the necessary capabilities in order to meet the demands for cloud testing. The importance of cloud testing is highlighted by a study conducted by the research firms The 451 Group and ChangeWave in which 1,771 corporate software buyers out of the 2,000 surveyed listed application testing and development as one of the top five uses of public clouds. Almost all Indian IT providers are ramping up competencies in the overall cloud computing space by forging partnerships with cloud providers like Amazon, Microsoft, Savvis, Vmware, and Google. These hosting and platform-based players themselves are being extremely proactive in pushing cloud-based deployments and are partnering with service providers to deliver end-to-end solutions. Analysts and technology advisory firms are of the opinion that the number of applications and the amount of content in the cloud now available to both consumers and corporations have grown to a critical mass and cloud computing is the way to go. A cloud computing based IT services model would make all the more sense for small and medium-sized enterprises and would be an example of business model innovation that will set a new precedence in the IT industry.
Cloud computing is clearly worming its way into the enterprise, especially as a testing and development environment and as a platform for less than critical applications and services. Organizations can leverage cloud based testing for higher flexibility and lower cost. 'Testing as a Service' or TPO (Test Process Outsourcing) provides organizations an option to set up a virtual test lab without any upfront investment in lab infrastructure, automation tools licenses, and skilled resources. The pay-per-usage pricing models can help in controlling IT budget and maximizing ROI. The rapid pace at which the cloud is being adopted by users and corporations alike provides the next level of opportunity for IT service providers to ramp up their skills and address the demand, which is increasing by the day. Testing teams should equip themselves with viable strategies to mitigate the risks and issues associated with cloud computing by covering additional capabilities available in the cloud computing environment.
1. Source: http://www.gartner.com/it/page.jsp?id=1210613
2. Source: http://www.idcindia.com/events/CloudComputing/cloud.asp
The author is Head - Managed Testing and
Web Technologies, Sonata Software