What is meant by shifting-left in software development?
In the field of software development, the appearance of defects while developing software is very common. It is an unavoidable situation which is faced by every developer working in the software industry. In common terms, it is usually known as ‘bug’.
The only way to detect these bugs is by testing the application, now the question is what is meant by shifting-left?
If we consider the software development life cycle the process starts with the early phases of development where usually the critical phases of testing are not required. Having said that, it is the usual practice to go about in the software development industry.
But the problem starts when bugs are not fixed and later left unnoticed only to discover at the later phases that the defects are much larger in magnitude. hence the concept of shifting-left came about, it is found particularly in the Agile methodologies, and the DevOps enterprises.
The problem of bugs in software development
The above graph shows the percentage of defects which are usually introduced at the early phases of coding, this is a usually expected problem. Defects can be introduced even when parts of the application are assembled in the ecosystem. There is always a chance to detect bugs in an application. The bugs are introduced during coding but are never found in that phase as there is usually no testing done at that time due to a lack of proper infrastructure.
This has a rippling effect on the cost incurred during the development of the software. It is observed that when the cost fixing the bugs rises steeply as it ten times more expensive to detect and fix bugs once the software crosses the initial phases and is in the unit testing phase. as the process moves further the cost becomes steeper.
The mechanism of shifting-left
Shifting-left means to practice testing at an early stage of software development if more critical tests are practiced then the problems can be detected and solved at its earliest. This will help in reducing the issues later.
This process calls for a mature practice of the development procedure. The developers create a series of unit tests to cover the code as much as possible. Then the functional testers and the API testers come into action doing their best to not depend on the late-cycle testing. In this way, there will be enough manual tests or UI tests to show that things are working fine. It will also shift the concept from finding bugs in the late-cycle stages, these tests will be there only to prove its functionality. This procedure is based on the software testing pyramid to minimize the bugs at the initial stages. A proper test management tool can be of great help at this point.
Take precautions before shifting-left farther
It is a common practice among the organizations to stop shifting-left at this point, but some of them push it farther. This may or may not have positive effects on the bigger picture. There are a few points to consider before you decide to implement it, they are:
- Consider the extra burden of testing on the developers if you want to push farther with shifting-left. As they are the ones to develop code and they are the ones again investing their time and energy on testing as well.
- There are high chances that to reduce the extra burden they may consider testing early that very fewer bugs are detected; this will not help as the aim of shifting-left is to reduce the rate of bugs introduced not to suppress them.
- Consider shifting-left methodology only after a thorough understanding of the development process of your software products, there can be issues with infrastructure and planning.
- The code once checked into the Code Repository must be instantly integrated or built so that the failed builds get resolved quickly saving time.
- Developers who perform Code Quality Tests before committing the code to Code Repository can produce better code, remove rework and can align them to the expected standards.
Defects or bugs as we know them are a part of the software development procedure. To fix them cost, time and effort are required. These parameters increase as the bugs are detected in the late-cycle stages of software development. So, there is a tendency to reduce these steep charges by the organizations thru incorporating the practice of shifting-left.
Though there is a chance of improvement there are some problems that may incur on the way, hence considering all the aspects before implementation would be a good idea.