What is shift-left?
The journey of the software development looks like this, even today:
As you can see, testers do not get involved in the early stages of software development such as requirement gathering or the design or the development. Testing has conveniently been moved to the extreme right in the full software development cycle. The consequences of following this approach come in the form of, delaying launch dates because testing-fixing-retesting takes a lot of time when performed at the end, or compromising the quality of the software by skipping this iterative process.
What came as a suggestion to solve these setbacks is the “Shift-Left” movement, also known as test early and test often.
Why is it important to test early and test often?
Why is it important to test early and test often?
Pulitzer Prize-winning author and IT consultant James Martin in his study, details the emergence of bugs in each stage of the SDLC.
|SDLC stage||% of bugs introduced|
And the study conducted by NASA (after reviewing Boehm, Rothman and various case studies) reveal that the cost of fixing bugs rises exponentially in that later stages of software development.
In the shift-left approach, the prevention of bugs and the cost to fix them can be improved by performing testing in the early stages of SDLC. It facilitates testers to attend requirement gathering session, join design sessions to understand how users look at the software, work closely with developers to understand and raise questions and create ‘what if’ test scenarios while the software is being developed.
Shift-left doesn’t mean testing will not be performed at the later stages. It will happen across the SDLC, but the test cycle will be smaller and quicker since the majority of the defects are identified during the early stages. It helps to slash down the time spent on identifying defects at the later stage and costs involved with it. Shift-left enables building quality software at speed.
How do you enable “Shift-left” at each stage?
Shift-left is fits testing/testers into each stage of the software development. Let’s see how this test often and test early will look in action.
All the stakeholders, including testers, must have a clear understanding of the business requirements, design and test plan. The teams will not move into the next phase unless another set of eyes examine every aspect of the requirement.
As testers are now made a part of the integrated team, they can join design sessions with developers to better understand how customers are looking at the product and leverage the aligned vision of design thinking approaches. It helps to reduce anomalies in the later stages and work more efficiently with a shared vision.
In shift-left, the development team should be encouraged to begin development with testability in mind. The developers can write and test unit tests for each feature they develop and sequentially write integration tests to ensure all units of code work well in integration.
Approaches like Behavior-driven development (BDD) and Test-driven development (TDD) accelerates shift-left testing. Developers use BDD approaches by writing requirements as features in an easy to understand Gherkin language and test the same. It provides transparency and quick feedback to the developers in identifying defects at the very stage it emerged.
Example of Gherkin scenario is given below.
To realize the most benefits out of Shift-left, it is essential to embrace test automation as part of your testing process. As it involves testing very often, teams should pick the right test automation tools that best fit your existing infrastructure. With test automation, both development and testing team can automate the whole build that will enhance better integration between processes, improve test coverage, amplify continuous delivery, build confidence with each release.
Benefits of shift-left testing
- By integrating testing early in the cycle, teams can find and fix defects faster saving a lot of time and cost
- Shift-left enables teams to fail fast and fail forward
- Enhances developer’s efficiency and code stability as the developers write code with testability
- Shift-left testing promotes test automation practices allowing developers to test their code through Continuous Integration quickly
- Helps build a high-quality product and launch it within the estimated timeline
- Ability to achieve code stability translates in improved customer satisfaction
Shift-left testing advocates shared responsibility for building a high-quality software. Shift-left testing is the next big thing because it promotes a culture change in the organization moving from a traditional quality assurance to the new age quality engineering practices.
Shift-left streamlines the entire development and testing processes, feedback loops, thereby leading to an improved product quality. This brings about a positive culture change, stimulating an environment of conducive growth for everyone in the organization.