Implementing Shift-Left Testing practices is fundamental to achieving early analysis of quality and creating better software, agile and efficient, not only to solve but also to prevent quality issues. However, Shift-Right Testing offers other great advantages to improve testing strategies. We often hear the question: Can both practices be combined? Find out in this article, which includes an interview with Matias Fornara.
Shift-Left Testing has been talked about for a long time, but many companies and professionals still do not incorporate this approach into their daily work. Coincidentally, the same companies often opt for Waterfall work rather than agile methodologies such as Scrum, which generally encourage the approach of involving testing earlier in the process, in early stages, and of course in critical phases.
On the other hand, while it is considered bad practice to ship to production without performing testing, we have teams with very good results in their work that implement processes where test execution is done by the users.
In other words, as part of the software development cycle, they release very frequently, in a staggered manner, delivering first to a reduced group of users and progressively advancing the deployment. They also analyze what happens in the production environment, and, in case something presents problems, revert the changes. So, as you can see, user feedback is key for feature releases.
All of this is accomplished with a lot of automated testing, impacting real users as little as possible. Obtaining production information about the quality of the system in order to make decisions to improve the product is part of what is known as Shift-Right Testing.
These practices speak of work philosophy and can have a great impact not only on agile and efficient software development but also on the development costs and sustainability of the organizations that carry them out, as well as on their scalability.
The implementation of Shift-Left and Shift-Right Testing implies changes that are not always easy to carry out, but that can bring excellent results. Therefore, we see it as extremely necessary in a society that is undergoing an accelerated digital transformation, which requires quality software for medicine, education, the world of work, and all areas of people’s lives.
In this line, Sofia Palamarchuk, member of Abstracta’s Board of Directors and CEO of Apptim expressed: “Agile practices, including Test Driven Development (TDD), Behavior Driven Development (BDD), and Continuous Integration (CI)/Continuous Delivery (CD), promote the idea of shifting left (meaning conducting Shift-Left tests), enabling testing to participate in the software construction process in an early and more involved way. Making this change modifies the vision of testing: instead of traditional quality control, it becomes Quality Engineering.”
Although this is not something new at all, we believe that it is important not to leave this topic aside and to continue having this kind of exchanges and conversations with clients and partners, in order to make the ways of working and processes clearer and more efficient.
We will review the definitions of Shift-Left Testing and Shift-Right Testing, with Matias Fornara, leader of Abstracta’s Test Automation hub, to understand why we say they are ways of working that seem so antagonistic but can actually complement each other to achieve better results.
What is Shift-Left Testing?
It is the approach of expanding testing activities to the left of the development process, understanding it as a timeline. The etymology of this idea comes from the fact that in more traditional methodologies such as waterfall, quality activities are more “to the right”, that is, at the end.
The idea of Shift-Left Testing is to include quality activities from the beginning, even from the planning of the functionalities, in order to mitigate possible risks and have a better quality analysis at each stage of this process.
This does not mean that we concentrate only on the “left” activities (at the beginning of the development process), but that the focus is “to the left”. It is also important to evaluate the quality at all stages of the process.
What is Shift-Right Testing?
Shift-Right, on the other hand, refers to the idea of performing actions later in the development process, usually in the steps after product release. With the popularization of the DevOps concept, Shift-Right practices have also become linked to application release, configuration, and monitoring processes. A key concept associated with this is “observability”.
Would you like to learn more about observability? We recommend you hear this whole episode of Quality Sense!
Clearly, the level of risk when carrying out this type of practice exclusively is higher since we could generate incidents that affect users. That is why there are different practices that seek to mitigate risks, such as Canary releases, A/B testing, User Acceptance Testing (UAT), Features Flags, and API Monitoring.
How Do Shift-Left Testing and Shift-Right Testing Complement Each Other?
We must keep in mind that Shift-Left Testing aims not only to correct incidents but also to prevent them. This approach helps to accelerate the “time to market” of development, since teams incorporate testing from the beginning, preferably before the code is written or during the development itself.
On the other side of the equation, Shift-Right Testing practices focus on analyzing software reliability in production environments and under real-world conditions. As a result, teams get test coverage that is more focused on what the user actually uses, not what someone thinks could potentially happen.
On the other hand, the information obtained is more comprehensive since the ability to observe functionalities, application performance, user experience, and fault tolerance in conditions that are difficult to simulate in test environments is gained. All this leads to another concept, which is the observability of an application.
What Are The Benefits of Each Application?
In Shift-Left Testing it is possible to have earlier feedback, which helps the resolution of incidents and the optimization of software development processes that improve the quality of our product increments. So, in a way, we are decreasing risks to minimize the impact on our product. In addition, it brings great benefits to the work teams, in relation to its operation and way of working.
On the other hand, by adding the idea of Shift-Right Testing, we manage to create a “continuous feedback loop”, from the real direct user experience to our development process.
This “loop” is part of the reality of today’s IT industry, where more and more teams are migrating to agile and changing deployment practices from once every few months or once a year to once every few weeks or days, and sometimes several times a day. All of this is aimed at maximizing our chances of success.
Although they seem like antagonistic practices, they are actually complementary because the focus of testing changes, the type of problems we want to find is different, and both the way we process the information and the actions we take based on that information vary.
Gradually, when the context allows it, a change is beginning to take place in which both practices are combined: Shift-Left Testing and Shift-Right Testing.
“The proposal is to expand testing to the left (Shift-Left Testing), and actually also to the right (Shift-Right Testing), including quality activities throughout the process,” said Federico Toledo, COO of Abstracta. Even so, he added, it is important to focus “on the advantages of Shift-Left Testing” to involve testers in the early stages of the development process.
Along the same lines, Matías Fornara said: “It is important to analyze quality at each stage. Quality must be included from the beginning, to reduce risks. But in this agile mindset, if something doesn’t work or doesn’t have the impact I need, I have to change it, complement it, or improve it. And if that is through the inclusion of Shift-Right Testing practices, that’s a good thing.”
Matias explained that it is possible to combine both practices intelligently. “You can have all the tests with Shift-Left approach and make the passages to production doing A/B testing or canary release,” he exemplified. “They are practices that seem antagonistic because you are supposed to do one to avoid doing the other, but in reality, if you do both, you are making the process more thorough.”
In short, this combination implies a different way of doing testing continuously, i.e. that it starts to be done as soon as possible but, at the same time, that it does not have an endpoint.
“Whenever modifications are made to systems or data, there is always a risk of introducing errors, so it is important that quality continues to be evaluated beyond the project’s life cycle,” specified Alejandra Viglietti, Operations Manager at Abstracta.
“It’s all about continuous testing, how you achieve it is up to you,” Matias said. “In the search to optimize the delivery process, one implements practices because they have an impact. I don’t believe that either of the 2 currents is the definitive one. It always depends on the context, the skills of the team, the pressure from stakeholders, and the criticality of what is being done, among other factors. That’s why a Shift-Left approach combined with Shift-Right is more than promising,” he concluded.
In need of a testing partner? Abstracta is one of the most trusted companies in software quality engineering. Learn more about our solutions, and contact us to discuss how we can help you grow your business.
Risk-Based Testing: The Software Testing Risk Matrix
So much to test, so little time? Here’s how to create a software testing risk matrix for maximum results. When it comes to testing software, it can be a bit overwhelming when you get started. One resource that one can turn to is the software…
Kanban for Software Testing Teams
Committing to the continuous improvement of kaizen This article was originally published on stickyminds.com Kanban, a highly effective framework for “going agile,” is based on the Japanese business philosophy of kaizen, which believes that everything can be improved. One of the principles of kanban that…