James Thew - Fotolia

How does AWS fit into the application testing process?

Our on-premises environment makes QA difficult, as our resources are limited. How can a public cloud provider like AWS enable a more effective process to test applications?

Building and testing applications in AWS has several benefits. It allows enterprises to quickly and inexpensively spin up resources; the proper application testing process not only detects bugs but also ensures a new application is stable and ready for production. But while there's no single approach to quality assurance testing, there are a few considerations with using AWS in the application testing process.

An infrastructure is a principle challenge in software testing. Modern applications can be powerful and scalable, but few enterprises will invest the money needed to run the servers, network bandwidth and storage resources needed to fully test an app under load. In-house testing can be prohibitive, causing some IT teams to shorten or omit some high-end load testing.

This is why moving application testing to a public cloud service like AWS has become increasingly popular. Developers can rent thousands of Amazon EC2 instances and create huge Amazon Elastic Block Store (EBS) or Simple Storage Service environments. A test environment can run for just a few hours or days, perform the test and gather results and then pause or shut down once the test cycle is finished.

An inability to recreate problems can limit the application testing process. If a developer cannot reproduce an issue, he can't fix it. AWS Management Console features such as a BundleInstance request allows testers to create Amazon Machine Instances (AMIs) on demand. Once an AMI is bundled, uploaded and registered, developers can access the AMI and view the parameters, data and other factors that led to the bug.

The AWS API and Command Line Interface tools support test automation. These tools allow developers to automatically create and configure test environments, connect databases, run scripts and even use continuous integration methods to automatically run a test suite on each successful build. When the application testing process requires a database, an admin can use Amazon Relational Database Service instances preloaded with a test data set. A developer typically will duplicate a single database to ensure each test cycle uses the same data.

Perhaps the most noteworthy caveat of software testing in AWS is the close interrelation of compute and storage. Testing will generally require EBS instances for storing any changes made to EC2 instances during runtime. Developers must use the EBS file system and configure the test setup to connect the correct EBS and EC2 instances and preserve the latest EC2 state during the testing process. Without this real-time storage, any runtime changes made to an EC2 instance during testing are lost once the instance is shut down.

Next Steps

DevOps on AWS automates app deployment

Don't pass on AWS testing

Must-read AWS application development tips

Dig Deeper on AWS infrastructure

App Architecture
Cloud Computing
Software Quality