If you have ever seen a team argue about whether a bug is “Critical” or “High” or “Medium,” you have witnessed the most common defect classification mistake: confusing severity with priority. These are two independent dimensions, and treating them as synonyms leads to broken triage, misallocated developer time, and releases that ship with the wrong bugs still open. Mastering this distinction is a fundamental QA skill that directly impacts how effectively your team manages its defect backlog.
Severity and Priority — Two Dimensions of Every Defect
Severity measures the technical impact of a defect — how badly is the software broken? Priority measures the business urgency — how soon must it be fixed? They are set by different people for different reasons, and they frequently disagree.
# Severity vs Priority matrix with real-world examples
SEVERITY_LEVELS = {
"Critical": "System crash, data loss, security breach, complete feature failure",
"Major": "Core feature broken but workaround exists, significant data error",
"Minor": "UI cosmetic issue, minor usability problem, low-impact error",
"Trivial": "Typo, colour mismatch, tooltip text wrong, cosmetic only",
}
PRIORITY_LEVELS = {
"P1 — Urgent": "Fix immediately — blocks release or affects production users now",
"P2 — High": "Fix in current sprint — important for release quality",
"P3 — Medium": "Fix in next sprint — does not block current release",
"P4 — Low": "Fix when convenient — backlog item, no timeline pressure",
}
# Real-world examples showing severity != priority
examples = [
{
"defect": "Application crashes when processing refunds over $10,000",
"severity": "Critical",
"priority": "P1 — Urgent",
"reason": "High severity (crash) + high priority (affects revenue and trust)",
},
{
"defect": "CEO's name is misspelled on the company About page",
"severity": "Trivial",
"priority": "P1 — Urgent",
"reason": "Low severity (cosmetic) but high priority (executive visibility)",
},
{
"defect": "Crash in legacy admin panel used by 2 internal users with a workaround",
"severity": "Critical",
"priority": "P3 — Medium",
"reason": "High severity (crash) but low priority (tiny audience, workaround exists)",
},
{
"defect": "Date format shows MM/DD/YYYY instead of DD/MM/YYYY for UK users",
"severity": "Minor",
"priority": "P2 — High",
"reason": "Low severity (cosmetic) but high priority (regulatory compliance for UK market)",
},
]
print("Severity vs Priority — Real-World Examples")
print("=" * 70)
for ex in examples:
print(f"\n Defect: {ex['defect']}")
print(f" Severity: {ex['severity']}")
print(f" Priority: {ex['priority']}")
print(f" Why: {ex['reason']}")
Common Mistakes
Mistake 1 — Setting severity and priority to the same value for every defect
❌ Wrong: Every defect is filed as either “Critical / P1” or “Minor / P4” with no variation between the two dimensions.
✅ Correct: Independently assessing severity (technical impact) and priority (business urgency) so the triage team gets an accurate picture. A Critical/P3 defect and a Trivial/P1 defect both exist in practice and require different handling.
Mistake 2 — Letting severity alone determine the fix schedule
❌ Wrong: “This is a Critical severity bug, so it must be fixed before release regardless of context.”
✅ Correct: “This is Critical severity but P3 priority because it affects an unused admin screen. We will schedule the fix for the next sprint and document the workaround.”