You are here

If you think that working at DevOps speed skimps on quality and just deploys bad code faster, think again. Done right, DevOps delivers speed and quality without compromise.

Will DevOps speed kill testing?

public://pictures/John-Jeremiah-Technology-Evangeslist-HP.png
John Jeremiah, Evangelist, GitLab

I've heard people suggest that testing is missing in action with DevOps, and that the practice should be called DevTestOps to put the emphasis back on testing. That's bunk.

There's a reason why it's called DevOps, not DevTestOps—testing is just one part of the equation. But that doesn't mean developers have sidelined testing and quality assurance (QA) in their quest for DevOps speed. DevOps isn't the end of the line for testing and testers, as both people fear. Testing won't be lost when application development velocity jumps to DevOps speed.

[ Get Report: Gartner: Use Adaptive Release Governance to Remove DevOps Constraints ]

Understand the goal

While it's not official, the commonly accepted definition of DevOps is the delivery of application changes at the speed of the business. DevOps is about optimizing the flow through development activities, including design, development, delivery, and—yes—testing, while focusing on business objectives. It's about breaking down silos, collaborating, and sharing responsibility and accountability. Teams working at DevOps speed set their target as continuous improvement in delivery to meet business goals and objectives.

Author and DevOps expert Gene Kim recently shared this definition with me: "DevOps is those sets of cultural norms and technology practices that enable the fast flow of planned work from development, through tests, into operations, while preserving world-class reliability, operation, and security." World-class reliability means delivering high quality, and that means testing.

[ Get Report: The Top 20 Continuous Application Performance Management Companies ]

Testing is critical to DevOps

While goal of DevOps is to deliver at the speed of the business, that doesn't mean speed at any cost. The app has to work and meet business expectations. Random defects, obtuse error messages, and a poor user experience are unacceptable for brands that aspire to five-star ratings.

So how do you deliver fast without introducing uncontrolled defects and other issues that compromise quality? Continuous integration introduces automated unit testing to validate changes and ensure that everything still works. Continuous delivery deploys the app and infrastructure to QA, where the app and changes to it are pushed through automated testing to validate function and performance. The team is responsible for both the code and application quality. Rather than allowing defects and issues to propagate in the code, the team must have the discipline to resolve defects before finishing their work. If the build and testing fails, they roll back the code and fix the issues.

In fact, the whole point of testing in the DevOps pipeline is to prove that the code and changes are not ready to release. Testing is critical to this endeavor.

I've known many testers whose passion and dedication to quality were admirable, but they made the mistake of believing that quality is the prime directive. It's not. The level of quality required is directly related to the business need. Scott Barber, principal quality engineer at Salesforce Marketing Cloud and former CTO of PerfTestPlus, said it well at the recent STAREAST Software Testing conference: "It's not all about testing, you know. Testing is not a product. Products are the source of profit. And as a product owner, I paid very little attention to testers and testing."

Don't cry for the testers

Yes, the world is changing for testers—in a good way. The days of exhaustive manual testing are certainly numbered, and automated testing is an essential part of the delivery pipeline. But testing has never been more important.

Automated testing isn't easy. Testers need to design and architect their testing frameworks to ensure that both functional and load testing are integral parts of the pipeline. Exploratory testing will always play an important role in helping teams uncover unexpected issues and problems in their apps. In the future, the role of the tester will consist of one part architect, one part developer, one part tester, and one part business leader. Testers are an important part of a properly functioning DevOps team.

More is better

At DevOps speed, you have more testing, not less. If your team is exercising discipline and building and testing with each commit, immediately fixing defects or backing them out, then code quality will continuously improve. This new world of faster delivery and more responsive IT teams through DevOps is leading to higher quality overall.

[ Get Report: Buyer’s Guide to Software Test Automation Tools ]