Over the last couple of years, the adoption of DevOps has resulted in teams collaborating more than ever before giving rise to practices such as “Shift-Left and Shift-Right” to ensure software quality. These practices have helped in developing quality products for our clients from the very beginning of the project by guaranteeing focus on quality from the requirement gathering stage through deployment and steady-state operations.
In simple words, these practices are an attempt to enable organizations to move faster by reducing delivery time, while continuing to improve the quality of each release. This has been achieved by accelerating the feedback loop between the technology team that is developing the software and the business team that is using the software.
In this blog, we explain why we need to Shift-Left and what Shift-Right means. We also delve deep into how Opteamix has adopted these practices to deliver value to our clients.
The relative cost of defect detection
Before we discuss Shift-Left and Shift-Right, we must first understand the “relative cost of defect detection”. We all know that earlier the defect is found, lesser is the overall cost incurred – defects found in the Requirements and Design stage are less expensive to fix v/s the defects found in UAT or production environments. The chart below shows us the relative cost of fixing a defect across various phases of the SDLC:
Over the years, it has been found that a significant portion of software development cost is due to defect fixes caused by errors and issues identified in the later stages of a project. This rework can be contained by early detection of defects (during the design and requirements phase). To overcome the high cost of defect fixes and rework, organizations have started adopting early testing to find out issues in the early stages. which leads us to the concept of Shift-Left.
Shift-Left: Developers in Testing? Or Testers in Development?
Shift-Left is a practice derived from a combination of two common DevOps practices – Continuous Deployment and Continuous Testing. In the Shift-Left approach, defining the tests before building features is the key to delivering quality software on time and at a reduced cost. The goal of adopting a Shift-Left approach is to get teams focused on getting it right the first time by ensuring testing starts earlier in the SDLC, ultimately reducing the effort and cost.
In today’s business environment, where the ability to quickly deliver software is crucial, the “Shift-Left” approach helps teams keep their focus on quality, work towards problem prevention instead of detection, and drastically reduces the duration of a project. Shift-Left facilitates better design and results in overall cost savings.
Although Shift-Left is an essential feature for Agile teams, it can be successfully leveraged by development teams using traditional SDLC models as well.
Shift-Right: Bridging the gap with customers
While we all agree that “Shift-Left” is critical to software quality assurance and is a great step in ensuring quality from the very beginning, this approach alone is not enough. Customer feedback in terms of performance and user experience is equally significant in determining product quality.
This has resulted in organizations adopting a “Shift-Right” approach (wherein the testing task is initiated from the right, i.e. post-production of the software) towards quality assurance. In this scenario, the performance and usability of an application are continuously monitored and feedback is obtained periodically from users to modify and enhance the application.
The Shift-Right approach carries a certain level of risk by deploying an application straight to production simply to reduce time to market and enable the business to obtain end-user feedback at the earliest. This approach is based on the Agile concept of “Fail-Fast; Fail-Cheap” that gives the license to fail as long as the business teams are learning, and the application is getting better.
The most important characteristic of the “Shift-Right” concept is the willingness to validate a hypothesis by trying out new solutions and working with the end-users to determine what is or isn’t working rather than spending time on assumptions. For example, performance tuning of a feature before deployment would go waste if the usability of the feature does not meet the expectations of the end-user. In this scenario, it would be prudent to launch the feature fast, test its behavior in production and then adjust both usability and performance based on customer feedback.
Testers are an integral part of the Shift-Right approach and need to be included as part of the requirement elicitation phase. They should also be aware of how users would feel/interact with a particular feature. Sharing feedback on how the feature was received by the intended users is made available to testers, enabling them to test such scenarios up-front.
Adapting a Shift-Right testing approach helps in enhancing customer experience, provides scope for implementation of test automation and ensure better test coverage.
Shift-Left or Shift-Right or Swing both ways!!
Although a lot of emphasis is given to the Shift-Left testing approach these days, at Opteamix we believe that a combination of both Shift-Left and Shift-Right approaches is critical to ensure that the application is tested from multiple aspects to ensure best possible quality.
Reliance on Shift-Left approach means that the testing burden is placed more on the developers, testers and business analysts. Given that stakeholders such as end-users and business teams have a vested interest in adding value to ensure the right software system is developed, they should be involved in defining the features and testing the product. The solution is to enable the business teams and end-users to be involved in testing features. In other words, we need to “Shift-Right” to “Shift-Left”.
Shift-Left ensures operational excellence and helps in delivering a zero-defect product, while Shift-Right ensures that the delivered product is scalable and User friendly.
At Opteamix, we found that the implementation of Behavior Driven Development (BDD) and Behavior Driven Testing (BDT) has helped our teams adapt to a Shift-Left approach wherein all stakeholders define what we should build and agree on what a successful implementation means. Acceptance tests (the assumptions we want to validate) define the completion of the project and effectively drive the development.
Along with BDD, we have also started using unit-level Acceptance Testing and Automated Acceptance Testing to ensure that the Shift-Right approach is integrated into our Quality Assurance approach. We carry out the Shift-Right approach through prototype reviews with end-users and MVP releases to test the market.
A Case in Point: Mobile App Development
We recently developed a mobile platform for a Colorado-based firm that has extensive experience in the US construction industry (the second largest in the world). This platform connects service providers in the construction industry with their customers and is a highly collaborative and interactive app: easy to use and is similar to social media platforms like Facebook and LinkedIn. Opteamix had an opportunity to implement both Shift-Left and Shift-Right concepts on this project.
The mobile application was developed using Behavior-Driven-Development (BDD), one of the established agile practices to enable Shift-Left testing. We wrote test scenarios that described the Acceptance Test even before the code was written. This changed the implementation style for the team since test scenarios are written in the context of the desired behavior, which helped in developing a Minimal Viable Product (MVP). We also introduced end-user testing early to receive feedback on the experience and observations across different devices, ecosystems, networks, etc. The early MVP release was due to the Shift-Right approach that helped us re-calibrate, make changes and ship the market-ready product.
The Shift-Left approach helped us reduce rework, improve quality and reduce the time to market while the Shift-Right approach enabled us to deliver a product that was in tune with market needs.