Quality engineering vs. quality assurance: Know the differences
Any dev team serious about improving software quality should study the quality engineering vs. quality assurance debate. Let's review the two practices' differences and overlap.
Within software product development, quality engineering and quality assurance are often lumped together. However, these practices are far from synonymous. Quality assurance can be considered a part of quality engineering, but they have significant differences in scope, focus and approach.
Quality engineering is about processes. It's an approach that aims to incorporate quality throughout the product lifecycle by developing and executing processes to achieve that goal. Quality assurance, on the other hand, is a process within quality engineering. The quality assurance process implements advanced testing techniques that hope to detect and remediate as many defects as possible to ensure stable, usable software that functions according to specifications.
Let's examine the QA vs. QE question and how dev teams implement these approaches in software development, testing and deployment.
The focus of quality engineering
Quality engineering spans the entire product lifecycle, not just the software development process. When teams implement strong QE, it begins long before the development lifecycle. Ultimately, QE provides focus on testable requirements that are implemented through the creation phases and beyond.
On the other hand, quality assurance has a more defined focus. Simply, QA looks to improve quality through testing. Although quality assurance requires various testing types throughout the lifecycle, the focus is on the detection of defects as opposed to the prevention of them.
Since QE focuses on building in quality into processes, it can be more proactive and future-proof than QA. For example, a customer-centric focus prioritizes customer needs and user experience throughout the development cycle. By following a QE focus, it builds usability in much earlier in the development process, as opposed to finding usability issues during testing or potentially in production.
Another benefit of the QE approach centers on transparency and traceability. When teams incorporate quality earlier in the development process, it forces developers to focus on feature design through the testing phase and into the integration phase.
Lastly, the focus on defect prevention instead of defect detection leads to fewer defects, faster velocity and reduced costs. When teams detect defects in areas such as performance, stress and load, security or network bandwidth, the remediation usually involves design changes that require lots of time and money. If teams can instead prevent these defects, they can deliver a product to market faster and for less money.
The scope of quality engineering
The scope and length of QA vs. QE is also a major distinguishing factor between the two processes. Whereas QE processes span the entire product lifecycle, QA is much narrower.
The goal of quality assurance is to deploy appropriate test types, designs and techniques to detect defects as early as possible in the development cycle. Even with strong QE processes, defects will still happen. Therefore, QA is an integral portion of QE.
Quality engineering employs quality assurance processes -- such as shift left and shift right -- where testing begins during development and continues throughout development and into post-production monitoring.
For example, shift left entails techniques such as test-driven development, where teams write tests prior to coding and then develop code so that the tests will pass.
Shift right includes techniques such as canary testing and A/B testing, which limit the risk of continuous deployment by releasing to limited groups of customers.
The approach of quality engineering
A quality engineering approach can be applied to any software development methodology, but it aligns especially well with Agile and DevOps processes.
Agile development often employs the Three Amigos technique, which brings together a business analyst, developer and quality engineer into backlog refinement workshops. This meeting ensures that user stories follow the INVEST principle. This approach is a QE process because it ensures transparency, clarity and customer focus.
DevOps brings developers, testers and operations specialists to ensure quality throughout the CI/CD pipeline. QE processes build in quality and prevent defects. For example, teams will perform a series of steps, some of which are automated, as software is released to identify potential defects. Or a team might provide early feedback on potential defects in the CI/CD pipeline.
Teams that want to move from a QA to QE approach will need to overhaul their staff and culture. They will need to create new roles, including software development engineers in test (SDETs), CI engineers, performance and security test specialists and user experience testers. All members of the newly expanded team will also need to recognize that quality is everyone's responsibility, and that it belongs to more than just certain development roles.