Last week I attended Star West in LA, a fascinating and a cutting-edge conference, sharing the latest best practices of software quality and testing.
Among those great speakers, there was one keynote that caught my eye, “Testing and DevOps” a presentation by Adam Auerbach, VP Quality and DevOps Engineering at Lincoln Financial Group, and I want to share some of the insights as presented by Adam.
Software development is constantly evolving, and the transformation of teams to release software faster creates pressure on all stakeholders throughout the process.
Adam started with a good definition of DevOps: “You Build it You Own it” meaning –
“DevOps is a philosophy where teams are accountable for everything required to get their code developed, tested and deployed to production, while shared service teams provide the automation and tools to enable them”.
Adam shared his experience that teams who adopted Continuous Testing and eventually Continuous Delivery achieved:
- Improved deployment frequencies by over 4X
- A significant decrease in incident rates; they fell 90% to less than 5%
- One hour lead time from check-in to production deployment
He nicely draws on the relationship between the number of releases and the adopted methodology. The faster you wish to release, you need to adopt more of the below:
- Agile – Accelerates software development with iterative, incremental releases
- DevOps – Enables faster feedback or developers through automation and increased responsibilities
- Continuous Delivery – Allows code to flow via an automated software factory that deploys constantly
The more you automate your process, the more cost effective and efficient your team will be.. “Manual work is still highly used and no one can automate everything”, was one of few comments that were heard during the session. Well, this comment sounds valid, although by examining the trends in the software industry, it’s well directed towards dev-centric and automated processes, as part of an ongoing journey.
The required infrastructure to achieve the above was illustrated as follows:
And in order to achieve the above one should properly manage the software pipeline:
source – Adam Auerbach Star West presentation
The testing activities have become, in many cases, the bottleneck of the CI/CD pipeline. Learning best practices for continuous testing is important. Methodologies that can push a team in the right direction include behavior-driven development (BDD), test-driven development (TDD), and acceptance test-driven development (ATDD). In addition, the right set of tools can assist the team achieving the desired goals include:
- Service virtualization
- Test Data tools
- Dashboard and monitors that drive the most impactful activities
Adopting the above practices is not simple and there are many challenges along the way. The most common challenges include lack of funding, 3rd party dependencies, questions on direction, lack of technical resources and project delivery mindset. Adoption of top down and bottom up support from all stakeholders is critical to overcome the above.
The presentation and the ideas shared by Adam were very enlightening, and I strongly recommend following him here (@Bugman31) for greater insight into this topic.