Before we begin to talk about shift-left or shift-right testing, it’s helpful to visualize the steps of typical software development in a straight line, or to what would be considered a standard waterfall development process:
In this process, testing would occur at the end of the development lifecycle, usually run by a team of expert testers. Any bugs or errors that were found would result in lengthy changes, with a long deployment process.
Testing only before release meant that testing was frequently a bottleneck in the development process. As more and more companies embraced agile software development, shift left testing emerged as key to faster and more efficient software development.
Shift Left Testing
Shifting Left refers to the idea of performing actions earlier in the development process. And as it relates to testing, shift-left testing means applying testing practices earlier in the development process than what is usually common. When we talk about shift left testing, we mean that instead of testing only occurring at the end of the testing process, testing now happens within every stage of development. Instead of waiting till the end of the process to test the entire application, testing occurs in much smaller units, and much more frequently.
Shift Right Testing:
Shift Right refers to the idea of performing actions later in the development process, usually in the steps after deployment or release. Shift Right testing practices can be applied not only to the process of releasing software, but also to the processes of deploying, configuring, operating, and monitoring applications. These testing practices are also closely tied to DevOps, and it’s rise in popularity and implementation across industries and teams. Under a DevOps model, a development and operations team work are much more closely tied together, and engineers can have many more responsibilities that extend past the point of simply deploying an application to production.
Shift Right testing practices such as API Monitoring, Feature Toggles, and using production traffic for testing applications are just a few examples of how teams can extend their Continuous Testing culture to a more holistic approach in the development lifecycle.
A more accurate representation of an agile process that follows the DevOps model will look like an infinity symbol:
By shifting our testing left, and simultaneously shifting our testing right, we are now testing at every stage of the software development cycle. This is known as Continuous Testing.
Testing should be an integral component of every stage of the entire software lifecycle, starting with the development teams creating the code, and moving through the build, delivery and production stages. Testing is no longer just for testers – but an essential function for developers, devops and QA.
Tests Run When Shifting Left
So, when we talk about shift-left and shift-right testing, we are really talking about transforming every step of the development process by applying different testing practices to it, no matter what approach your team might use.
For shift-left testing, some of these practices include:
Test Run When Shifting Right
Shift-right testing means focusing on applying testing practices to after our application has been deployed or released. That can include:
- App monitoring
- API monitoring
- A/B testing
- Canary deployment
How Can Shift Right Testing Benefit Your Development Process?
Applying practices of shift-right testing to a team can have a big impact on how applications are treated after deployment.
Shifting right creates a continuous feedback loop from real user experience with a production application back to the development process. In today’s world where more and more teams go through agile transformations and change deployment practices from once every few months or once a year to once every few weeks, days, or any time, that continuous feedback loop between real users and development is crucial for successful teams.
How Can Shift Right Testing Benefit Your Business?
Shift-right testing can also have a big impact on not just development teams, but on product, customer success, and management teams as well.
Applying test practices to production means taking into account real-world users and their experiences into the development process. For example [find source in references], certain companies will duplicate live traffic to their production application and route it to their staging environment, so they can test an application with live traffic before deploying it to production.
By creating a continuous feedback loop between users and development you can delight customers by collecting their feedback, fixing or improving your application, and following up with them. It means your application evolves not just by internal input, but also from your users.