A severity and priority matrix that nobody has ever argued with isn’t a working rubric, it’s a poster on the wall. The real test of severity vs priority isn’t whether you can define the four tiers, every guide on the first page of search results can do that. It’s what happens the moment your call and your PM’s call don’t match, because on a real team, they eventually won’t.

Severity Is Need, Priority Is Want
Severity and priority get treated like synonyms in most bug report templates, two fields that basically say the same thing twice. They don’t. A severity call is only as good as the evidence behind it, and that evidence usually comes from how the bug was found in the first place. A well-run exploratory testing session already captures the conditions, the reproduction steps, and the scope, which is exactly what this rubric needs to classify the defect correctly. I’ve already broken down why severity and priority are separate fields that shouldn’t collapse into one judgment call. Severity is a technical measure, how badly something is actually broken, independent of anyone’s opinion about it. Priority is a business judgment, how urgently it needs fixing relative to everything else competing for the same sprint. A Critical severity bug found the day after a major release might still carry lower priority if the fix window is months away. A cosmetic bug might jump priority if it’s sitting in front of a client mid-UAT.
Once you see it that way, disagreement stops looking like conflict and starts looking like two people correctly defending two different things. Severity is need, the objective reality of what’s broken. A bug, a defect, and a failure aren’t interchangeable words either, and keeping those distinct is part of what makes a severity call defensible in the first place. Priority is want, the judgment call about when it gets addressed. When a rating gets pushed back on, nobody’s actually wrong about the same fact, they’re weighing need against want, and that’s a real conversation worth having, not a bug in the process.
The Matrix
Here’s the rubric as it actually runs, severity and priority paired with a response window and a fix timeline, not just a label:
| Severity | Priority | Description | Example | Response | Fix Timeline |
|---|---|---|---|---|---|
| Critical | Urgent | App-breaking, data loss, security exposure. No waiting regardless of time. | Login crash, payment data exposed | Within 1 hour | Emergency fix within 4 to 8 hours |
| Major | High | Core functionality impaired, significant UX disruption. | Payment flow failure, broken primary nav | Acknowledge within 1 hour | Fix and test within 3 days |
| Moderate | Medium | Non-essential functionality affected, does not block core use. | UI lag, minor form validation | Acknowledge within 1 day | Fix and test within 5 days |
| Minor | Low | Cosmetic or low-impact, does not disrupt workflow. | Typo, misaligned element | Acknowledge within 2 days | Fix within 7 days or next release |
| Enhancement | N/A | Feature request or improvement, not a defect. | New workflow behavior | Prioritized with PM | Timeline varies |
The Enhancement row matters more than it looks. Without it, feature requests get filed as Minor bugs because there’s nowhere else to put them, and that quietly pollutes the defect count with things that were never defects. Separating it out keeps the severity tiers honest, and it keeps a genuine regression suite focused on actual regressions instead of scope creep disguised as bugs.
Critical Doesn’t Get Argued
The response window is what makes Critical non-negotiable. There’s no back and forth about whether app-breaking, data-loss, security-exposure territory deserves an hour of attention, it just does. This is the one row on the matrix where the rubric stops being a discussion and starts being a rule everyone already agreed to before the bug ever showed up. If Critical is up for debate every time it happens, the matrix isn’t doing its job.
Below That Line, State Your Case
Everything under Critical is where the actual negotiation lives, and on my team that negotiation has a name: deathmatch, or a verbal rap battle if we’re feeling dramatic about it. It’s a joke, but it’s also literally what happens. I state my case. I bring the severity rating and the reasoning behind it, this is what’s actually broken and this is why I rated it the way I did. My PM owns the priority call, because they can see the full project tradeoff in a way I usually can’t, competing deadlines, stakeholder pressure, what else is already committed for the sprint. That’s their call to make, and I respect it.
But final call doesn’t mean the conversation is one-directional. A good PM is listening to the case, not just overruling it because the org chart says they can. It’s a symbiotic relationship. I bring the need, they weigh the want, and more often than not the outcome is somewhere neither of us started from. Better than a dance off, where both people circle the disagreement without committing to a position and nothing actually gets resolved.
Getting this right consistently is part of what builds credibility as a tester. Overcall severity every time and people stop trusting your ratings, they start discounting them by default before the conversation even starts. Undercall it and real risk gets buried under a Minor label nobody revisits. The matrix gives you a shared starting point. What happens after someone pushes back on it is where the actual skill lives.
This rubric is what makes a critical and non-critical split during a regression pass actually mean something instead of being a guess made under pressure. It’s one more piece of the full QA suite system I’m building out post by post, alongside pieces on what a test suite actually is and how a proper regression suite stays focused on what matters.




