Skip to content

Blog

Test Case Priority: How QA Teams Rank What to Run First

A practical guide to test case priority—P0 to P3 schemes, risk-based ranking, worked examples for auth and billing, and how priority drives regression selection.

QA Workflow Assistant14 min read
  • test-cases
  • risk
  • test-strategy
  • qa

Test case priority is the field most teams fill in last and argue about first. When the release window shrinks from three days to four hours, priority is often the only thing standing between a deliberate subset and a panicked guess.

Priority answers one question: if we can only run some of these cases, which ones do we run? That is a business risk decision, not a measure of how interesting the case is or how hard it was to write.

This guide covers workable schemes, risk-based ranking, examples across authentication, billing, and cosmetic UI, and how priority feeds regression selection. Fundamentals live in how to write QA test cases; the field belongs in your shared QA test case template.

Why priority is a QA decision, not a ticket field

Left ungoverned, priority drifts in one direction: upward. Every author believes their feature matters, so most of the suite ends up marked High and the field carries no information. At that point "run the high-priority cases" means "run everything," which is the same as having no scheme.

The fix is not a stricter dropdown. It is agreeing on two things as a team:

  1. What priority means operationally — specifically, at which point in a release cycle each level stops being run.
  2. Who arbitrates — a named QA lead or a two-person review, not consensus among everyone who wrote a case.

A priority scheme is only real if some cases are genuinely allowed to not run. If nothing is ever skipped, you are maintaining a label, not a plan.

Priority versus severity

These get conflated constantly, and the confusion produces bad triage on both sides.

PrioritySeverity
Applies toTest cases and bug fixesDefects
AnswersWhat do we run or fix first?How badly does this hurt when it happens?
Owned byQA lead with product inputReporter, refined in triage
Changes whenBusiness context or risk changesRarely; it is a property of the defect
Example"Run this before every deploy""Data loss for all paid accounts"

A high-severity defect in a feature nobody uses can be low priority. A low-severity cosmetic bug on the pricing page during a launch campaign can be high priority. Keeping the two fields distinct is what lets you have that conversation without it turning into an argument about whose work matters.

Two schemes that work

LevelMeaningRuns whenRough share of suite
P0Product is unusable or unsafe if brokenEvery build, automated, blocking5–10%
P1Core journey degraded; revenue or trust at riskEvery release candidate20–25%
P2Important but with a workaround, or narrow audienceNightly or pre-release40–50%
P3Cosmetic, rare configurations, nice-to-haveScheduled sweeps, or on change20–30%

The value of numbered levels is that P0 is unambiguous. "High" invites negotiation; "P0, which blocks the pipeline" does not.

High / Medium / Low (fine for smaller teams)

Three levels are easier to maintain and less prone to false precision. The trap is that "High" absorbs everything, so bind each level to a written run trigger: High runs on every release candidate, Medium pre-release, Low quarterly or when its area is touched. Without triggers, three levels degrade faster than four.

Whichever you pick, record the target share of the suite in your handbook. When High exceeds a quarter of your cases, re-review rather than accept.

Risk-based ranking without a scoring bureaucracy

You need exactly two inputs, and you can assess both in seconds per case.

Impact if this behaviour breaks: does it lose money, lose data, block access, breach compliance, or damage trust? Or does it merely look wrong?

Likelihood of breaking: how often does this code change, how many services does it touch, has it broken before?

Impact ↓ / Likelihood →Rarely changesChanges often
Money, data, access, complianceP1P0
Core workflow, workaround existsP2P1
Cosmetic or narrow audienceP3P2

Two refinements matter. Incident history overrides the matrix: anything that caused a production incident in the last two quarters gets promoted a level, because your model of that area was demonstrably wrong. Cost of detection breaks ties: between two equal-risk cases, prefer the one that runs in eight seconds over the one needing a browser and a seeded payment sandbox.

Worked example: authentication

Auth is where P0 assignments are least controversial, because the failure mode is "nobody can use the product" or "the wrong person can."

