With the evolution of the software industry, new trends & operating models also evolved and each ‘software model’ aimed at bringing more efficiency at every stage of ‘software development’. Having more efficiency was the need of the hour since any delay in project execution & delivery could delay the shipping or launch of the product. One of the most widely used software development models was the ‘Waterfall Model’ where all activities in a software development lifecycle namely Planning/Requirements Gathering -> Software Design -> Coding (Development) -> Product Testing was executed in a sequential manner. The major drawback with the ‘Waterfall Model’ was that the testing activity was not performed at every stage; hence bugs (major/minor) were unearthed only after the ‘product development’ was complete. If the bugs are minor in severity, developers can fix the issue & submit the changes for verification. The scenario would change drastically if the severity is ‘very high’ and there could be side-effects of the fix. In such cases, there could also be a potential delay in releasing the product to the customer. In such a model, the testing phase was there in the extreme right of the SDLC and that approach is ideal if your product is bug-free, but that is never the case with any product.
With the evolution of different software models e.g. Agile model, Incremental model, Spiral model, etc.; people realized the importance of ‘software testing’. There were a significant number of risks that were involved by keeping ‘testing as a one-off’ activity since it had a lot of implications on the project deadlines, as well as the cost. This realization gave rise to the concept of ‘Shift Lift’ i.e. shifting the testing phase to the Left and empowering the test team by involving them activities that are critical to the execution of the project. In the earlier testing methodology (called Shift Right), testing phase was at the ‘extreme right’/at the end of the development cycle, whereas in case of Shift-Left methodology, testing is involved at each phase of the development.
In a traditional software development approach, test teams work in silo since their primary job is to improve the quality of the product by identifying bugs & reporting them to the development team. There was less or no involvement of testers in an important phase of product planning and development. With the concept of ‘Shift-Left’, the testing team is more involved in every phase of product development. With such an approach, the testing team could collaborate with other stakeholders i.e. development team, product planning team, product development team, marketing team, etc. thereby inculcating a ‘mindset of testing’ at a very early phase of the development. Since the test team gets an opportunity to interact with the members from different teams, this enhanced understanding will help them in writing effective test cases that can be instrumental in improving the product quality.
Hence, the concept of ‘Shift-Left’ not only helps in discovery of bugs at an early stage of product development; but it also helps the testing team to collaborate with other stakeholders, improve domain competency, and come up with more realistic test cases.
As you roll in the shift-left testing as a part of your SDLC, you may realize many benefits. In my opinion, the below-mentioned are most beneficial ones.
Reduced costs involved in Development & Testing
Larry Smith, the founder of the Shift-Left concept once mentioned ‘bugs are cheap when caught young’. In a typical SDLC, testing is performed at the end of the product development cycle. As mentioned earlier, the cost & implications involved in bug-fixing would multiply based on the time when it was discovered. As per Larry Smith, bugs have to be discovered early before they become undiscoverable.
Once you “Shift-Left”, testing is considered an integral part of every phase of product development. Hence, testing is performed one every build so that bugs are discovered & fixed at an early stage. Once the code size becomes more humongous, fixing simple issues could also take more time & may cause some side effects. A shift-left testing strategy can reduce the overall costs of Development, Testing & Fixing since ‘bugs are caught young’!
Early Bug Detection ensures better ‘Code’ & ‘Product’ quality
Shift-Left approach ensures that there is timely communication between different stakeholders of the project. Developers can co-work on the development of unit tests, as well as system tests. Automation is an important part of Shift-Left testing and with automation scripts, test teams can perform testing several times a day. Their product feedback in the form of ‘bugs’ is again fed back to the product development funnel which helps in improving the code quality (as well as code coverage through the development of test cases & test suites).
This results in a reduction of the number of issues that are encountered during the production phase and a ‘critical bug’ in the production phase can cause ‘havoc’ in the team, for instance, the test team encounters that the sign-up page on their web product is not working due to some database issues or the power consumption for the call scenario in a mobile phone is much more than competitors’ products in the same price range. This means that the overall code quality would improve with the stringent code quality checks, hence ensuring a ‘more stable end-product’ is delivered to the customer.
The fundamental difference between ‘Shift Right’ & ‘Shift-Left’ testing approach is the involvement of the test team at ‘every critical phase’ of software development. From unit testing in the Development environment to migration in the Staging environment before pushing the final code into a Production environment. However, implementing this approach is easier said than done since the test team needs to get out of their ‘comfort zones’ and a mindset shift is required from each stakeholder so that they can [collaborate with the test team for the successful execution of the project. However, you must be wondering whether Shift-left testing can really boost you deliver a product more robust than ever with better team collaboration & efficiency.
Below are some of the major highlights by which Shift-Left Testing can help your product quality do better.
- In the ‘Shift-Left’ testing approach, the test team is involved in important project discussions which makes them more informed about the project requirements. In the process, the test team will gather a good amount of knowledge about project planning & execution. This will motivate the team to do much better in their day-to-day activities since each day the team will come across important learnings.
- Apart from the product/project planning team & development team, not many members are aware of the ‘business goals’ since they never had access to that information. With ‘Shift-Left’ testing, software testers can play a vital role in ensuring that their work helps in meeting the business goals of the group/organization.
- In today’s time where the entire focus is on ‘Time to Market’, delivery & execution timelines have become shorter. This is where Agile & DevOps would require more automation so that the testing process can be accelerated. If the automation scripts have to be developed by the test team, it could slow down the ‘automation’ process. With Shift-Left testing, the test team would work closely with the development team to come up with automation test cases that can be used to unearth critical issues in the product. By following such an approach, there would be improved ‘synergy across teams’ which is a very important aspect for achieving Behavioral Driven Development (BDD) & Test Driven Development (TDD).
- There is a common misconception that Developers have to only develop the code. In order to improve the code quality, developers should ingrain a ‘Development & Test’ mindset so that the developer can himself discover & fix the bug. By implementing the Shift-Left approach, developers can become more responsible by focusing on developing & testing simultaneously. This would help enhance the soft skills of developers, required for becoming more proficient.
- Test team members who are involved in the implementation of automation scripts are technically sound with multiple test frameworks & programming languages. However, members from the test teams are never a part of the review board. Once Shift-Left is implemented, testers can be a part of the regular standup meetings, code reviews and other important activities that are part of the product development. This knowledge can be useful in future projects since testers can come up with more test strategy, test plans & test cases since they are involved in ‘every phase of development’.
Shift-Left testing when implemented correctly, can result in improving the domain skills (of developers, testers, etc.) and improve the intra-team communication which is vital for the success of any project.
Shift left testing can be practised in 4 different ways:
Shift Left Traditional Testing: The traditional shift-left testing approach focuses more on unit-level testing and integration testing. This is achieved via usage of API testing and utilizing test tools. It does not put more emphasis on acceptance testing & system level testing.
Shift Left Incremental Testing: Incremental shift-left testing is widely used in projects that have very high complexity. In order to reduce the complexity, project tasks & deliverables are broken down into smaller pieces. This approach makes the testing task a bit easy since testing is also performed on those smaller pieces. These pieces are built upon each other, with each increment; the software is also delivered to the customer. After each delivery, the development & testing are incrementally shifted to the left. Projects involving hardware considered extremely complex as there are a lot of dependencies i.e. hardware, software, middleware, application layer, etc. and incremental shift-left testing is widely used in such kind of complex projects.
Shift Left in Agile/DevOps: As the name signifies, this category of shift-left testing is performed in numerous sprints. It is mainly used for developmental testing and not for operational testing. Agile/DevOps shift left testing is slowly gaining popularity and organizations are using this approach of shift-left testing depending on project requirements & schedule.
Model-Based Shift Left: The entire concept of shift-left testing is identifying issues/bugs before it becomes too late. However, in the previous types of shift-left approaches (discussed so far), testing would start at the early stage of the development cycle. Hence the issues that could have been identified during the requirements gathering/design phase, would be unearthed once the software is ready. The major problem is close to 45~65% defects are introduced during the requirements gathering phase, design phase. In model-based shift-left testing, testing can start at the earliest so that bugs are reported long before the software development cycle has started.
To summarize, shift left testing is more about continuous testing at each phase. There is an ample number of benefits for moving to Shift-Left testing, but it is left up to the product development team whether to adopt that approach depending on the project type & project schedule.
Originally source: lambdatest.com