5 Tips to Accelerate Development and Testing

How can dev/test teams fine-tune the agile development life cycle so they can deliver applications faster?

By Sumit Mehrotra, Director of Product Management, Skytap.

What's causing the most headaches for development and test teams these days? Time -- or lack thereof.

These days, dev/test teams are under constant pressure to release quality features as quickly as possible, and survey results from earlier this year confirm what most in the IT shop already know: "Delivering applications faster" is the number one priority -- even ranking higher than reducting application development costs.

How can dev/test teams fine-tune the agile development life cycle so they can deliver applications faster?

For many software development companies, the answer lies in the cloud. Utilizing the cloud for dev/test can minimize cycle times and costs by allowing development and test teams to spin up multiple development stacks and test environments quickly and as needed.

This agility is also helpful when IT teams must support multiple, older versions of a particular application. For example, when a critical security vulnerability is identified, developers are forced to stop current work and switch to the previous release, resolve the issue, test that all is in proper working order, deploy, and then switch back to the current project. On the contrary, teams that utilize the cloud can pause current work, fix bugs, and test on multiple versions without the hassle of making changes to the initial project or application.

Could such cloud-based solutions enhance agility for your dev/ test projects? Use these five tips to accelerate your development and test cycle using the cloud.

Tip #1. Streamline provisioning using component templates.

Your applications are architected using multiple components and one or more developers work on each component. If development of the application can be componentized, so can the provisioning of the application. You can create provisioning units of components of your application using ready-to-use virtual machines (VMs). For example, VMs can be created for the database tier, the Web and/or the application-server tier. Specific VMs can be combined, on-demand, to easily provision a given version of the entire application.

Keep an updated library of stable releases of application components during development so any member of your team can use the components to provision the latest application stack.

Tip #2. Create application templates for one-click provisioning of the entire application.

Tip #1 gives you the flexibility to create your own application stack on demand. On many occasions, you just need a one-click deployment of the entire application stack. For example, you may want to provision the beta version of the application to apply fixes to a new feature. Provisioning an entire application is a complex process that includes provisioning the individual components, creating network connections, defining firewall policies, etc. Performing these tasks repetitively is a drain on team productivity.

The cloud lets you create templates of the entire application and deploy the entire application with one click. The scale of the cloud allows your test team to reduce testing times by provisioning multiple copies of any given release and running tests in parallel. Populate your library with application templates for each external release and each major internal milestone of your application.

Tip #3. Reduce bug resolution time by collaborating on reproduction of complex bugs and issues

Dev and test teams can make progress on customer issues if they can reproduce (repro) the issues themselves. Otherwise, the issue becomes a "hunch" and keeps bouncing from person to person until someone accidentally hits a consistent repro. Precious time is lost due to the "it works on my machine" syndrome. The time loss is even greater if the teams are halfway across the world.

In the cloud, teams can work together on the same provisioned instance of the application template. Bug fixing and testing can occur iteratively. If a repro is achieved, you can investigate the problem on the same environment. The live repro can also be saved as another template so that you can instantiate the application with the repro, apply the fix to it, and test the fix. Meanwhile, further testing is not blocked because parallel instance of the application can be provisioned without losing the "live repro."

Tip #4. Share your new release with your customers.

Finding and fixing issues earlier in the development cycles saves considerable time and money. Utilize your customers as an integral part of validation for new features and bug fixes. Having customers visit your premise for such testing is not always logistically possible. Sending the latest version of your application to your customers can result in setup errors, especially in a complex application. Provisioning your application for a large number of your customers and having them remotely access it can be prohibitive.

The cloud offers virtually limitless scale and is accessible from anywhere in the world. You can provision any version of your application for any number of your customers with one click. You can share these environments with your customers, contractors, and consultants located anywhere in the world. Collaboration also allows you to observe the customers' interaction and capture issues in real time.

Tip #5. Streamline the customer support pipeline by automating the creation of repro issues. You would like to innovate in your application at a rapid pace, moving from one release to another quickly. However, with each release there is an added responsibility to support customers using a previous release, sometimes for several years. When a customer's issue is reported, developers must switch out of their latest development stack and recreate the stack for an older version of the application. This switch is costly in terms of time and resources.

Using the previous tips and leveraging the features of the cloud, you can streamline this process. Software engineering teams can automatically provision the environment (tips 1 and 2), repro the issue and share it with the developer and tester (tips 3 and 4). Once the fix is delivered and tested, it can be validated easily with the customers as well (tip 4).

Cloud platforms can significantly streamline the development, testing and support phases of the application lifecycle, and delivering innovations in the application faster provides more value for customers.

Sumit Mehrotra (@sumitsayz) is director of product management at Skytap (@Skytap), a cloud automation solutions provider. He is an experienced industry veteran with over 10 years in program management roles at Microsoft.