About Blog Contact Links Vault
Latest
Home / QA Fundamentals & Best Practices / What QA Testing Actually Is (And Why Most Explanations Get It Wrong)
QA Fundamentals & Best Practices
9 min read · December 20, 2024 · Updated May 22, 2026 · 429 views

What QA Testing Actually Is (And Why Most Explanations Get It Wrong)

Every explanation of QA testing says the same useless thing. This one starts from what QA actually is, what the terminology means in practice, and what the process looks like on teams that do it well.

Share:

Every explanation of QA testing starts the same way. Quality assurance is a critical component of the software development process. Its primary goal is to ensure software products are reliable, functional, and meet the desired standards before being released to users. That sentence has been copy-pasted into thousands of blog posts and it tells you nothing useful. It describes QA from the outside, from the perspective of someone explaining a category, not someone doing the work. If you are trying to understand what QA testing is because you are about to do it, manage it, or build a career in it, that definition is not where to start.

QA testing is the practice of finding out whether software behaves the way it is supposed to, under conditions that matter, before those conditions occur in production. That sounds similar to the standard definition but the difference is in the details. Conditions that matter means you are not testing everything equally. You are making judgments about risk, about what failure modes are expensive, about where the system is most likely to break under real usage. Before those conditions occur in production means the value of QA is in the timing, not just the detection. Finding a bug in testing is worth significantly more than finding the same bug after it ships. QA testing is fundamentally a risk management function, not just a verification function, and understanding that distinction changes how you approach every testing decision you make.

The Terminology That Actually Matters

QA has a vocabulary that gets used inconsistently across teams and companies. These are the terms that come up constantly in real work and are worth having straight before you are in a context where someone uses them and expects you to know what they mean.

A test case is the documented specification of what you are going to test, under what conditions, with what inputs, and what the expected outcome is. Test cases can be formal and written out completely or they can be informal notes you make before an exploratory session. The level of formality depends on the team, the context, and the risk level of what is being tested. A test suite is a collection of test cases that together cover a particular area of the system, a feature, a user flow, or a regression target. The suite is what you run. The individual test cases are what it is made of.

A bug, a defect, and a failure are three different things that people use interchangeably when they should not. A bug is a flaw in the code. A defect is a deviation from the expected behavior of the system, which could be caused by a bug in the code, a problem with the environment, bad test data, or a requirement that was misunderstood. A failure is what you observe when you run a test and it does not produce the expected result. A failure points you toward a defect. A defect investigation leads you to a bug. Keeping these distinct matters because it helps you write better bug reports and have more precise conversations with developers about what you found and why it matters. Writing effective bug reports is one of the most underrated skills in QA, and it builds directly on getting this vocabulary right.

A test plan is the document that describes the strategy and scope for a testing effort. It answers what is being tested, what is not being tested, what approach will be used, what the entry and exit criteria are, and what risks exist around the testing effort itself. Test plans range from a single paragraph to a formal multi-page document depending on context. The important thing is that the thinking behind the plan happens even when the document does not get written down, because the decisions embedded in a test plan are what determine whether your testing effort is well-targeted or just busy.

The Testing Types You Will Actually Encounter

The taxonomy of testing types is long and most of it is academic. What follows are the types that come up in real work, in real team conversations, and in job descriptions for QA roles at every level.

Manual testing is testing where a human executes the test steps and observes the results. The human element is the point. Manual testing is most valuable for exploratory coverage, usability assessment, and scenarios where the expected behavior is too complex or ambiguous to specify precisely enough to automate reliably. It is also the entry point for most QA careers, because understanding how to test well manually is the foundation for understanding what is worth automating and why. The case for keeping manual testing skills sharp even as you move into automation is not that automation is bad, it is that the judgment required to do automation well comes from doing manual testing first, and that judgment cannot be shortcut.

Automated testing is testing where scripts execute test steps and compare results against expected values without human intervention during the run. Automated tests are most valuable for regression coverage, high-frequency checks, and scenarios that would be prohibitively time-consuming to run manually every sprint. The trap most teams fall into is automating everything they can automate rather than automating what is worth automating. A large automated test suite that covers the wrong scenarios, or that is so fragile it fails constantly for reasons unrelated to actual defects, costs more in maintenance than it saves in execution time. Choosing the right automation framework for your specific context matters more than picking whichever tool is currently trending in the QA community.

