By employing both shift-left and shift-right testing, organizations can begin to establish testing at every stage of the software development cycle. This post examines why these new testing approaches are so vital, and it shows how shift-right testing can benefit development teams and businesses.
Introduction: The Challenges of Legacy Software Testing Approaches
Before we begin to talk about shift-left or shift-right testing, it’s helpful to visualize the steps of typical software testing and development in a straight line, or 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.
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.
What Do We Mean by Shift-Right Testing?
Shifting 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 its rise in popularity and implementation across industries and teams. Under a DevOps model, development and operations teams’ work is 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 software 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.
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 software testing, some of these practices include:
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 experiences with production applications 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 success.
How Can Shift-Right Testing Benefit Your Business?
Beyond development teams, shift-right testing can also have a big impact 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, 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 based on internal input, but also according to feedback from your users.
With test automation and monitoring practices, your team can have more confidence in your software quality, application resilience, and agile testing and deployment practices, so you can deliver continuous quality to users.
Note: This blog post initially appeared on the BlazeMeter site. Reposted with permission.