Shift Left and Shift Right in Software Testing

Tags: testing, agile, devops, qa
Published: 2020-03-06 11:32:48

What is the significance of Shift Left and Shift Right in software testing? The Shift Left testing approach uses the ‘test early and often’ mantra to perform testing earlier in the lifecycle(thereby moving left on the project timeline). Whereas, the Shift Right approach in DevOps testing  enables you to test in production, and prepare for the undefined, unknown, and unexpected.

The wider adoption of Agile and DevOps practices in the past couple of years have led to a marked shift in the way software is developed and tested. Collaboration is key and both developers and testers are involved from the early stages of testing cycle.

Two concepts that have gained popularity are Shift Left and Shift Right.  As the name suggests, Shift Left essentially shifts the process to the left of the development phase. This means testing begins right at the start of the development cycle and is implemented throughout the cycle.

Shift Left Approach
The goal is to prevent defects and mitigate risks rather than deal with a whole load of bugs and critical issues post development. Testers are therefore brought in early in the SDLC to proactively deal with the defects. This also benefits the developers in getting things right the first time and being able to deliver on expectation and quality.

Also, consider the fact that defects are less costly to the project when caught early. Shift Left also means to test continuously to get a better-quality product.  The roles and responsibilities of a tester are significant in this paradigm.

This approach also requires the testers to design the tests first and keep a customer-experience objective in mind. This, in turn allows developers to build the software based on these tests and meet the customer needs.

The Shift-Left practice often encourages the use of Behavior-Driven-Development(BDD) and Test-Driven-Development(TDD), to help prevent the defects.

Being an integral part of the Agile practice, Shift Left includes Agile scrum teams where testers play an important role. Testers are treated as stakeholders and they participate in stand up calls, review meetings and various other interactions.

Shift Left depends on continuous testing and feedback to carry out dynamic changes throughout the sprints.

Why Shift Left?
Better design: Shift Left uses a design thinking approach where testers and developers focus on customer/end-user expectations and experience. Through continuous testing and brainstorming – sometimes lead to identifying critical design or concept flaws. These discoveries may often lead to a better product and customer experience.

Quality of the release: Bugs are found and fixed early. The model accelerates attention to quality from the beginning and defects caught this way can be fixed easily at a lower cost than end-of-cycle.

Better time-lines and ROI: With Shift Left quality becomes everyone’s job. There is lesser rework, projects stay true to the timelines. This ensures faster time to market and better ROI.

In short, Shift Left process involves:

Testing early and testing often to reduce the overall cost of project and maintain quality
Testing continuously with a shorter feedback loop to avoid resolving defects in the end
To automate everything and improve time to market
To design for customer requirements and improve the overall customer experience
Shift Right Approach
Where Shift Left ensure that the quality and business requirements are met, the functioning and performance in real world environment are ensured by the Shift Right approach. This practice allows testing to move into production with regards to functionality, performance, failure tolerance and user experience by employing controlled experiments. Testing in production allows using real user experience and analyse use cases that are difficult to replicate or anticipate.

That is, Shift Left helps team prepare for the unexpected events like performance issues, crashes, failures and similar things.

While Shift Left is an absolute necessity for Agile testing, it may not be enough to ensure the quality of software as far as user experience and expectations are concerned.

Shift right testing begins the testing task from the right – in the post production phase of the software. You are now testing the software application at the right end, – that is one that is built and functioning. The tests are to ensure stability, performance and usability criteria. The feedback and reviews are thus collected from targeted users to understand the software’s function in real world conditions. This helps enhance the quality of the software much further.

Why Shift Right?
While shift left testing brings early and continuous testing of software to prevent defects, the shift right testing practice has its own set of advantages such as:

Improved Customer Experience: By shifting testing right, customer feedback is carefully collated, and the issues are then translated to technical and business terms. This allows the isolation of each issue and the scope to improve it to enhance the customer experience.

Scope for Automation:  It is easier to automate a functional and stable application as opposed to a partial or unstable one. Once the application is stable, User Interface (UI) automation, is necessary for testing with speed. Shifting testing to the right enables you to do that.  once the application is stable at a core-functional level, is crucial for testing with speed. Shifting testing to right enables you to do just that!

Wider coverage: Compared to shift left, the shift right approach has wider test coverage, since the testers have access to the complete system with no pressing deadlines. It allows the testers to test more, test on-time but also test late resulting in better quality and customer experience.

Ideal for many scenarios: Owing to the high stakes and risk-factor, practices like dark launches, business toggles and canary deployments are ideal for shift right testing, with targeted users.

In short, the Shift Right process involves

Testing in the production environment to ensure product stability and performance in real word scenarios
You can receive feedback and reviews from targeted users to ensure customer satisfaction
Ability to test usage scenarios and real load levels that aren’t possible to create in test environment
We can see here that Shift Left is all about getting the code right first time, and reducing the time to market, while Shift right underpins perfect usability from customer perspective. Shift Left enables you to save time, testing effort, risk and resources while shift right is more about getting the user experience and production scenarios right.