Delivering quality software—software that delights customers and meets stakeholders’ expectations—is a journey, not just a checkpoint. Too often, people conflate quality with testing. This may be because software testing has historically been referred to as Quality Assurance (QA), reinforcing the misconception that testing alone ensures quality.
Even within testing, the term is frequently misunderstood, reduced to merely finding bugs or breaking software rather than enabling the delivery of reliable, valuable, and user-centric solutions. In this piece, I want to break down the distinctions between software quality and software testing, why they matter, and how teams can move beyond these misconceptions to build truly high-quality software.
What Is Software Quality?
Quality is an intrinsic and relative value—what one person considers "high quality" may not meet another’s expectations. This is especially true in software development. When we talk about software quality, we need to consider who defines quality and how we assess and measure it.
Quality Is Defined by Stakeholders
Quality software is software that meets the expectations of those who matter—stakeholders, customers, users, and business owners. These are the people who use the software, invest in it, and ultimately define what "quality" means in their context. Engineering teams work for these stakeholders, and our ability to deliver quality software depends on understanding their definition of quality.
What Does It Take to Deliver Quality?
Ensuring quality software requires more than just testing. It involves a combination of:
Communication: Do we truly understand what stakeholders and customers want? Are we going beyond verifying requirements and instead ensuring we're solving the right problems?
Collaboration: Do teams work together effectively? Do they share a clear understanding of what "quality" means to stakeholders? Are they able to communicate and clarify uncertainties?
Processes & Practices: Quality is built into software through disciplined coding practices, code reviews, software testing, automation, CI/CD pipelines, and feedback loops—all of which shape the end product.
What Is Software Testing?
Software testing is one piece of the quality puzzle, but it is often misunderstood. Testing is frequently reduced to finding bugs or verifying that requirements were met, but in reality, testing is much broader and more strategic. Software testing is a critical investigative process that evaluates software behavior, identifies flaws, and highlights potential risks. It provides valuable insights that help teams assess software readiness and make informed decisions about its quality and reliability.
Testing Happens at Every Stage of Development
Testing should be embedded throughout the entire software lifecycle, before, during, and after coding:
Before coding: Understanding risks, defining acceptance criteria, exploratory testing of prototypes.
During coding: Unit testing, pair programming, static analysis, shift-left testing approaches.
After coding: Automated regression testing, manual exploratory testing, performance and security testing.
Before and after deployment: Canary releases, observability, production monitoring, feature flagging strategies.
This holistic approach to testing (inspired by Lisa Crispin & Janet Gregory's Holistic Testing principles) ensures that quality is continuously assessed and improved, rather than tested in at the last minute.
Why This Distinction Matters
Understanding the difference between software quality and software testing is crucial because achieving quality software requires many different strategies—of which testing is only one.
Over the past few years, the term Quality Engineering (QE) has gained traction, signaling an industry shift. Organizations are beginning to recognize that delivering quality software goes beyond tools and is about creating a culture of quality that permeates all engineering teams.
Ultimately, delivering high-quality software is about mindset, collaboration, and continuous improvement—and testing!
How does your team approach quality? Have you seen the shift from "QA" to "Quality Engineering" in your organization? Drop a comment and share your thoughts!
Quality Engineering goes beyond meeting stakeholders requirements & expectations. Quality Software goes beyond understanding what our customers want; how teams collaborates; and good processes & practices.
Quality software includes maintainability, flexibility, interoperability, all these "invisible" requirements that make Software development much more easy; make any troubleshooting and updating a walk in the park. These criteria's might be under good "Processes & Practices", but not all teams have the same definition of what is good practices.
An application might meet all Customer's requirements and might please everyone; but if it's a pain for development to work in the software and if they struggle each time they touch it, then we don't have good quality software.
I've seen it many times when customers are happy, sales are going up, everyone is congradulating themselves, and then I raise my hand and say "the software is sh...t". Developpers are afraid to touch it. Fixing bugs takes weeks of regression (or pre-prod testing). We are stable in production, but quality of the software is not there.