Editor’s note: ScienceSoft warns you: putting off testing until later stages of the development cycle, you risk undermining software quality. To successfully combat and prevent software quality issues, Tatyana advises taking up a shift-left approach to testing. Below, she summarizes what this approach entails and shares shift-left practices we take at ScienceSoft. Read on for some useful tips and don’t hesitate to turn to our QA consulting services for in-depth recommendations.
Having analyzed ScienceSoft’s projects I participated in as a test lead, I can say that nearly 60% of all software defects emerge during the requirements phase, about 30% – during the design phase, and only 10% – during development. Therefore, to improve software quality and prevent defects from entering later stages of the delivery cycle, we at ScienceSoft prefer taking a larger share of QA activities closer to the beginning of the delivery pipeline or, simply put, shift them to the left. And this is exactly what a shift-left approach to software testing entails.
When do we take a shift-left approach to software testing?
At ScienceSoft, we opt for shift-left testing in projects dealing with complex, innovative, and non-trivial software or when validating platform-based applications with a large share of customization.
For instance, testing custom CRM for the automotive domain, I involved a test team in the project activities already at the stage of requirements validation and augmented manual testing efforts with test automation at the API and UI levels. The development team, in its turn, increased the share of unit testing. This allowed us ensure the high quality of CRM under test, which was then successfully implemented at several dealerships of a leading European car manufacturer.
On the other hand, taking a shift-left approach does not pay off in simple, short, and typical projects, such as, say, testing of a mobile app with a single user role. I find the value of shift-left techniques in projects dealing with platform-based applications with a few introduced customizations little as well.
5 proven shift-left testing practices we implement at ScienceSoft
I summarized the experience that our company has in applying shift-left testing techniques in software testing projects and listed the practices you may consider taking up to realize the shift-left approach in your project:
1. Involving test teams in a project right from its initiation
To eliminate unclear and contradicting requirements and improve the end user experience, I prefer to involve test engineers in the clarification and prioritization of application requirements. Test engineers check the already available or newly created requirements or user stories for clarity, consistency, testability, and traceability.
2. Involving development teams in the software validation process
In ScienceSoft’s projects, ensuring software quality is a responsibility shared among all project teams, and development teams are involved in the quality assurance process as well. Developers are encouraged to stick to code quality guidelines. To keep the code quality under control, we regularly monitor such metrics as code readability, clarity, maintainability, extensibility, cyclomatic complexity, and the depth of inheritance.
As a part of a shift-left approach, we also increase the share of unit testing, which is performed by development teams. My colleague Vadim Belsky, Head of Web Development at ScienceSoft, advises: “To make sure that unit tests reflect recent changes introduced to software and provide accurate feedback on its quality, unit tests should be included into the general code review practice”.
3. Performing module testing
At ScienceSoft, test engineers break an application functionality into modules based on their functional similarity. For instance, validating an ERP application, we singled out production planning, purchasing, inventory control, and other modules. I think that thoughtful modularization is particularly relevant to linear projects with a strict release deadline. In such projects, a test team can start validating isolated modules during the development phase without posing the risk of regression, thus shortening the test phase while ensuring high software quality.
4. Increasing the share of testing performed at the API level
I prefer not to wait until an application’s UI is ready and start testing activities already at the API level. Depending on the project scale and specifics, I may opt for manual or automated API testing, or combine them. The tools of choice for API testing include RestSharp, SoapUI, REST Assured, JMeter, and Fiddler.
5. Setting up CI/CD pipelines to further improve test process efficiency
At ScienceSoft, we often choose to set up a CI/CD pipeline to increase test process efficiency further, which is particularly relevant for agile testing. With CI/CD in place, tests are automatically triggered upon every new code commit, which allows achieving fewer post-release errors and ensuring quick and reliable application updates.
Improve your test process with shift-left practices
My experience shows that a shift-left approach to software testing catalyzes improvements in test process efficiency and overall software quality. Still, there’re factors that may hamper the implementation of shift-left practices, such as a lack of considerate planning or immature project management. Also, development teams may be reluctant to fully dedicate to ensuring high software quality.
If you feel like lacking experience or resources to implement a shift-left approach to testing, ScienceSoft would be happy to help you. You are welcome to leave us a request.
Compliance requirements have many nuances. We carefully analyze each customer’s situation to identify, prioritize, and help eliminate any compliance gaps.