In this blog, I will show you the pivotal role Quality Gates (QGs) can have within the software development process. I will delve into their application, benefits, and indispensable function in guiding your software projects to successful completion.
What Is a Quality Gate?
In short, a quality gate is a milestone or a point in a project that is used to mark progress toward the project’s goals. The term quality gate originally came from the field of manufacturing, particularly in the automotive industry. It referred to specific checkpoints between stages of the manufacturing process, where product quality was inspected and evaluated to ensure that it meets the required standards.
Over time, the term has been adopted by other industries, such as the IT industry, where it refers to the various stages of software development that must be passed before a product can be released to production.
The concept of quality gates is derived from the broader concept of quality assurance, which is a set of processes and techniques used to ensure that a product or service meets certain quality criteria.
If, at some stage, the criteria are not met, the product “does not pass the gates” and requires additional work.
Usually, QGs are usually based on checklists. These checklists are used at the end of each stage of the product development process. These checks can include questions on project scope, budget, risks, metrics, or any other criteria.
Benefits of Quality Gates
The first and most important benefit of using quality gates is improved product quality: the QGs confirm that the product meets the required quality standards by identifying defects and issues early in the process. They also help reduce risks and costs because by finding and fixing issues early we minimize rework and possible delays.
QGs promote better communication and collaboration among team members by setting clear expectations regarding quality and maintaining process transparency and accountability for managers. As a result, a team using QGs achieves enhanced customer satisfaction by delivering higher-quality products that better meet their needs.
In general, the purpose of QGs is to ensure every project follows a set of pre-defined rules and best practices at every stage to prevent common risks and increase the chances of successful delivery.
Quality Gates in Software Development
Let’s look at the examples of quality gates that can be implemented at different stages of the software development process. I will be using this simplified product development lifecycle consisting of 5 stages.
Stage 1 of 5: Research
At the research stage, we mostly use reviews and team training as QGs.
Before we start, we review the research plan ensuring that the research goals are clearly defined, the methodology is appropriate, and the research design is sound.
During our research stage, we need to check the quality of the data that we collect. Criteria here can be completeness, accuracy, and consistency so that the data is reliable and valid.
At the end of the research stage, we review the final results and confirm that our results are reliable and consistent with the research objectives. Optionally, an independent peer review panel can be involved providing additional insights on the research project.
Finally, we may want to conduct product training for the teams (in case it’s already an existing product) as well as introductory and kick-off meetings.
Stage 2 of 5: Requirements and Design
At this stage, we communicate with stakeholders, end users, and the team.
Interviews with stakeholders are the most common way for the business analyst to find out the client and end-user needs. During these interviews, we create models and scenarios, identify gaps, contradictions, or inconsistencies, and share them with the stakeholders asking them to check and confirm the results.
A traceability matrix is created to ensure that all requirements and corresponding designs are linked to a specific stakeholder need or business objective.
Requirements validation is done to ensure that the criteria for consistency, feasibility, and testability are met.
At the end of the requirements and design stage, we obtain sign-off from the stakeholders. This sign-off confirms that the requirements and designs are complete and accurate, and meet the expectations of the client.
Stage 3 of 5: Development
During the development stage, code review and static code analysis ensure that the code is written according to the coding standards, maintains a reasonable level of complexity, and is free of potential errors.
Unit testing is also a QG implemented to test the code in isolation and identify defects early in the development process.
Also, the development stage is the first stage where we can use automated QGs.
Stage 4 of 5: Testing
At this stage, test documentation is reviewed by other team members to ensure it’s traceable and covers all the requirements and scenarios necessary to test the product.
Reviewing test execution results ensures that the tests have been executed correctly and that any defects or issues found during testing have been documented and addressed. Criteria here can be metrics like “95% of tests passed” or “No priority 1 defects have been found”.
Also, we may implement a code coverage review to confirm that all parts of the code have been covered by test cases. For example, there are specific metrics for how many functions, statements, or code branches are covered.
And finally, client acceptance testing is a good example of QG. It’s done according to the criteria outlined in the requirements and ensures that the product will work as expected once deployed.
Stage 5 of 5: Deployment
When the product is deployed, we run a smoke test in production (sometimes it’s limited to read-only actions), which is also an example of applying a QG.
Later we continue to monitor the performance and usage of the software. This includes logging, tracking error rates, and system performance metrics.
Alerts and notifications help address issues in production quickly and efficiently. Azure Application Insights tool is a good example of that.
We also collect feedback from the end users on a regular basis to ensure that the software continues to meet their needs and expectations. For example, a QG here can be represented as a survey or a questionnaire sent out to the clients within a few weeks after deployment.
Now, let’s summarize. To use quality gates in your software projects:
- Clearly define criteria that must be met to pass a QG. Make sure that these criteria are aligned with the overall goals and objectives of the project.
- Apply automation wherever possible to reduce the risk of human error and ensure consistent results. As mentioned earlier, we can use tools such as static code analyzers or test automation frameworks during the development and testing stages as well as automate CI/CD pipelines.
- Communicate QG results to all stakeholders, including developers, managers, and business leaders. This helps ensure that everyone is aware of any issues and can take appropriate actions to address them.
- Continuously review and refine QG criteria: this is important as the project progresses and its requirements evolve over time.