The DevOps movement or culture celebrated its tenth anniversary in 2018. It is now critical to the success of many organizations.
The original definition of DevOps by practitioners Len Bass, Ingo Weber and LIming Zhu is interesting. “It is a set of practices that helps reduce the time between committing a change to a system and committing the change into normal production – all the while ensuring high quality.”
Funnily, the ‘ensuring high quality’ is what many businesses miss and yet it is the key phrase. Ask test engineers and they will tell you this is one of the most important KRAs.
There is an obvious overlap between testing and DevOps – requiring test engineers and DevOps teams to work so closely. DevOps has definitely created a major shift in software development, failure recovery and feature delivery. But you need continuous testing to leverage its full potential.
So, when you add continuous testing to this mix, it enables a more accelerated process. As a result you get what is known as DevTestOps.
DevTestOps – a new philosophy for Agile
If you have been following our blog closely then you must have read how Continuous Testing helps to bridge the gap between development and testing.
Continuous Testing breaks silos and the traditional way of development where work was passed on to testers after developers completed their coding. That is testing was relegated to the final stage in the life-cycle. The main problem with this is that testing was often a rushed activity – a box-ticking exercise if you will.
But of late more companies have started “shifting left” which requires moving testing up earlier in the software development cycle. Tester involvement right from the outset at requirements gathering stage eliminates the issues that crop up when testing is executed too late.
The ultimate aim is to achieve continuous feedback by talking to developers continuously about the state of their code.
Such that you can highlight problems earlier rather than later in the process and reduce risks.
How DevTestOps works?
DevTestOps is basically a combination of all the information mentioned above. It helps blur the boundaries between developers, testers and operations engineers.
DevTestOps also needs organizations to embrace all forms of testing – not restricted to automated testing. That is a combination of exploratory testing, manual testing and test development.
In practice, businesses need to ensure they have the correct systems, tools and procedures to implement DevTestOps. This requires an effective test automation system and the inclusion of testers in the dev team to promote the culture of quality across the board.
Of course, buy-in from senior management is necessary for any of this to happen. Remember that the investment in DevTestOps reaps high dividends.
Among the many benefits that this model brings for companies include:
- Efficient and bug free builds and quality software products
Implementing a bug free policy ensures that any bug raised on production systems during any point of the sprint must be evaluated, addressed and closed within a minimum possible duration without having an impact on the customer.
- Your integration from a build system to a test system is automated and available for testing without human intervention to execute functional tests.
- Thanks to continuous feedback you can make sure there is integration of real time and run-time business issues.
- You can be truly agile. Adopt changes as per technological advances in the market, even while you are developing.
- Faster time to market because of an iterative approach.
- Remarkable reduction in costs owing to faster releases and fewer changes post deployment
Organizations have now realized that DevOps minus continuous testing is simply a faster route to produce buggy software. This is why DevTestOps as a concept is gaining currency. In effect, it promotes a culture of collaboration among all teams involved in the development – from operations to developers to QA and business analysts.
To build a successful Continuous Delivery pipeline, you require to reduce the cost, time and risk of delivering software changes. You can do this by enabling more incremental updates to applications in production.
Gradually, as you automate your Continuous Delivery pipeline, the next logical step is to include more quality control steps in your pipeline process. You can do this either by using test-first approaches like test-driven development, acceptance test-driven development and behavior-driven development. Or by frequently running automated scripts to test out the new features.
As your software release cadence picks up, you should ideally store and reuse the suite of automated test scripts in future. These scripts can also be a part of test automation frameworks and used to assure project stakeholders that testing is thorough and adequate.
Agile companies are all striving to go ‘continuous’. A Dev-Test-Ops model helps achieve this continuity and reduce the gaps because it ensures the focus stays on quality. Dev-Test-Ops is gaining currency as it enables seamless and reliable development of software.