In one of our previous blog we talked about “Does the Shift-Left approach really help improve the quality of the software application?” Where we also looked at the graph based on hypothetical numbers that how Shift-Left approach helps to lower down the bugs at the time of release.
In this article we will discuss the approach to implement Shift-left approach effectively.
Thought Shift-Left approach can vary depending on the organisation and/or project needs but there are certain changes that can surely be picked from this article.
While implementing the Shift-Left approach, we must focus on each phase within SDLC and this would, in turn, help us strengthen the product quality. Let’s go through each phase and understand how to further implement this process in SDLC.
● Requirements Elicitation - During the requirement gathering phase, all the stakeholders should be included like Business analysts, Product owners, Development teams, QA teams, and Ops teams to discuss the Client’s requirements, draft requirements understanding and questions.
● Eliminate Gaps - Including a representative from each team, it will ensure that all parties are able to understand the Client’s needs and suggest ways to shape them better for building the product. Each team would put their best foot forward and share the expertise from their area of work and level of understanding. As they say, “Bugs are cheaper when caught young”, so by involving each party in requirement gathering discussions one can get the enhanced version of requirements as it would have gone through a refining process already.
● Better collaboration - Ensures that all parties have right understanding and expectations from the AUT and would have a common goal of meeting the quality standards
Application Architecture and Software Design
● Architecture design and review - Along with the Software Architect and Performance & Security Engineer should be involved and discuss the software architecture and software design of the application considering factors like scalability, maintainability, and reliability. For example, including performance and security engineers during the design phase is important as they can provide inputs with respect to the overall performance of the product and security checks to be imbibed.
● Most of the applications fail at the later stages because the Performance and Security checks are not considered in the early phases. The Shift Left approach focuses on every aspect that contributes towards the quality of the product.
Define Processes and Quality Standards
● Define Quality Standards - The standards should be defined for each team (QA, Dev, & Ops) which they need to follow as this will ensure everyone is contributing towards Quality. For example, the branching strategy & code review standards should be defined for the Dev team, create and update requirement traceability matrix should be done by the QA team, document the release steps (SOP) for the Ops team
● Define Processes - The process should be defined and communicated to the team. For example, defining journey of a ticket,
○ Qualified Ticket - A ticket to have certain details like scope, steps to perform, estimates, acceptance criteria. If a ticket contain these details only then it should be considered for the development.
○ Eligible for QA - A ticket should be considered ready for testing only if the development team has reviewed the code, and did the unit testing.
○ Ticket Closure - QA should ensure the acceptance criteria is fulfilled before closing the ticket
● Unit Testing - The Development Team is responsible for coding the product. At the same time, they are responsible to ensure that the product which they are going to build meets the quality standards, but how can they ensure that? In order to meet this goal during the Development phase, we must incorporate process standards to ensure that every module is being Unit Tested by the developers. Focussing on Unit Testing during the Development phase, help eradicate bugs much early.
● Static Code Analysis - Also, the use of tools like Sonarlint helps to keep the code quality in good health.
● Start Testing Early - Enable QA team early to test. For instance, APIs testing can be started before its integrated with web/mobile interfaces. This helps catch defects early and during integration with web/mobile interface, QA can focus on more integration scenarios resulting in overall enhanced quality and saving time/cost.
Automation Testing - With these tests being performed early, it gives more time for further quality checks. Like, QA Team should focus on automated tests to automate the repeated tasks and the core functionality of the product.
Continuous Testing - Establish a continuous testing using CI/CD pipeline to reduce turnaround time. The tests can be executed at each stage of the pipeline, starting from unit tests to system-level tests to ensure each stage is tested before moving forward.
If above mentioned activities are done then the overall system and product will be in good shape at the time of release.