Getting Up to Speed with Cloud Application Testing
There are plenty of ways to use cloud computing for your enterprise applications, but if you’re going beyond Software as a Service options, chances are high that you’ll want to test your cloud application before deploying it to a live user environment. Because cloud is such a malleable term, “cloud testing” can be confusing too. Let’s clear up what exactly needs to be considered when you launch a cloud testing initiative.
To start, you’ll need an application that you want to place in a cloud server (also known as a virtual machine or VM). What makes a cloud application different from a standard app? Obviously, it has to run on virtual hardware. The entire software stack should be mobile—you can package up your storage and app components and move it between VMs or data centers. Inherent to cloud computing is the sharing of physical server resources, so your cloud app should not require dedicated hardware in order to function properly. Most cloud apps are accessed via standard network protocols or a web portal in a browser. They often have their own APIs and take advantage of other APIs in order to tie various services together.
Now that you have your app ready to roll, you’ll need a service provider for a host. Learn the difference between public, private, and hybrid cloud options and decide what makes the most sense for your app.
Cloud-native applications don’t have many pieces that are different from standard apps when it comes to testing, but you’ll need to be sure to think through and test the following.
Application Performance in the Cloud
You’ll want to configure a virtual machine in the same cloud environment that will eventually host your production app. If you chose a public environment, remember that the underlying hardware is being shared with other users, so you need to make sure that performance – at various scales – is acceptable. If your application ties into other apps, whether in the same cloud, a different host, or in your on premise data center, include a cloned copy of them in your load testing.
Various monitoring and visibility tools are available from almost every cloud provider to allow you to measure vCPU, RAM, storage, and network activity and consumption. Scale up your resources and vice versa in order to see how the app responds under heavy and lighter loads and different configurations. Consider your budget while you are testing. Scaling on demand is useful, but the more resources you consume the more you’ll be charged. Know how many resources you can afford under your budget and when you might need to limit access, load balance with another data center, or otherwise control your application’s consumption.
Try some test and capacity testing, pushing at least twice your expected usage to see how the application handles a larger load. If it fails, do you have a failover mechanism in place to spin up new VMs and redirect traffic?
Application Security in the Cloud
The cloud is secure. We’re not just saying that because we sell it. Because cloud providers have to offer uptime and a secure environment, chances are they’re putting more resources and employees towards security than your in-house IT team. But you do need to be aware of what is your responsibility vs. the responsibility of the cloud provider.
Generally, the virtualization platform, network perimeter, and external attack vectors are protected by the provider. However, your app, operating system, and data stores must be secured by you. That means you must practice strict access control, encryption where necessary, and network and access monitoring. When you test your application, run through some of the best practices for penetration testing to see if there are open areas for attack.
Similar to the load testing mentioned above, if your cloud servers fail, how fast can you recover? Are you creating regular snapshots or implementing a disaster recovery plan? What is your recovery point objective and recovery time? Be sure to test your backup solution thoroughly. Do at least one full restore to see if complete functionality returns. Test to see how much data you might lose with one week vs. one day old backups. If your backups are offsite, consider latency and bandwidth issues. Large transfers can be pricey, so consider both onsite and offsite backups alongside your VMs.
If you have truly gone all-in on the cloud, your application will take advantage of high availability and scalability and has its own distinct testing requirements. App components are spread across various VMs, so you should test all of them in isolation and in concert. Otherwise, cloud testing is pretty similar to traditional application deployment.