CasePriorityReasoning
Valid credentials sign in and return a sessionP0Total blocker; gates every other journey
Invalid password is rejected without revealing which field failedP0Security behaviour, cheap to check
Account locks after the configured failed-attempt thresholdP1Security control, but not an access blocker
Session expires after the configured idle timeoutP1Trust and compliance; slower to test
Password reset link works once and then cannot be reusedP1Account-takeover vector
SSO login for the enterprise identity providerP1Blocker for one segment, not all users
"Remember me" persists across a browser restartP2Convenience with a workaround
Sign-in error copy matches the current style guideP3Cosmetic

Two things are worth noticing. The negative case ("invalid password is rejected") is P0 alongside the positive one, because a broken refusal path is a security incident, not an inconvenience. And SSO sits at P1 despite being a total blocker for enterprise accounts — a judgement call worth recording in your handbook, since it will be challenged the first time an enterprise customer is affected. Deeper detail for this area lives in login test cases.

Worked example: billing

Billing inverts the usual instinct that the visible path matters most. The expensive failures here are silent.

CasePriorityReasoning
Successful card charge creates a paid subscriptionP0Direct revenue path
Declined card shows a recoverable error and creates no subscriptionP0Prevents free access and duplicate charges
Webhook with an invalid signature is rejectedP0Integrity of all downstream billing state
Duplicate webhook delivery does not double-charge or double-provisionP1Idempotency; expensive and quiet when wrong
Proration on mid-cycle upgrade calculates correctlyP1Financial correctness, visible on invoices
Cancellation revokes entitlements at period end, not immediatelyP1Contractual behaviour
Failed renewal triggers dunning email and grace periodP2Recovery path with manual fallback
Invoice PDF layout renders correctly on one pageP3Cosmetic unless a regulator says otherwise

The webhook signature case earns P0 for a reason worth internalising: it is invisible to customers, costs almost nothing to run, and if it breaks, every piece of downstream billing state becomes untrustworthy. Cheap checks protecting expensive invariants are the best value in any suite. For fuller coverage, see the payment testing checklist.

Worked example: UI polish

This is where teams lose the most time to misplaced priority.

CasePriorityReasoning
Primary action button is reachable and operable by keyboardP1Accessibility obligation; blocks real users
Long account names do not break the navigation layoutP2Real customer data will hit this
Empty-state illustration and copy render on a new accountP2First-impression path, no workaround needed
Hover transition timing matches the design tokenP3Cosmetic
Marketing page renders correctly on a two-generation-old browserP3Narrow audience, scheduled sweep

Note that keyboard operability sits at P1, not P3. "It is a UI thing" is not a priority argument; whether a user can complete the job is. Anything blocking a class of users from finishing a task is a functional case in a cosmetic costume.

Step-by-step: prioritising a suite in one session

1. Get the journey list, not the feature list

Ask product for the five to eight jobs customers pay you for. Priority assigned against a feature inventory rewards whoever shipped most recently; priority assigned against customer jobs tracks actual risk.

2. Assign P0 first, and cap it

Go through the suite and mark only cases whose failure makes the product unusable or unsafe. Cap this at roughly one in ten. A hard cap forces the real conversation about what "critical" means.

3. Sort the rest with the two-factor matrix

Impact and likelihood, one pass, no scoring spreadsheet. Speed matters more than precision here; you can revise anything later, and a half-finished perfect scheme is worth less than a complete rough one.

4. Apply incident history

Pull the last two quarters of sev-1 and sev-2 incidents and promote the cases covering those areas. This is the single highest-value adjustment you will make, because it is grounded in evidence rather than opinion.

5. Bind each level to a run trigger

Write down, in the handbook, exactly when each level runs and who may skip it. Priority without a trigger is decoration.

6. Review the distribution

If your levels do not roughly match the target shares, you have not prioritised — you have relabelled. Rebalance before publishing.

7. Re-review quarterly and on major change

Repeat this after any launch, architecture change, or new compliance requirement. A one-time ranking goes stale within two quarters.

How priority drives regression selection

This is where the field pays for itself. Priority converts an unanswerable question ("what should we run?") into arithmetic against a time budget.

