Skip to main content
/tayyab/portfolio — zsh
tayyab
TA
// dispatch.read --classified=false --access-level: public

Test Prioritization Under Pressure: How I'd Cut Regression With 30 Minutes Until Release

April 6, 2026 EST. READ: 11 MIN #Career

Every senior QA interview I've sat in on includes a variant of this question: "You have 30 minutes until release. The full regression takes 45. What do you cut, what do you keep, and how do you decide?"

The answer matters because it tests judgment, not tool knowledge. There's no "correct" 50-test list. There's a thinking framework — and the candidates who articulate it are the ones who get hired. I help my clients hire QA leads, and I've seen this exact scenario eliminate roughly 70% of senior candidates who are otherwise technically competent.

This article is the framework, written out. If you can internalize this, you'll handle the interview and the actual situation when it shows up at work.

Table of Contents

The Wrong Answers (and Why)

Three answers that get candidates rejected:

"Just run the smoke tests."

Not wrong, but lazy. The interviewer wants to hear how you decided which tests are smoke. "Smoke" is a label; what's underneath?

"I'd block the release."

QA doesn't block releases unilaterally. The PM and engineering lead make that call with input from QA. The right answer is to provide the information they need, not to make the decision for them.

"I'd run all 45 minutes anyway and they'd just have to wait."

This says you don't understand business. Sometimes a 30-minute slip costs $50K. Sometimes it costs $5M (regulated industry hitting a deadline). You're not the one weighing those costs.

The 4-Step Framework

I run this in my head every time the situation comes up:

  1. What changed? Scope the impact area.
  2. What can't ship without verification? Categorize by risk class.
  3. What's the time budget? Estimate and prioritize within it.
  4. What do I tell the PM? Inform their decision.

Each step takes 2–5 minutes if you've done it before. The whole process fits in the 30-minute window with time to actually run the tests.

Step 1: What Changed in This Release?

Before deciding what to test, decide what's even possibly affected.

Read the PR list. Check the commit log between the last release tag and this one. Three categories emerge:

  • Touched code paths. If the PR list shows changes to the checkout module, all checkout tests are at-risk.
  • Adjacent code paths. If checkout was changed, what else uses checkout's helpers? Cart, refunds, invoicing. Those are at-risk too.
  • Untouched code paths. If user profile, search, and analytics haven't been touched in this release, their tests are low-risk for regression.

Untouched paths can run nightly or post-deploy. They're not blocking this release.

This step alone can cut your test list by 50–70% if the release is small.

Step 2: Categorize Remaining Tests by Risk Class

From the at-risk pool, categorize by what happens if a bug ships:

  • Money path — payment processing, billing, account creation. Regulatory or revenue impact. Always run.
  • Data integrity — anything that writes to the database. Wrong writes are hard to fix in production.
  • Auth and authorization — login, session, role escalation. Security implications.
  • Critical UX — "product is unusable if this breaks." Search, navigation, primary CTAs.
  • Edge / nice-to-have — preferences, notifications, dashboards. Inconvenient but not catastrophic.

Order: money > data > auth > critical UX > edge.

Step 3: Estimate Run Time and Budget

You have 30 minutes minus prep time. Realistically maybe 18–22 minutes for actual test execution.

For each category, ask: "how long does it take to run these in parallel?"

Sample math:

  • Money path tests for the changed area: 12 tests × 8s = 96s parallel = ~3 minutes
  • Data integrity in adjacent areas: 18 tests × 10s = ~4 minutes
  • Auth tests (only if changed): 8 tests × 12s = ~3 minutes
  • Critical UX in changed area: 24 tests × 6s = ~4 minutes

Subtotal: ~14 minutes. Comfortably inside budget. You can add more.

If you're over budget: drop edge category entirely; skip critical UX in adjacent (not directly changed) areas. If still over: this is a yellow-flag situation — see step 4.

Step 4: Communicate the Cut to the PM

Don't just run tests silently. Tell the PM:

"Here's what I'm running and why: [list the 4 categories]. Here's what I'm not running because the changes don't touch those areas: [list]. Here's what I'm not running but probably should: [list, if any]. If those last ones fail post-deploy, the impact would be [X]. Are you OK with that risk, or do you want to delay 15 minutes for the additional run?"

Now the PM has the information to make their decision. You've offloaded the responsibility to where it belongs (product/engineering), shown your reasoning, and demonstrated you can deliver under pressure.

9 times out of 10 the PM says "yes, ship." The 10th time, they ask for the additional run. Either way, you're not the bottleneck — the deliberation is happening at the right level.

