
These three terms, Software Testing, Quality Assurance, & Quality Engineering, are often used interchangeably. Looking at the history of software development, both Software Testing and Quality Assurance have been used since the 1950s, while Quality Engineering has been focused on the manufacturing industry.
But, are they the same? Do they differ? What’s this newer term — Quality Engineering — in software?
Defining Terminology
Software Testing: a process to verify and validate that a software app is free of bugs and meets the requirements. To a lot of people, this can mean a “checklist” style approach. Does it work? Check! Did it fail? That’s a bug! It’s a binary approach: pass or fail. If everything passes, you’re good to go. If there’s a failure, fix it, and repeat the process until everything passes. This is what most people think of when hearing about QA.
Quality Assurance (QA): a system to evaluate and demonstrate software to ensure adherence to a standard, process, and procedure, in order to increase confidence and decrease risk. QA is still often viewed via the waterfall model as the last step in software development, with a heavy adherence to analysis (evaluation) and “manual” steps to demonstrate proper functionality of the software. Here, we move beyond checklists and create a system.
Quality Engineering (QE): a discipline that focuses on integrating quality principles and techniques throughout the entire SDLC process. It’s a holistic process. The goal of QE is to prevent bugs, glitches, & defects; optimize the SDLC process; and decrease risk for both customers and business stakeholders.
But wait…aren’t those things also present in QA? As techniques, processes, and procedures change over the years, so must the terminology and definitions of terms. QA often saw a separation of tasks: “manual testing” and automation testing via SDETs. QE combines those tasks and skills into one discipline.
My personal definition of Quality Engineering is: the convergence of People > Process > Product. In that order!
This focuses us on a people-first mindset as software is developed by people, for people. Process describes an optimized and efficient SDLC with quality reviews at each stage. And product is producing a high-quality final result for the business and customer.
Concepts & Techniques of QE
QE is a full engineering discipline that utilizes the following concepts. These techniques can be utilized at different stages throughout the SDLC model.
People: personal psychology, customer- & business-centric, and team ownership over quality guided by a Quality Engineer.
Process: CI/CD, test automation, shift-left, continuous monitoring, quality gates, observability, process optimization, traditional testing techniques, root cause analysis (RCA), systems thinking, creating a Quality Management System (QMS), DevQualOps, and digital transformation.
Product: early tester involvement, requirements analysis, bug prevention, and test planning & strategy.
This is not an exhaustive list, but one that can be built on over time.
Eventually, as the industry continues to evolve, it will likely turn into a Total Quality Management System. I’m already seeing the beginnings of that evolution. But right now, I think most teams can begin a QMS inside of Quality Engineering.
Benefits of QE
As you see, QE is heavy on process and systems, where you engineer and build in quality from the very beginning. Quality should not be an afterthought!
Efficiency: Less time wasted due to automation; quality gates mean intentional & faster release cycles. Less tester downtime just waiting for developers to finish. Everything is purposeful, intentional, & repeatable.
Fewer Bugs, Glitches: Being proactive and not reactive. You’re building a plan and strategy from the start. Testers are actively testing at each SDLC phase will ultimately mean fewer bugs in production.
Saving Money: By creating repeatable systems for your processes and being reactive, you’re finding and fixing defects earlier. This lowers your costs. Once a bug is in production, it’s always more expensive to fix!
Less Risk: Deploying bugs to production is costly, causing too much rework. It lowers your company’s reputation. By setting up a Quality Engineering System, you have more confidence that your software works as intended.
Improved Satisfaction: Using software is an emotional process for users. You want to help them achieve their goals and not upset them or waste their time. Engineering quality into your product and processes is all about helping your customers and helping the business succeed! It’s a win-win for everyone!
Takeaways
The primary goal of Quality Engineering is that your testers are engineers who do more than checklist work. While they aren’t designing or developing feature code, they are actively involved in building the test/quality strategy, doing root cause analysis of bugs, requirements analysis, fixing bugs, writing test automation, etc. This gives them an opportunity to grow their skills & to lead. They understand the user, as they are the first users of the software. They are an outside observer who see the forest through the trees or the sea through the waves!
Where are you in your quality journey? Are you bogged down in bugs? Do you follow a checklist? Do you have a process in place? Do you need a system?
If you’re ready to get on board and improve the quality of your software, we’d love to help!