Most IT departments have been engaged in transformations around agile for a long time. In these deep transformations, some are more successful than others and agile concepts are generally adapted to the company context. Sometimes, concepts are more than adapted… But the agile milestone is behind us and now it’s time to set up DevOps. This is the step forward, consisting of a kind of generalization of agile all along the production process. Thus, lifecycles become shorter and are supported by fluid organization, from defining the need to product and operation.
However, there is still one step beyond DevOps; an encapsulating concept, a more general idea. This is SAFe (scaling agile framework), which aims to extend agile to the whole organization and not only to IT. Naturally, agile transformation, DevOps setup, and SAFe implementation are complex and sensitive processes. Change management is always complicated because it involves changing peoples’ habits and behaviors.
The good news is that some keys do exist and it would be a pity not to know about or use them. One well-known best practice of Agile helping the shift left is TDD (test-driven development), where developers first define the test that should validate the code (unit tests). Of course, TDD is a great candidate for automation. In the next step, agile advocates using BDD (behavior-driven development), which is roughly the same as TDD at the functional level (functional tests). Finally, we find ATDD (acceptance test-driven development) at the user level for end-to-end (E2E tests).
In other words, the secret to shifting left is to first and foremost think about test. Naturally, this is not the only thing you have to care about in order to drive a successful agile process, but this is undoubtedly a key point. It turns out that setting up a DevOps or SAFe approach is the same!
Indeed, lifecycles cannot be shortened without being sure that each step, each action, and each station crossed generates no failure or system weakness that could seize up the new and well-oiled process. Good testing is the only way to ensure and secure this. Higher frequency, increasing test volumes require automation.
First, the test should go bottom-up. Unit tests, when they are automated, allow building on a healthy basis. Experience shows that this leads to better quality. Then, step-by-step, each stage has to be mechanized and automatized to propagate and extend the approach.
Automation must be an integral part of the whole production process up to production. But automation is not magic—it has to be managed according to the state of the art and most of all, with common sense. An automation strategy is as essential as a test strategy.
Automation means tooling, and tooling must be studied to build a process that is as fluid as possible. In order to do so, however, it is absolutely necessary to have a global view of the whole process to setup. We used to say that the one who has a hammer sees all problems as nails; it is important to avoid this pitfall.
Testing is not a magic solution to setting up Agile/DevOps/SAFe. Nevertheless, a testing approach can efficiently support and secure this transformation. Furthermore, it is not only a matter of functional testing, but also of code review, performance, security, exploitability, etc. QA is key!