BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
The pace of software deployment in the cloud is increasing. Rather than accumulating a large number of bug fixes and feature enhancements for months, developers can roll out new cloud applications in a week or even a day. But this quick turnaround requires rapid application testing prior to deployment. Google Compute Engine and Microsoft Azure provide tools to ensure new cloud applications work as expected.
Developers should test cloud applications in a controlled environment that replicates the production environment as much as possible. For on-premises app development, the cost of maintaining a separate test environment that is equivalent to the production environment is often prohibitive. But in the cloud, the marginal costs of implementing a test environment are low with highly automated administration.
Testing cloud applications with Google
Google Compute Engine is known for performance, but its growing list of services for coding, testing and deployment will likely boost its appeal to software developers. These services and tools include Google Deployment Manager, Cloud Trace, Cloud Monitoring and Cloud Security Scanner.
Google's Deployment Manager is a template-driven service that deploys resources in the cloud. With this service, cloud administrators can define a test environment with virtual machines, storage, load balancers and other resources.
Testing cloud applications provides an opportunity to collect performance data, as well as perform unit tests. Google's Cloud Monitoring service generates alerts and populates performance dashboards in a production environment. It's also helpful when performing stress tests on new application code. Small changes to frequently executed code can have a significant effect on overall performance. However, these impacts are not always obvious, especially with distributed systems. Through performance testing, developers can identify potential problem areas.
The Cloud Traces service in Google App Engine collects performance data on remote procedure calls to App Engine services. This helps identify long-running and inefficient operations. The Cloud Security Scanner, also for Google App Engine, identifies known vulnerabilities, such as cross site scripting and mixing of HTTPS and HTTP traffic.
Testing cloud applications with Microsoft Azure
Microsoft Azure also offers testing and deployment tools for cloud applications. Visual Studio Online, for example, is a software development platform that manages application code and tracks developer tasks. Visual Studio supports agile development models with continuous integration, planning and bug-tracking tools.
Microsoft's Visual Studio Application Insights is a new service in preview mode that will likely become a key cloud testing and monitoring service. It allows developers and cloud administrators to monitor ASP.NET and Java applications running in Azure or other platforms. The service can also monitor mobile apps, such as those for Android and iOS, as well as Mac OS X and Windows applications.
Microsoft's Azure Automation service reduces manual, repetitive tasks. The service works with Windows PowerShell scripts and streamlines integration with other PowerShell applications. Using the DevOps concept of a run book, along with graphical authoring tools, Azure Automation provides a high level of abstraction when working with cloud resources. Like Google Deployment Manager, Azure Automation provides tools that help developers and cloud administrators rapidly create consistent testing environments in the cloud.
In addition to Microsoft and Google services, developers can use well-known and mature application testing tools, such as Jenkins.
Of course, tools are not the only requirement for cloud application testing. Well-defined procedures are also essential for success. For example, developers should follow standard practices to check code in and out of a code repository. Test administrators should be able to pull the latest code from the repository and test it, as needed.
Developers should test frequently to identify bugs and performance issues early. Automation also reduces testing costs. Use cloud application monitoring tools to reduce the cost and time required to analyze results, especially with high-volume stress tests.
The major cloud providers frequently release new services. Some, such as code management and monitoring tools, are targeted at developers and operations support, respectively. However, both types are useful for testing cloud applications. As Google and Microsoft roll out additional services, consider how they could help your organization streamline testing operations and improve the content and quality of reported results.
About the author:
Dan Sullivan holds a Master of Science degree and is an author, systems architect and consultant with more than 20 years of IT experience. He has had engagements in advanced analytics, systems architecture, database design, enterprise security and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail and education. Sullivan has written extensively about topics that range from data warehousing, cloud computing and advanced analytics to security management, collaboration and text mining.
Going mobile with your cloud applications in a BYOD world
Preparing public cloud applications for hybrid cloud
Overcome common cloud applications migration issues
How do you create a workable cloud test strategy?