Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Continuous QA: Bridging Continuous Integration and Continuous Delivery

DZone's Guide to

Continuous QA: Bridging Continuous Integration and Continuous Delivery

This article takes a look at how continuous delivery and continuous integration are possible and where continuous QA fits into the equation.

· Agile Zone
Free Resource

See how three solutions work together to help your teams have the tools they need to deliver quality software quickly. Brought to you in partnership with CA Technologies

The only thing more agile than agile software development is continuous delivery. The two are not mutually exclusive, and in many ways, the latter starts with the former. In agile development, the goal is to shorten time between builds. Given the amount of maintenance and patching needed for software to stay secure and keep its market edge, this methodology makes sense. Developers can quickly release the newest software iteration on an as-needed basis because their processes allow them to.

Continuous delivery is similar in this sense, but it takes the concept to the next level. Software patches are immediate so that a deliverable is ready to go at any time. Let's look at how continuous delivery is possible and where continuous QA fits into the equation:

It Starts With Continuous Integration

The only way continuous delivery is possible is if processes are also continuous, and this is precisely what we mean by continuous integration. Every time new code is written or scripts are edited, they must be reported on. This is essentially what makes it possible for a build to be ready for market at any given time. How immediate these changes are reported on may vary slightly between firms, however, in its definition of continuous integration, TechTarget states that once a day or more frequently is a good rule of thumb.

"Now, the usual rule is for each team member to submit work on a daily (or more frequent) basis and for a build to be conducted with each significant change," according to TechTarget. "When used properly, continuous integration provides various benefits, such as constant feedback on the status of the software."

In other words, customer feedback loops are as close to immediate as possible. 

Continuous QA Brings It Altogether

Reporting on all code changes and incorporating them into the build account for continuous integration and make continuous delivery possible, but there's an extremely important middle step: continuous testing. QA management in a continuous environment must be at its most agile to ensure that a solution is always ready for market, and equally as important, that the deliverable is defect free. In this way, continuous QA is much like a bridge that ensures safe passage of software from the point of development to the point of release, and beyond.

Firstly, teams need an agile test management tool that supports real-time tracking of all projects. This is what makes continuous integration possible. It allows developers and testers to be on the same page at all times, and significantly reduces the chances of a communication snafu. From here, quality assurance teams can rely on agile testing methodologies to be able to vet developers' changes as quickly as they come. Automation integration can help with this by speeding up regression tests and if needed, unit tests. In this order, the testing life cycle can be expedited without having its value degraded. 

The key to continuous QA is a strong test management strategy paired with agile testing methodologies. The end result is a seamless transition from continuous integration to continuous delivery.  

Discover how TDM Is Essential To Achieving Quality At Speed For Agile, DevOps, And Continuous Delivery. Brought to you in partnership with CA Technologies

Topics:
continuous integration ,continuous delivery

Published at DZone with permission of Kyle Nordeen. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}