The Test Expert’s Role in DevOps
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:
- Helping educate, mentor, and commit to a new approach to thinking about product delivery by continually delivering small software product improvements to users
- Championing quality across the entire development process by ensuring not only the right level of product quality, but also quality in the end-to-end development, testing, and production deployment processes
- Finding, evaluating, and piloting computer-aided tools that work in an integrated way, using a seamless workflow that accelerates development, testing, provisioning, and deployment and permits these tasks to be done much more concurrently
- Ensuring that the (now substantial) stream of user experience data has a means of getting analyzed and communicated to the collective team so that the decisions made are better linked to customers’ immediate needs
- Helping the collective team think about risk management and mitigation practices, such as testing in production immediately upon deployment, initially deploying changes to just a few systems or users, conducting failure mode effect analysis, and ensuring roll back procedures are in place and tested
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.