Shift left is unquestionably the way to go in app development, but sometimes it’s necessary to incorporate a move to the right, encompassing post-production testing.
I have explained that while shift left thinking is crucial to the development of quality apps that behave as predicted, it is not necessarily a panacea for all ills.
Yes, it’s a way of thinking that, in software development at least, has the potential to deliver a set of real benefits, not the least of which is more satisfied business partners and customers.
A traditional waterfall software development project would have seen testing occur immediately prior to release into production. This meant that when flaws or usability issues were found − as they inevitably were − the release would be delayed until these were fixed.
In this model, testing became a bottleneck that seriously impeded the ability of teams to deliver software applications on time.
While it is well-established that shift left is the way to go, it should also be noted this testing approach may not always be able to deliver optimal performance and functioning in a real-world situation. Where this is the case, one source highlights that a shift right strategy − ie, post-production testing − may help to:
- Enhance customer experience.
- Provide scope for implementation of test automation.
- Ensure better test coverage.
In this shift right practice, you’ll test a completely built and functioning application to ensure performance and usability traits. Reviews and feedback from targeted users further help in enhancing the quality of the software.
An important aspect of the shift right approach is that it highlights the readiness to try out new solutions; collaborate with customers to identify what is working, and more importantly, what is not. It also provides continuous feedback from users − this last may help to yield a better response to software failures.
Best practices for shift left testing in Agile
It should be noted that the term shift left is really a misnomer, as it is not just about testing teams being involved earlier in the process of software development, but is in fact about continuous testing throughout the process of software development.
Where to start? Well, it’s always best to start at the beginning and that means planning. You need to design the development project in a manner that is friendly to shift left testing. Once requirements have been established, devs and testers should collaborate on how to shape coding and testing as early and incrementally as possible.
Depending on product expectations, as well as team limitations, specific strategies might have to be fashioned to accommodate a shift left approach.
Depending on product expectations, as well as team limitations, specific strategies might have to be fashioned to accommodate a shift left approach.
The following are recommended strategies for DevOps teams that aim to assist to implement a shift left software testing model; these include demand planning where test analysts engage with business and operational stakeholders, providing a forward view of demand.
Having this view enables you to plan and finalise various matters, such as budget, resourcing and test strategies, ahead of time. Demand planning is also noted as an integral part of the shift left approach and provides a starting point for all other activities in the test lifecycle.
Static code analysis is the practice of checking the code without executing it. It runs through the basic code structure and ensures the code is aligned with standards and guidelines. Generally, the static analysis looks for the following issues:
- Programming errors.
- Violations of commonly followed coding standards.
- Syntax anomalies.
- Security issues.
The purpose of static code analysis is to find defects early in the lifecycle that could prove to be very expensive to remove in the later phases. It is also recommended to use checklists to verify and validate requirements and design, as well as log defects into a defect management tool.
A high-level strategy − referred to as a unified test strategy − is defined as testing end-to-end, from unit testing through user acceptance testing, operational readiness testing and post-deployment testing.
The strategy will cover all phases of quality control, defining clear responsibilities. A unified test strategy approach will assist to analyse dependencies on environments, stubs, automation and test data − ensuring respective teams can fulfil the prescribed requirements.
Risk-based analysis is carried out to determine the impact and likelihood of failure for each test scenario. This approach is used for functional, non-functional and regression types of testing.
Once the test cases are established, you will need to decide on priorities based on the finished analysis, and discussions will be necessary with the business analyst or designers on the likelihood of failure and its possible impact.
The bottom line is that the shift left approach is an important transformation in the software development lifecycle, which goes from ‘early defect detection to defect prevention’.
It allows testers to be involved throughout the process by testing continuously to identify and reduce defects as early as possible. This leads to a reduction in the overall cost of projects, as well as decreasing the time to market.
Shift left testing requires teamwork. Incorporating testing into the development phases means they can predict flaws even before they are created. Therefore, testers will get to understand the requirements and functionality of the design early on.
In the end, the shift left approach will improve the quality of the product and the customer experience.