Functional testing verifies that specific features and user flows behave as specified. Non-functional testing covers everything else: performance under load, security against known attack vectors, accessibility for users with disabilities, compatibility across devices and browsers, and reliability over extended usage periods. Both matter and both get deprioritized in different ways depending on the team. Functional testing gets cut when timelines compress. Non-functional testing gets cut because it requires specialized knowledge and does not fit neatly into a standard sprint cadence. The teams that handle this best build non-functional coverage into the definition of done rather than treating it as a separate phase that gets scheduled when time allows.

Regression testing is the practice of verifying that changes to the system have not broken things that were previously working. It is the most expensive type of testing to run manually at scale and the most valuable type to automate. Scope decisions on regression are among the most consequential a QA team makes. Test everything and the suite takes too long to run to be useful in a sprint cycle. Test too little and regressions escape to production regularly. Getting regression testing right in terms of what to cover, how much to automate, and how often to run it is a significant part of what separates a functioning QA process from a reactive one.

User acceptance testing is testing performed by actual users or business stakeholders to verify that the software meets real business requirements and is usable by the people who will actually use it. UAT catches a different category of issue than QA testing does, specifically the gap between what was built and what was actually wanted. That gap is most efficiently closed when QA is involved in reviewing requirements before development starts, which is part of why shift-left testing practices matter beyond just finding bugs earlier.

What the QA Process Actually Looks Like

The textbook QA process follows the development lifecycle neatly from requirements through release. In practice it rarely works that cleanly. Requirements change mid-sprint. Development finishes late and the testing window compresses. A critical bug surfaces the day before release and everything gets reprioritized. What separates QA teams that handle this well from ones that are constantly in crisis mode is not a better process document. It is a clearer sense of what matters most and the ability to make fast, well-reasoned prioritization decisions under pressure.

The QA process in a team that is functioning well looks like this: QA is involved when requirements are being written, catching ambiguities before they become bugs that need to be fixed and retested. QA input into sprint planning establishes which stories carry higher testing complexity before the sprint commits to a timeline. Test coverage decisions are made explicitly based on risk, not by trying to test everything equally. Bugs are reported with enough context that developers can reproduce and fix them without back-and-forth. Release decisions are informed by an honest assessment of what was tested, what was not, and what residual risk exists, not just a pass/fail summary.

That version of the QA process requires QA to be positioned earlier in the development cycle than most teams allow by default. The structural work of getting that positioning is what QA leadership and influence is actually about, because the process improvements that matter most require QA to have a seat at conversations that happen before testing starts.

What QA Is Not

QA is not a final checkpoint where someone clicks through the application before release. That version of QA exists on a lot of teams and it produces the outcome you would expect: bugs that were present throughout development get caught at the last moment when fixing them is most expensive, or they escape to production because there was not enough time to test thoroughly given when QA was brought in. Treating QA as a final checkpoint is a structural decision that produces structural results, and no amount of individual tester skill compensates for being positioned wrong in the process.

QA is also not purely an automation function. The rise of automation tooling has produced a generation of teams that conflate test coverage with automated test coverage, which leaves significant gaps in exploratory coverage, usability assessment, and the kinds of complex real-world scenarios that automated scripts miss because nobody specified them precisely enough to write a test for. Automation is a tool inside QA, not a replacement for QA thinking. The QA Excellence System covers the full picture of how testing strategy, automation decisions, and QA leadership fit together as an integrated system rather than separate concerns.

Share this article:
Jaren Cudilla
QA Overlord

Has been doing QA since before automation frameworks were the default answer to every testing problem. The fundamentals described in this post are the ones that held up across manual testing, automation engineering, security triage, and QA leadership across multiple products and team sizes.

// also on substack
Get QAJourney posts on Substack
Automation breakdowns, QA workflow posts, field notes. Subscribe free.
Subscribe →

Leave a Comment

What is What QA Testing Actually Is (And Why Most Explanations Get It Wrong)?

Every explanation of QA testing starts the same way. Quality assurance is a critical component of the software development process.