Introduction
When it comes to performance and load testing, it’s not uncommon that engineers/QA teams wait until the end of a product development lifecycle to start testing. Theoretically, this makes sense, as you can’t test an incomplete project, right? Well, maybe that’s not the case.
As Agile software development has become a popular way many companies approach engineering, this fast-paced environment can put pressure on testers, especially when there are strict deadlines. So what if instead of waiting until the end to test, devs/QA incorporated testing from the very beginning? This is called shift left testing.
The Issues With Waiting to Test
Before we get into the details of what shift left testing is, let’s look at why it can be problematic to wait until the end/near-end of a product lifecycle to test. First, if you postpone testing, any issues with your products architecture or design might go unnoticed until the end. What could have been a simple fix to something, now becomes a big issue as the product was believed to be almost complete.
Second, when you wait to test there is less time to fix any issues, especially when there are deadlines. Third, debugging becomes more of a chore as issues begin to compound the more a dev team works on a project. Finally, your testers/QA folks might be left out in the initial beginnings of a project, a time where they can voice concerns over perceived issues.
Shift Left Testing
Shift left testing, more or less, is the practice of incorporating software/performance testing at earlier stages of a product’s lifecycle. The ultimate goal is to have testers work alongside the development team in the early stages of development so they can work to prevent issues before they happen, rather than uncovering them at the end of a project.
By incorporating testing early on, testers can reduce time it takes to conduct testing sprints, they can help increase the software quality, and they can help eliminate any fatal issues that are usually discovered at the end. To make an analogy, testing at the end of a project is kind of like going to the doctors after you’ve come down with the flu. Shift left testing is like getting a flu shot and taking preventative measure to avoid the illness altogether. This method is perfect for teams that practice Agile development, especially when continuous testing is incorporated.
So How Does it Work?
The most important thing in shift left testing is having your testers work alongside your developers as the project evolves. Shift left testing brings testers and developers closer as the testing process is more intertwined with the development process, and that’s a good thing.
While testers may not be the most experienced programmers, when they work alongside the developers testers can get a better idea of what to test, how to test it, and how they can prevent any issues from happening. This allows the testing team to get a better sense of not only what to test, but how the development process works. Additionally, developers are closer to the testing process, providing them with more insight and awareness to any issues that may arise.
Four Approaches
Shift left testing can be applied to the traditional V-Model of software development in many different ways, as broken down by Donald Firesmith from the Software Engineering Institute at Carnegie Mellon University:
Traditional Shift Left Testing: following the V-Model, traditional shift left testing moves the testing process down and to the left side of the standard V-Model. The traditional method places an emphasis on unit and integration testing, rather than system-level testing.
Incremental Shift Left Testing: Incremental shift left testing is a more modern approach to shift left testing, especially for big projects. The project is broken down into smaller V-Models for specific parts of the development process. As the name implies, this form of testing brings scalable testing through the incremental development cycle.
Agile Shift Left Testing: As the name suggests, Agile Shift Left testing is used by teams that have multiple projects with short production/testing sprints. We can observe the shift on the right side where smaller V’s line up with the tests observed on the right side of the large V. This is where continuous testing is introduced and based upon short production sprints.
Model-Based Shift Left Testing: While the previous methods focus on bringing testing to the beginning of the development process, model-based shift left testing can begin almost immediately. Model-based shift left testing focuses on the testing of “executable requirements, architecture, and design models” [1. Four Types of Shift Left Testing – Daniel Firesmith]
Conclusion
Regardless of which approach you take to shift left testing, this method is becoming increasingly popular. By having developers and testers work alongside each other in production sprints, it allows them to understand better what requirements are needed for testing or how to fix an issue.
Shift left testing is a practical approach for incorporating continuous testing within any type of project. Shift left testing reduces the time you need to test, it can reduce the cost of testing, and it ensures high-quality software as QA runs tests early and frequently to locate any issues, while the developers can quickly fix them.