What is Test-Driven DevOps?

There are two sides to DevOps: Development and Operations. DevOps is about bringing frameworks, methodologies and tools from both sides to create a synergy of working practices that is more effective and productive than being practised in each separate discipline. There are many practices in which originated in software development that have now been adopted by service operation because they have proven to be very effective and productive. Test Driven Development is one such methodology that allow developers to reap the rewards of application development and deployment. How and why should we adopt the Test Driven methodologies to System implementation and operations is the subject of Test-Driven DevOps.

What is Test-Driven Development?

Definition of Test-Driven Development from Wikipedia:

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements.

So how can we take this apart and use the same techniques for system implementation and operations? We do not need to start from scratch, within operations a monitoring service is on form of testing. In fact, it is testing in a continuous form, which is even more useful than a one-off or manually deployed testing. How can we take systems or service monitoring in operations and use this for test-driven systems implementation? Read-on…

Definition of Test-Driven DevOps from BLU//SAS:

Test-driven DevOps brings together Test-driven Development and Test-driven Infrastructure to produce Test-driven Systems and Services that are continuously monitored for maximum robustness and performance. Data collected from monitoring these systems are then used to drive the improvements, either in terms of tuning the system or the software that provides the service.

In terms of system implementation, a successful system deployment is one where it passes all the ‘monitoring tests’. Similarly, a successful service deployment is one where it satisfied the monitoring tests.