Software Testing In the DevOps World of Continuous Delivery
How software testing fits into Continuous Delivery and how it must adapt.
Join the DZone community and get the full member experience.Join For Free
Software development has always been a complex process, as teams must determine the best way to make their users' requirements a reality and deliver a program that successfully scales to their needs. As more devices and opportunities enter the mix, these workflows have become much more complicated with a slew of considerations to make and new practices to adopt for success. Agile testing methodologies, for example, have radically altered how quality assurance professionals execute test cases and how they interact with other teams throughout the development lifecycle.
Under the agile umbrella, DevOps has emerged as a beneficial new asset to teams. Not only does it actively encourage breaking down legacy silos, but it also promotes continuous improvements to app iterations. This speeds up time to market and can help build in quality when done correctly. In the DevOps world, continuous delivery is becoming a major priority, and teams will need to be prepared to test in this type of environment.
Defining Continuous Delivery
With all of the continuous trends, it can be difficult to determine where one ends and the next one begins. Continuous delivery involves building software in a way so that it can be released to production at any time. Industry expert Martin Fowler noted that you're doing it correctly if your software is deployable throughout its lifecycle, fast feedback is available at any time, push-button deployments are available on demand and your team prioritizes keeping your software deployable.
These ideas are all extremely different from the ones that teams are traditionally used to. Although they are accustomed to tight deadlines, being able to deploy a piece of software or a new feature at the drop of a hat is a significant feat. Despite these challenges, there are a number of benefits that can be realized including believable progress and reduced deployment risk. This will in turn substantially decrease the amount of time and money needed to make changes and ensure that the software is performing up to standards.
The Task of Testing
There's been a complete shift toward agile and fast practices, but that does not that mean everyone is able to keep up. If QA decides to stick with manual software testing efforts, there's no way to stay on pace with the quick developments. As SDTimes' Rob Marvin pointed out, even though there are no more deployment bottlenecks, quality should not be sacrificed as a result. Testers must be active throughout the entire process and ensure that efforts are being made to consistently deliver high quality using agile practices.
It's important to note that automation will be absolutely essential to ensuring continuous testing - and by proxy, continuous delivery. Automation integration helps give teams the speed they need while still placing a heavy focus on building quality into each project.
"That means you have to automate all the types of testing you're doing," Electric Cloud CEO Steve Brodie told Marvin. "The key is orchestrating the pipeline: It's one thing to have these silos of automation doing automated load or regression testing, automating builds or even deployments. But what you need to do is automate that whole end-to-end pipeline, from the time the developer checks the code, all the way through to production and deployment."
Choosing the Right Tools
Although you'll have automation on your side, you'll still need a comprehensive solution that enables you to keep track of all your test cases and changes. Teams can leverage test management tools for this job. With these types of systems, documenting the state of an application generates relatively low costs and can help visualize test result data, InfoQ contributor Ranjan Sakalley stated. In addition, test automation and management offerings are able to handle repetitive tasks with optimal efficiency and will execute cases the same way each time, mitigating potential human errors and lowering overall risk.
"On your journey to continuous delivery, small and big, you would have to take many steps," Sakalley wrote. "The most difficult hurdle would be to reduce your cycle times and keeping costs low at the same time. Automated tests help you achieve these, and well as help you build far more effective and happy teams that test while they develop."
The Journey Towards Success
Agile methodologies have significantly changed how development and QA teams fundamentally operate. This drastic shift to continuous actions - like being able to deliver at any time - is a major undertaking for many, but it's not impossible to achieve as long as you have the right tools and are utilizing them effectively. In order to test in this type of environment, automation will provide the speed boost that will support you through your journey and beyond. By understanding how DevOps, continuous delivery and testing all work together, you can lead your team to success and fully adopt agile operations.
Opinions expressed by DZone contributors are their own.