A lot has been written about the cloud over the past few years, and rightfully so. Whether you're looking to extend an existing application or build something entirely new, using cloud-based resources can save you time and money. For example, you often only pay for the cloud resources you consume, but with peace of mind that additional capacity is there to meet spikes in demand. This alone is helpful for startups or agile software groups looking to get started with application server hosting, big data processing, or database implementation without having to buy and set it up themselves.
However, the benefits don't end there. There are real advantages to moving your dev/test efforts to the cloud regardless of your application deployment or the size of your organization. From cloud-based testing to developer collaboration, in many ways, the cloud is a much better alternative to manual testing with your own infrastructure build-out. Let's dive in and look at 10 of them now, with examples where applicable.
- Cheap and easy test bed creation, reconfiguration, and tear-down.
The cloud offers a near-instantaneous way to create a test bed without the cost and effort involved to build out the infrastructure yourself. In addition to the savings in hardware and labor costs, most public cloud providers offer metered subscription models where you only pay for what you need, when you actually use it. Beyond cost savings, with the cloud you can easily reconfigure or entirely decommission your virtual infrastructure, or clone environments for parallel testing efforts.
- 24-hour access to resources.
Your cloud-based resources are available for testing by multiple teams around the clock, as opposed to potentially sharing access to existing in-house infrastructure off-hours. This includes global access to QA teams in different time zones or geographic regions, allowing for more test coverage in a 24-hour period.
- Consistent dev/test tools setup for existing and new staff.
Using cloud-based tools to support your development and QA staff activities results in a consistent and shared tools environment. This removes the burden of installing and maintaining software for each member of your staff, and helps new team members get up and running to contribute and test almost immediately.
- The cloud promotes collaboration.
In addition to dev/test tools, cloud-based collaboration and communication tools enable better collaboration for both local and remote teams, and include chat-like communication, continuous integration, and continuous testing with reporting.
- Multi-environment and multi-platform support.
This benefit has two perspectives. First, cloud-based testing doesn't require special skills to build out specific infrastructure (Windows or Linux, and so on). Second, it allows you to test platform-specific features and environments, such as browser-OS combinations, much more quickly and easily.
- The cloud enables DevOps.
It's almost as though cloud and DevOps were made for each other. For instance, the cloud enables the following DevOps benefits: the configuration of similar, if not identical, development, test, and production environments; easy and rapid deployment, redeployment, and reconfiguration of applications and services; the automation of deployments, testing, and reporting; remote monitoring from multiple locations; quick and easy experimentation, and temporary customer access for feedback or to perform A/B testing.
- Simulate users or devices.
With the right cloud vendor and environment for your test bed, you'll have tools and capacity available to simulate or virtualize large numbers of users, mobile devices, clients, requests, and so on to test your back-end software.
- Perform rigorous performance testing.
Testing application performance is more feasible as you can quickly scale cloud usage up, even temporarily, and then scale down or shut it off entirely. With the cloud, there’s no need to commit to large hardware purchases or long-term hosting commitments for occasional performance testing requirements.
- Mobile device simulation/emulation.
Some cloud-based services provide the ability to test various mobile device types, configurations, and screen sizes, as well as large numbers of devices for scalability and performance testing. This is related to point seven above, but more specifically, this point refers to the various device types and form factors.
- Serves as proof of concept.
For some organizations or user bases that are hesitant about porting or building an application in the cloud, moving dev/test to the cloud is a good first step. It also serves as an excellent learning tool for those that will be affected first and foremost by the cloud: your development, IT, and QA organizations. In the end, theyll understand the cloud's capabilities, security, strengths, and weaknesses for your particular application and user base before it affects real users, and they can apply this knowledge going forward.
- More thorough testing.
Although I said I would give 10 reasons for testing in the cloud, here's a bonus reason: you can more easily test often overlooked items such as disaster recovery, the effects of transient connectivity, monitoring and administration, and more. In many ways, without the cloud, testing these capabilities might not even be possible, or at least not easy.
These are just some examples of the benefits the cloud brings to the development and testing of software, particularly when it comes to the Web and mobile support. Some may resonate more strongly than others depending on the application you're testing. Regardless, cloud-based testing holds enough promise that it warrants a closer look, and is something you should try for yourself.
Eric Bruno is a writer and editor for multiple online publications with more than 20 years of experience in the information technology community. He is a highly requested moderator and speaker for a variety of conferences and other events on topics spanning the technology spectrum from the desktop to the data center. He has written articles, blogs, white papers, and books on software architecture and development topics for more than a decade. He is also an enterprise architect, developer, and industry analyst with expertise in full lifecycle, large-scale software architecture, design, and development for companies all over the globe. His accomplishments span highly distributed system development, multi-tiered web development, real-time development, and transactional software development. See his editorial work online at www.ericbruno.com.