Shift-left is a great way to describe the idea of moving something to earlier steps in the development and deployment lifecycle. As processes are written down from left to right on paper or in process design tools, starting earlier in the process means moving, or shifting, left in the process.
The idea of shifting left in the application design and development process to improve the quality is not new; it has been around since the 1950s. What is new is how far the industry has come in terms of the variety of automation tools available to run different types of testing.
The model of continuous testing to provide a consistent artifact which can be relied on being shifted-left will take repetitive work away from the developers and free up their time to resolve the defects found and enhance business functionality. Having continuous testing tools available earlier in the process allows for the development and QA teams to better target testing at individual subcomponents that will provide a more insightful testing which leads to higher quality application to the clients who will ultimately consume it.
On the Far Right is Acceptance Testing
On the far right side of any process is the final validation of an application or service to ensure it meets requirements before it is released for general use. Many times when using waterfall based development, this is the first point where the system can be fully exercised which results is defects being found in both the code and the design they are built using. It is extremely costly to start to retrofit changes at this stage and often timelines need to be pushed to accommodate all the fixes. This either results in late delivery or known bugs going live with the application, often serious ones.
It is this reality that has lead to more companies moving to incremental and agile development processes, and to shift-left their testing to find these defects earlier where they can be fixed faster and easier.
On the Far Left is Unit Testing
Ultimately on the far left is unit testing all the individual functional pieces which are being developed. This is something which developers have complete control over and is easy to automatically run these tests and validate the output as part of any continuous build program. There are organizations which include some measure of performance testing even at this stage to ensure it can handle multiple users without failing. It isn’t about meeting specific numbers, it is more about not introducing bottlenecks.
Types of Tests Addressed by Shift-left
Unit testing and acceptance testing are old news at this point. It’s in the area between them that you find the areas that are ripe for innovation and automation as part of a shift-left testing strategy, which can then be integrated into the continuous integration and continuous delivery pipelines.
What does this look like in practice? For one example, consider performance testing. Performance testing can be performed at any stage of testing as long as its scope matches the type of testing being done. The performance testing is often be informational, but can be used as a “has to be at least as fast as last time” line in the sand to ensure a consistent experience for the application consumers.
As other examples, consider integration testing and system testing. Integration testing is where the application components are tested together for the first time, while system testing means testing the entire application end-to-end. With proper unit tests in place, it is effective use of resources to combine these types of tests by creating regression tests that represent actual business flows from the application’s use cases and storyboards. When an application is deployed into acceptance, or staging, having a list of successful and business meaningful tests included as part of the documentation it provides a much higher level of confidence and will more easily pass through any change and release management processes that are in place.
Organizations should strive to continually shift-left their continuous testing practices and tools until they are in all steps of the development process. From unit tests to performance tests to performance tests, there is no area where the shift-left concept will not improve the development process and deliver higher quality applications and services to your internal and external clients.