Worked Example: Real Fintech Release

Last quarter on the fintech client. The 5:00 release was a frontend refactor of the trade-execution UI. PR list: 18 commits, all in the frontend repo. No backend changes. Full regression: 47 minutes.

My triage:

What changed: trade-execution UI only. Backend, account, user, market-data, reports — untouched.

What I ran (16 minutes total):

  • Trade execution money-path tests: place order, cancel order, modify order. (4 minutes)
  • Trade execution data integrity: confirm orders persist correctly, audit log entries. (3 minutes)
  • Trade execution UX: order book renders, confirmations show, errors surface. (4 minutes)
  • Adjacent — portfolio view (uses execution helpers): rendering only, no actions. (2 minutes)
  • Smoke on auth (login still works after build): 1 test. (3 minutes including container spin-up)

What I skipped: reports, market data, settings, notifications. ~31 minutes of tests.

What I told the PM: "All run, all passing. I skipped reports/settings/notifications because the diff doesn't touch them. Risk if I'm wrong: a stale data path could regress in reports — but the trade-execution change shouldn't reach that code. I'd be comfortable shipping."

PM said ship. Release went out at 5:04. No incidents.

How to Prep for This Question (and Reality)

For interviews:

  1. Practice the framework out loud. 5 times. Until you can recite it without thinking.
  2. Have one real example ready. Even if you weren't the QA lead, you've been through a release crunch — talk through how it actually went.
  3. Frame your answer as "here's how I think about this" not "here's what I'd do." Frameworks scale; specific decisions don't.

For real situations:

  1. Document your team's risk-class taxonomy now, while it's calm. "Money path tests are X, Y, Z." Don't categorize under pressure.
  2. Build a script that maps a git diff to affected test files. git diff --name-only HEAD~1 | grep -f test-coverage-map.txt. Pre-canned answer to "what changed."
  3. Maintain a coverage map (see my bloated suite audit post). Without one, every release is a panic.

FAQs

What if my team doesn't have a risk-class taxonomy?

Build one. Schedule a 60-minute workshop with QA + a senior engineer. List every test, assign a class. The exercise alone produces real value.

What if the answer is "we have to run everything because we don't trust our tests"?

That's the actual problem to solve, not test prioritization. See my bloated test suite audit post.

How do I know which areas are affected by a change?

Code review experience and a coverage map. The map says "checkout flow tests live in /tests/checkout/*.spec.ts and depend on /src/checkout/*.ts." When src/checkout changes, those tests are at risk.

What about flaky tests in the cut?

Don't include them. A flaky test under pressure is worse than no test — false failures eat your time budget.

Should I always run a smoke smoke test for sanity?

Yes. Even 30 seconds of "the site loads, login works" catches deployment-pipeline issues that aren't code regressions.

What if the PM presses me to "just say it's safe"?

Don't. "I think it's safe given what I tested. I didn't test [X]. If [X] regresses, the impact is [Y]." Hand them the decision; don't take it.

How do I justify cutting tests I normally run?

By documenting the risk explicitly. "I cut tests for reports because the diff doesn't touch reports code" is a defensible decision. "I cut tests because we're behind" is not.

What if the test suite isn't fast enough to run any subset in 18 minutes?

Different conversation. The right framing for the team: "our regression suite is incompatible with our release cadence; we should fix one or the other." That's a strategic conversation, not a release-day decision.

Does this work for monorepos with cross-cutting changes?

Same framework, harder execution. The coverage map matters more — what tests exercise what modules. If you can't answer that question, the framework breaks down.

How is this different from "impact analysis"?

Same thing, less buzzwordy. Impact analysis is the formal version. The 30-minute version is the same logic, faster.

Wrap-Up

Test prioritization under pressure is judgment work. It's not about knowing more tests; it's about knowing which tests matter for this release. The framework — what changed, risk class, time budget, communicate — applies the same whether you have 30 minutes or 30 hours.

If you're prepping for a senior QA interview or just want a sanity check on your team's coverage strategy, that's part of QA career coaching sessions. Or book a free call.

Related reading:

Tayyab Akmal
// author

Tayyab Akmal

AI & QA Automation Engineer

6 years of catching critical bugs in fintech, e-commerce, and SaaS — then building the Playwright and Selenium automation that prevents them from shipping again.

// feedback_channel

FOUND THIS USEFUL?

Share your thoughts or let's discuss automation testing strategies.

→ Start Conversation
Available for hire