SituationRun
Every commit to mainP0 only, automated, under ten minutes
Release candidateP0 and P1
NightlyP0 through P2
Pre-release full passEverything, including P3 sweeps
Hotfix windowP0 plus the priority-agnostic cases touching the changed area
Time cut in half unexpectedlyP0 and P1, then stop and report what was skipped

The last row matters most under pressure. When the window shrinks, you do not improvise — you drop the lowest level and state which cases did not run. Selection and pruning discipline for the surrounding suite is covered in regression test cases; coverage depth choices are in Basic, Standard, or Deep coverage.

One caveat: change-based selection sits alongside priority, not underneath it. If someone rewrote the search indexer, you run the search cases regardless of stored priority. Priority orders the standing suite; the diff adds extras.

Common mistakes

  1. Priority inflation. Everything becomes High. Enforce target distributions and have a named arbiter.
  2. Priority assigned by the case author alone. Authors know their feature, not the portfolio. Review priority in the same pass as expected results.
  3. Confusing priority with severity. A cosmetic bug on a launch landing page can outrank a rare data glitch this week. Keep both fields and let them disagree.
  4. Never revisiting assignments. Yesterday's P1 becomes this quarter's P3 when a feature is deprecated, and stale priority is worse than none because people trust it.
  5. Ignoring execution cost. A P1 that needs two hours of manual setup gets skipped in practice. Automate it or accept that its effective priority is lower than its label.
  6. Treating negative cases as inherently lower priority. Refusal paths in auth, permissions, and payments are frequently P0. Broken refusals are how security incidents start.

Best practices

  • Publish the scheme and target distribution in one canonical place, linked from your case template.
  • Review priority in peer review, alongside titles and expected results. It takes seconds and prevents drift.
  • Promote on evidence, demote on deprecation. Incidents move cases up; removed features move them out.
  • Keep the field on the case, not in a side spreadsheet. Two sources of truth diverge within a sprint.
  • Report what was skipped, by level. "P0 and P1 passed; P2 not run" is a professional status. "Testing done" is not.
  • Let priority inform automation order. Automate downward from P0; that is where repetition is guaranteed.

Final checklist

  • A single priority scheme is documented and published
  • Each level has a written run trigger and an owner who may skip it
  • P0 (or High) is capped at a target share of the suite
  • Priority and severity are separate fields with separate definitions
  • Ranking uses impact and likelihood, not author enthusiasm
  • Incident history has been applied as a promotion input
  • Negative and refusal cases are ranked on risk, not on being negative
  • Execution cost is considered so labels match reality
  • Distribution is reviewed quarterly and after major changes
  • Release reports state which levels ran and which did not

Summary

Test case priority is a risk decision, not a preference. Pick a scheme with an unambiguous top level, bind every level to a run trigger, and rank with impact and likelihood. Cap the top level so it keeps its meaning, promote on incident evidence, demote when features are deprecated. Use the levels to select regression runs against a time budget and report exactly which levels ran.

FAQ

How many priority levels should we use?

Three or four. Fewer than three cannot express the difference between "blocks the pipeline" and "run before release." More than four produces distinctions nobody applies consistently.

Should automated and manual cases use the same scheme?

Yes, one scheme across both. Automation status is a separate field. Mixing them hides the fact that a P0 case exists but is only ever executed by hand.

Who has final say when QA and product disagree?

QA proposes based on risk; product decides on business impact; the QA lead records the outcome and the reasoning. What matters is that the disagreement resolves once and gets written down, rather than resurfacing every release.

Does every case really need a priority?

Every case in a suite that might be partially executed does. Exploratory charters do not — they are timeboxed sessions, not scheduled cases, and a level on them is fake precision.

How do we stop priority inflation for good?

Two mechanisms: a target distribution reviewed quarterly, and a rule that promoting a case above P1 requires naming the specific business impact in one sentence. Requiring a sentence stops most casual promotions.

CTA — get priority right in the first draft

Most priority debt is created at writing time, when a field gets a default nobody revisits. Use QA Workflow Assistant to draft cases from your stories with priority and type already proposed, then adjust the handful needing judgement in review instead of ranking a blank suite from scratch. Volume limits are on Pricing; configuration and export options are in Docs.