With the benefit of hindsight, developers have come to realise that leaving software testing activities until the end of the development lifecycle can be disastrous. Imagine a waterfall model for software development where every stage of the workflow must be finished before proceeding to the next.
When the testing phase is left until the end of the process and does not begin until the end of the development phase, the chances of critical bugs being discovered late is highly likely, resulting in inflated cost and delayed time to market due to the nature of the bug and the rework requiring additional time. NIST (National Institute of Standards and Technology) states that the cost of fixing software bugs during production increases up to thirty times more than fixing them in the requirements stage.
To help reduce or eliminate these costly changes, testing early in the software development process has been introduced. This early testing is also referred to as “Shift Left”.
What is Shift Left Testing?
Shift Left testing is the application of continuous testing activities early and throughout the entire software development process. It focuses more on problem prevention rather than problem detection which would help solve code/design issues early on before they become a showstopper later in the process.
In Shift Left testing, either a BDD (behaviour driven development) or TDD (test driven development) approach is encouraged to keep testability in mind. Testers are involved earlier to work with stakeholders, to gain a deeper understanding of requirements, design, coding, functionality, and to provide feedback wherever applicable. Additionally, developers can take up testing tasks by creating unit tests and performing basic tests themselves before merging their code into version control.
Here are some of the benefits in adopting a Shift Left testing approach:
- Reduced project cost. As explained above, the cost of fixing bugs is significantly less expensive when detected early.
- Increased software quality because of continuous testing.
- Improved time to market as potential bottlenecks are identified and resolved early, causing less rework.
- Improved customer experience because of fewer production issues.
- Adheres to the following Agile manifesto:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan