What are Shift-Left and Shift-Right Testing in Agile Development?
Gone are the days when testing was solely the task of the QA team. Today, everyone in the software delivery pipeline should be responsible for the testing job. And that’s where shift-left and shift-right testing comes into action – let’s see what this all about and how these methods can help you.
A Quick Review – Understanding Where It All Started
However, before we start digging into the details, we need to talk a little bit about one old-school project management paradigm – the Waterfall model in particular.
You probably remember it, have worked with it, or are still applying it today – the waterfall model was and is a widespread project management model. Following this model, each activity is aligned in successive linear phases. To start the next stage, your team must complete the previous one and work with its deliverables. Phases may be, for example, conception, design, development, testing, deployment, and maintenance. Of course, there could be even more steps – tasks can be broken down as much as necessary.
The main point we need to understand in the waterfall model is that project activities flow into one direction. Or that they move downwards like a waterfall.
With the waterfall model, projects are quite easy to manage. First, we do this, then this and finally that – everyone knows what to do in each phase and the deadlines are clear. In reality, though, the stages are often not completed on time and the time allocated for later stages must be shortened to meet the deadline. Especially the test phase was often a bottleneck. Apps weren’t as meticulously tested as they should. The test teams had to operate under significant pressure and work overtime to finish everything in the little time left.
Goodbye Waterfall, Hello Agile
Modern businesses applying the waterfall model have difficulty surviving on the market. If they release a new version of their software only twice a year, they lose customer relevance. To provide updates, new features, and bug fixes on a regular basis, companies need to say goodbye to the waterfall model.
Of course, you know what emerged from these issues: the Agile model. Today, we find various methodologies like Scrum or Kanban that follow the agile principle. They all follow the same core values to achieve a more adaptable project lifecycle. Agile methods enable teams to deliver valuable apps early and on a continuous basis. As a result, companies can publish new features more often. Instead of following a linear, sequential approach, agile follows a circular, iterative one.
Moreover, shift-left testing became an essential part of agile to overcome bottlenecks caused by testing too late in the development cycle.
Shift-Left Testing – Start Testing Earlier
Now that we’ve talked about the waterfall model, it’s more obvious to understand what shift-left means. In a linear approach – which you can imagine goes from left to right – shifting something to the left means start doing it earlier. Rather than starting the test phase at the end of the development cycle, we perform it at an earlier stage and thus shift-left. Of course, the same approach can be applied to agile environments even when they’re not linear.
So instead of cramming all testing tasks into the last days before your app’s release, your team starts performing tests earlier in the development cycle. Finding and fixing bugs as early as possible helps you introduce higher-quality code right from the beginning and save time and resources. Additionally, your app’s design improves as your team can detect and tackle possible performance issues and other bottlenecks sooner. In this way, you can ensure that only well-tested, highly-functional apps are published, and allow your team enough time to breathe. Put your development and QA team on this task and bring them closer together.
But how do we treat our apps after deployment? Do we let them do their magic and hope for the best? No, we need to run tests and get our users’ feedback after release as well!
Shift-Right Testing – Post-Deployment Testing
If testing earlier in the product development cycle means shifting to the left, then doing it later must be shifting to the right. And that’s what shift-right testing is about – we test after our product’s release!
By employing shift-right testing, you can learn how your product operates under real-world conditions, e.g. different network carriers and how actual users handle it. For example, you can run A/B tests, monitor your app and API to receive user feedback continuously, and gain performance and usability insights. You’ll learn how your app responds in the weirdest and “unluckiest” situations.
Typically, your QA team can’t cover every possible scenario! If you collect these insights and work with them, you can improve your app step by step and make it more stable. Also, knowing that you have dependable monitoring and testing practices applied in production, let your team have more confidence in the system. Thus, they feel more comfortable in releasing new features faster.
Through shift-right testing, we can narrow the gap between the QA team and the Operations team and set up a continuous feedback mechanism. This also means that your DevOps team needs to enable your systems to safely perform shift-right testing procedures and monitor and capture performance and usage data.
Combine Testing Practices for Dev and Ops
When we talk about shift-left and shift-right testing in an agile environment, we also need to talk about how often and when we test.
Performing tests early but only once wouldn’t make much sense. Instead, you must integrate tests into every iteration, cycle, sprint, etc. Modern teams often perform agile practices such as Test-Driven Development or Behavior-Driven Development to incorporate testing into development seamlessly. Likewise, shift-right testing must be performed continuously as well.
Remember, above we’ve stated that:
- shift-left testing brings development and testing together
- shift-right testing brings operations and testing together
Now, we can conclude that combining shift-left and shift-right testing means tightening the relationship between any team that is critical to the software delivery pipeline. Thus, testing becomes an integral ingredient throughout your product’s lifetime. Responsibility is distributed across departments, and you can ship new releases to your customers in a timely and secure manner.
Even if your team carries out tests at every stage of the development cycle, there is still room for improvement. To make testing even more efficient, we have to get automation into the equation.
Manual testing causes new bottlenecks, and automated testing significantly increases the productivity and efficiency of your team. We will not go into detail here, but feel free to check out the benefits of automated testing in our other articles!
That being said, you may already see where this leads! When we combine shift-left and shift-right testing and add automation to both practices, we speak of continuous testing.
Utilize Continuous Testing for Maximum Impact
Continuous testing means performing automated tests as part of the software delivery pipeline. It needs to be an essential part of your CI/CD process. By combining the benefits of shift-left and shift-right testing, it provides insights into the app’s status and functionality at all times.
Furthermore, this practice is becoming more and more critical in the software industry: 58% of respondents of the Continuous Testing Report 2019 stated to deploy daily, or even more frequently.
Knowing this, you can imagine that it won’t be enough to shift your testing to the left or right to ship stable releases to your customers regularly. Your developers and DevOps need to implement automated tests and run them continuously. Integrate the practice into the daily lives of your teams, and your products can enjoy, among others, the following benefits:
- Improved security: Find possible loopholes early and automatically test with your company’s security policies applied.
- Improved performance: Detect and eliminate bottlenecks shortly after they’ve been created to save resources.
- Reduced risk: Enable your developers to find and fix bugs early, and reduce the risk of releasing faulty products.
- Speed up time-to-market: A continuous feedback mechanism allows your DevOps teams to work together more closely and eliminate issues in either department faster.
Apply a Continous Testing Strategy to Release Grand Products
Applying shift-left or shift-right testing to increase efficiency and conserve resources is fine and dandy, but for the ultimate effect, you need to consider using continuous testing.
Bring together development, DevOps, and QA, implement automated testing strategies, and enjoy the benefits of releasing stable apps.
To continuously test your mobile applications on a large number of devices at scale, you need an infrastructure that supports your ambitions. Why not try a cloud testing service that offers you everything you need, yet provides you with plenty of customization options? Try our mobile app testing cloud for free and see how you and your team can build better apps with continuous testing with Bitbar.
Image by Pexels via [source link] (copyright-free)