Is wasn't long ago that those of us who dedicated our professional careers to helping our organizations deliver better software were asking how we fit into this new world of agile development. While individual companies and the software engineering community continue to adapt and decide whether agile is right for their businesses, there's already another important advancement in our world: DevOps. Some see this as simply the next evolution of agile.
DevOps is a culture shift that emphasizes collaboration between software developers and other IT professionals while automating software delivery and infrastructure changes. It aims to establish an environment where building, testing, and releasing software can happen more rapidly, frequently, and reliably.
The practice of DevOps is essentially striving to break down the traditional barriers between development, including QA/testing, and operations, and ideally move to fully automated software deployment, where software changes and enhancements can be deployed as needed.
If our goal as testers is to build and release code more rapidly, frequently, and reliably, we must also align and integrate our testing practices, testing tools, test cases, test data, and test environments into this continuous integration, continuous testing, and continuous deployment world. Further, we must adopt new mental models and focus even more on the preventive approach to testing, instead of merely finding defects, and deploying new features directly to production, rather than into operations. Without doing so, there's little hope in getting higher quality software to customers faster.
We have the opportunity to view our testing role, responsibilities, and tasks differently in a DevOps culture. Here are a few examples:
You may be saying to yourself, "Those missions are all someone else's job." Traditionally, you’d be correct. But the lines are now blurring between roles, leaving behind siloed departments for a more homogenous and integrated culture where everyone collaborates to develop and deliver software faster, better, and cheaper.