This post is from the Experitest blog and has not been updated since the original publish date.
Shift Gears with Shift Left
What is shift left?
Shift Left is one of the biggest buzzwords in digital application development. Why?
In the "age of the customer", customer experience is what makes or breaks organizations and digital experiences are at the forefront of customer experience. Web and mobile applications are used to provide consistent customer experiences across all channels, at any time and everywhere. Development organizations are under pressure to constantly ship new web and mobile applications, within shorter timeframes but without compromising quality.
The evolution of software development
As software delivery cycles grew shorter, software development has undergone a paradigm shift. Sometime during the last decade of the 20th century, as the internet started to gain a foothold and reliance on technology became ubiquitous a paradigm shift started to brew. Several new development methodologies and processes were introduced, all with the purpose of speeding up the development cycle: Continuous Integration, Agile, DevOps and Continuous Delivery are the most notable. There is a common thread to these new practices: developing in small increments, committing code often and fostering communication – all designed to allow change and achieve early validation of the software.
The cost of error
The underlying logic behind the new development practices is to allow business agility and adaptability. Not less important is the ability to catch problems early. Research has shown that the earlier bugs and issues are detected, the easier and cheaper they are to fix.
While greatly improving the speed of development, there is one thing that Agile and DevOps do not fix and that is that testing is still a phase of its own conducted by dedicated testers. The result of this separation is that testing has remained and even grown as a bottleneck. Paradoxically, the shorter the release cycles, the more testing slows down the cycle, especially if it is not automated. The reason for that is simply – the number of tests is only partly related to the amount of new functionality in a release. The vast majority of tests are regression tests, designed to ensure that nothing was "broken".
Another issue with the separation of the development and testing phases is the misalignment of ownership and goals – the person in charge of writing code is not measured on its quality and has no incentive to ensure it is "automation-friendly".
Many developers naturally consider these aspects, but it is not part of their responsibility. And when deadlines loom on the horizon - quality takes a back seat. That is exactly where shift left comes in.
Enter Shift Left
Shift Left means conducting quality and testing activities much earlier in the development cycle. It means testing starts as soon as development - or even design – begin. Furthermore, it places responsibility for quality in the hands of developers as well as test engineers. Shift left is more than a simple change in timing, Shift Left implies a shift in mindset, a shift in responsibility as well as a shift in organizational processes and structure.
The Shift Left Continuum
While companies differ in how far left they progress on the Shift Left scale, they do share several common aspects:
- Focus on test automation – even in the early unit testing stage
- More collaboration and resource sharing between dev and test teams
- Quality focus throughout the development lifecycle including test focused design methodologies such as Testing Driven Design (TDD).
Shift Left in practice
Whatever your flavor of Shift Left, introducing quality and automation early to the development process requires some changes. These include:
- Roles and responsibilities
- Infrastructure and tools
Organizational impact of shift left
From an organizational perspective, the growing focus on early automation implies a resource shift from manual testing to test automation.
Tools and enablers for Shift Left
A shared digital quality lab
A shared testing environment comprised of browsers, mobile devices, simulators, and emulators, that allow large scale parallel execution. Such a shared environment helps:
- Achieve scale and speed
- Uniform testing processes across digital platforms
- Share resources, promoting efficiency
- Share and reuse test cases between developers and testers
- Drive quick and valuable feedback
- Consolidate test results, enabling analytics and actionable insights
An integrated toolchain
One of the things that the paradigm shift in software development helped change is the dependence on monolithic systems that perform a process end-to-end. In today's fast-paced DevOps/Agile/CI culture, different tools may be used by different teams to perform a specific function in a way that best suits their need. For example – select a test execution environment that can run tests developed in various languages and in any framework. That way your developers can use XCode or Espresso to develop tests, while your automation engineers may prefer Appium.
A well-integrated toolchain prevents manual intervention, reducing errors and speeding up the development cycle. Choose open tools that can adapt and integrate easily to streamline handovers and avoid disconnects.
The need to release digital applications often has led to a paradigm shift in application development. While methodologies such as Agile, DevOps and CI/CD are speeding up development, quality has often been left behind. In order to ensure that speed does not come at the expense of quality, organizations are bringing in quality much earlier in the development cycle – or "shifting left" the timing of when quality is introduced on the development timeline. Shift left requires a change in organizational structure, in tools, and in methodologies, but every organization can find its own Shift Left sweet spot on the Shift Left continuum, and the rewards are substantial.