The new Shift Left Testing, a DevOps mantra in Software Development:
When I use the term ‘Shift Left’, you might be wondering what am I referring to Shift Left in a software??
2+ decades ago, when I started my career as a software tester there was no separate ‘Testing Phase’ for Software development and Testers Role never used to exist at all. Developers used to develop the software, test themselves and make a software release.
The concept of Software Testing got introduced gradually when defects from the production started hitting the budget of the project and hence ‘Functional Testing’ came into effect with a very lean team of Testers. At that point of time, we were just two Testers against a team of 20 Developers.
The IT Industry started following the waterfall model for software development wherein, as we all know, the software development lifecycle goes sequentially in the order of Requirements => Design => Coding => Testing.
So, if you start from the left to right, the Testing Phase is to the extreme right of software development lifecycle.
What You Will Learn:
Over a period of time, people realized the importance of Software Testing and the impact of keeping the ‘Testing Phase’ on the extreme right or at the end of the Software Development Lifecycle. This realization happened because the cost of the bug identified towards the extreme right and at the end was very high and enormous effort & too much of time was required to fix them.
There were cases where after spending so much of time and effort on a software, due to the crucial bug identified at the end, the mission-critical software could not be released to the market thereby resulting in a huge loss.
Hence, because of identification of the bug during the last stage either the release was delayed or at times, the software was scrapped by considering the effort required to fix them, which was really not worthy.
‘Defects are less costly when caught early’.
This realization and the big lesson learned, introduced a great revolution in the software industry and gave birth to a new concept called ‘Shift Left’, which means shift the ‘Testing Phase’ to the Left from Right or involve Testing at every stage and involve testers throughout.
Shift Left testing also means that just don’t test in the end but test continuously.
Firstly, the principle of ‘Shift left’ supports the Testing team to collaborate with all the stakeholders early in the software development phase. Hence they can clearly understand the requirements and design the test cases to help the software ‘Fail Fast’ and enable the team to fix all the failures at the earliest.
Shift Left approach is nothing but involving the testers much earlier in the software development life cycle, which in turn would allow them to understand the requirements, software design, architecture, coding and its functionality, ask tough questions to customers, business analysts, and developers, seek clarifications, and provide feedback wherever possible to support the team.
This involvement and understanding will lead the testers to gain complete knowledge about the product, think through various scenarios, design real-time scenarios based on the software behavior which would help the team in identifying the defects even before coding is done.
Shift Lift Approach influences Software Development in several ways.
Given below are few key points about Shift Left:
Overall Shift Left testing calls for the testers to ‘Get Involved Early’, as early as possible and engage in the discussion and collaborate on ideas, requirements at every stage where the outcome of the stage has a bearing on the value of the final deliverable and also help the project to identify the risks and mitigate it in advance.
Given below are few key factors to be noted as what the Testers do differently in Shift Left Strategy:
#1) Test team needs to engage early in the system right from project initiation so as to develop the integration with the rest of the team and the business to provide useful inputs at every stage of the software development.
#2) Test team should work with the Business & Operations team and gain clarity on the program and provide a clear view on demand and help in planning efficiently on resource ramp-up needs, training needs and testing tool requirements to the program well in advance.
#3) Test teams must interact with all the business stakeholders early in the software development to get a clear visibility of the product & design a unified testing strategy and plan for an optimized testing effort, analyze dependency on test environments, third parties, stubs etc, and prepare a robust automation strategy and framework and build an effective test data management plan.
#4) Test team has to work with the rest of team in providing a great Test Leadership and guidance to the team thereby keeping the long-term product vision in mind rather than just taking the responsibility of testing activities.
#5) Requirements are the key and basis to the success of any program and well-defined requirements define the success of the project. During Requirements Planning phase, Testers need to review and analyze the requirements for any ambiguity, better clarity, completeness, testability, acceptance criteria definition etc.
Also need to identify the missing requirements (if any), understand the dependencies and implementation strategies. Clear Requirements helps the software to ‘Fail Fast’ and fix all the failures at the earliest.
#6) Bring enough clarity and precision in requirements by bringing out the real examples that illustrate the features that are in use.
#7) Testers need to attend Design review meetings regularly and understand the product design and architecture and identify the design flaws, suggest alternate design options, identify the loopholes, and create test scenarios accordingly to break the designs.
#8) Testers need to carry out Static Testing (reviews) well in advance and provide feedback on key project documents so that defects are prevented from getting grounded into the software and widening its effect later.
#9) Test team should collaborate with the design and development team in providing test scenarios in advance to develop the code and address all possible real-time scenarios and business flows.
#10) Test team has to design strong and robust test scenarios so that only a few defects are identified during testing and major defects are prevented while entering into the testing phase.
#11) Testers have to Test as early as possible, be it on a standalone or local system, so that defect does not get into later stages.
The whole crux of the ‘Shift Left’ concept for Testers is to find the Defects as early as possible by all possible means.
Shift Left approach works based on the agile manifesto and has several advantages too.
We can see that while the value is there in the items on the right, we value more for the items on the left Side.
Well, Shift Left is about bringing the idea of testing earlier in the process thereby resulting in a better and efficient testing and improving the quality of the software.
In a nutshell, Shift Left Testing process is:
‘Shift Left’ concept brought a huge transformation for the entire ‘Testing’ role. Until then, the sole focus for the Testing was only on ‘Defect Detection’ and now the aim of the ‘Shift Left’ from Testing perspective is a journey of ‘Early Defect Detection to Defect Prevention’.
Thus, Shift Left is a Big Leap in the software industry in Software Development methodology towards speed to market, improving software quality and reducing ‘Time to Market’.
About the Author: This article is written by STH team member Gayathri Subrahmanyam. She is in software Testing since 90’s, just when the tester role was introduced in the industry. During her testing career, she has done a lot of TMMI assessments, Test Industrialization works, TCOE setups in addition to handling test deliveries and implemented DevOps practice for a huge engagement. But according to her, learning never stops…
Let us know your thoughts/suggestions in the comments section below.