‘Shift-left testing’ moves a significant portion of your QA testing effort to earlier in the SDLC, often during — rather than after — the critical stages of system design and development. Whether your software development method is Agile, continuous, waterfall or any combination of these, testing early means improving the efficiency and productivity of your SDLC.
With this increased efficiency, teams can:
- Push features into customers’ hands faster
- Improve software application quality
- Reduce the QA testing execution time
- Reduce time spent performing re-work and defect corrections at the end of the SDLC
Read on to learn how to improve your software team’s SDLC efficiency by moving testing to the left.
Building a Continuous Feedback Loop
Testing can become a bottleneck when it is only conducted after the design and development phases have been completed. When testing finds an unexpected bug late in the SDLC, it can require teams to rework designs, coding and additional testing. This ‘re-work’ is a drain on time and money, and can demoralize team members who already committed so much effort to a release, and now have to revert back to it weeks or months later.
What are some best practices and benefits from moving a large portion of your testing to earlier in the SDLC?
First, invite the QA testers to all design discussions and reviews, and make them part of the development discussion. This will give them the opportunity to identify potential trouble spots, and missed business cases early in the process. In some scenarios, the QA testers are the ones who think most like a user, so they can bring value to this stage.
In addition, increase unit test coverage created by developers, and have your testers learn to execute and edit unit test scripts for updates. With experienced developers building unit and component testing into tools that use code they’re familiar with, the only training required is teaching your QA testers enough coding skills to be able to edit existing code.
With these process changes, your QA testers are involved early and develop a solid understanding of both the business intent of the software and the requirements the customer is requesting. At this point, your QA testers can create a full list of expected user workflows as well as unit test validation conditions.
With shift-left testing, your feedback loop for improvements spans the entire development cycle, rather than being concentrated near the end. Granted, during a traditional lifecycle, you will still get feedback from developers when questions arise during coding, but the bulk of the product review — with a customer in mind — occurs closer to the end. By moving testing up, you’ve increased feedback up front and reduced churn at the end.
Test Automation – Build it First, Not After the Fact
Test automation makes shift-left testing possible and builds collaboration between development and QA. However, test automation is often not leveraged properly or fully to shift testing left. Consider these statistics from a State of Testing Report:
- 74% of QA testers see test automation and scripting as a task they perform outside of the test execution cycle
- 45% of software organizations use test automation for unit tests, and only 50% use if for CI/CD
Test automation projects succeed more often when experienced coders create the automation, and QA testers edit (maintain), monitor and execute it. Why? Because test automation shouldn’t be done outside the testing cycle. If you leave it as an extra QA task, there will never be time to complete it, and the test automation project stalls.
Developing scripted test automation for end-to-end or complex functional regression test scenarios is extremely difficult to develop, let alone maintain. One way to develop the scripts is to team up a developer with coding experience and a tester who is familiar with finding defects in anticipated customer workflows, but that still leaves issues with maintaining those automated regression scripts.
Moving test development, including development of the automation test suite, to the beginning of the cycle builds three critical items for software application success, in both the long and short term:
- Automated unit tests
- Integrated component & unit tests
- An integrated, automated regression coverage test suite
Each of these is valuable for both development and QA to ensure the software continues to function as expected and to find defects early. If you release continuously or even frequently, automating your unit, integration and regression test suite is essential to gaining the ability to quickly check that a new code or release is functional before additional testing or coding ensues. Having these coded automation suites is essential for teams to be efficient and productive, and for organizations to continuously release higher-quality software.