DevTestOps – A tinge of Test in DevOps!
The latest trend in software development is the culture of DevOps, in which developers partner with operations staff to assure that software runs with a minimum of problems. To simplify, it’s essentially the integration of IT Operations with the development process.
Several organizations face challenges due to the rise of cloud-based web applications that allow for quick releases in response to issues or requests coming in from the user community. Responsiveness to their user base is the aim of every software development company, but it can pressurize the functional teams. This strain often leads to more defects and consequent disruption to the team. It is here that DevOps attempts to solve this problem by developing a partnership between Development and Operations (hence, the name). In this structure, the development team supports operational requirements such as deploy scripts, diagnostics, and load and performance testing from the beginning of the cycle; and the operations team provides knowledgeable support and feedback before, during, and after deployment.
Few key principles that are commonly understood to be included in DevOps:
- Deploy often!
- Develop and test on a system that is as close to your production environment as you can get
- Continuous validation of performance and other quality measurements
- Automate as much as possible (without over automating) – and keep deploying
We may wonder where is Test’s role in all this?
Call it DevTestOps! In a DevOps world, Test is the pervasive, persistent paste that holds the entire cycle together.
In other methodologies, Test is handed the product after it is coded and when it reaches some definition of ‘Done’. If they are lucky, the product has been made to a specification or set of requirements that they can write their test plans against prior to receiving the code. If luck favours them even further, those requirements have been updated as the product is coded.
DevOps beckons involving Test early and continuously, completing the shift of Test that started with Agile and other current methodologies. This means that a DevOps shop needs professional testers that are involved at all phases and levels of development. Test increasingly becomes a specialized kind of developer valued for their ability to ensure the released product satisfies the customer’s needs. Using the wide variety of tools and techniques at their disposal, they become an essential member of the team. Contrast this to how many shops still view Test, an obstacle to release, or worse, a ‘cost center’ to be minimized as much as possible.
The Agile Manifesto emphasizes individuals and interactions over processes and tools, but DevOps, while emphasizing collaboration and integration also looks to automation tools that can leverage an increasingly programmable and dynamic infrastructure from a lifecycle perspective. Version control and automating code deployments are two of the most impactful common tools but there are many more, including configuration management, ticketing systems, monitoring and provisioning.
The biggest shift in attitude in a DevOps environment is that there is one team composed of cross-functional team members including developers, QA, DBAs, business analysts, operations engineers and so forth. Collaboration across these different roles delivers many benefits.
- Continuous software delivery
- Less complex problems to fix
- Faster resolution of problems
- Faster delivery of features
- More stable operating environments
- More time available to add value (rather than fix/maintain)
The current generation Test professionals should feel lucky to have DevTestOps! It might be a wide horizon for testers to level up their testing and learn about a lot more testing tools.