Interview prep · 227 questions

Manual QA interview questions

Updated

The questions manual QA candidates actually get asked — with the short, straight answer an interviewer wants to hear, the follow-up that comes next, and the trap that sinks people. Skim the previews; open what you need.

56 questions

What is the difference between severity and priority?

Defect Managementjuniormid

Severity is how badly the product breaks — the tester sets it. Priority is how soon the business needs the fix — the product owner sets it.

Severity is how badly the product breaks — the tester sets it. Priority is how soon the business needs the fix — the product owner sets it. They move independently, and interviewers ask this to see if you can hold both lenses at once.

Real-world example

A crash in a report almost nobody opens: high severity, low priority. A typo in the company name on the homepage: low severity, high priority — every visitor sees it. Quote a pair like this from your own project and the question is won.

Key points
  • Severity = impact, QA sets it
  • Priority = urgency, product sets it
  • They can diverge
They'll ask next · tap one for the answer
The trap

Reciting definitions and stopping. Every candidate can define them; the example is what gets scored.

Copy link

Walk me through the bug lifecycle.

Defect Managementjunior

New → Assigned → In Progress → Fixed → Ready for Test → Verified/Closed, with Reopened when the retest fails. Plus the no-fix endings: Rejected, Duplicate, and Deferred.

New → Assigned → In Progress → Fixed → Ready for Test → Verified/Closed, with Reopened when the retest fails. Plus the no-fix endings: Rejected, Duplicate, and Deferred.

State names vary by company and Jira setup — what never varies is the handoff: who owns the bug at each step and what evidence moves it forward.

Real-world example

A checkout bug found a week before a release freeze gets fixed and verified. The same bug found two days before freeze may be Deferred — that is not a closed bug, it is a risk the business accepted in writing, and it reopens the day the freeze lifts.

Key points
  • New → Fixed → Verified/Closed
  • Reopened on failed retest
  • Deferred = accepted risk, on record
They'll ask next · tap one for the answer
The trap

Listing states like a poem. Interviewers listen for who owns the bug at each step.

Copy link

What makes a good bug report?

Defect Managementjuniormid

A good bug report gets fixed without anyone coming back to you with questions. That takes: a title that says what broke and where, numbered steps from a known starting point, expected vs actual…

A good bug report gets fixed without anyone coming back to you with questions. That takes: a title that says what broke and where, numbered steps from a known starting point, expected vs actual result, environment and build, and evidence — screenshot, log line, or request ID.

The gap between expected and actual IS the bug.

Real-world example

Title 'Checkout returns 500 when the cart has more than 10 items' got fixed in a day — the developer reproduced it on the first try from the steps. Title 'Checkout broken' from the same week bounced back and forth for three days of questions first.

Key points
  • Title: what broke, where, when
  • Expected vs actual — the gap is the bug
  • Evidence: request ID beats screenshot
They'll ask next · tap one for the answer
The trap

Saying 'clear steps to reproduce' and nothing else — that's the answer everyone gives.

Copy link

A developer rejects your bug as 'works on my machine'. How do you handle it?

Defect Managementmidsenior

Assume the difference is real — environment or data, not the person. Diff the contexts: build, browser, account, test data, feature flags. Reproduce again on a clean state and count the rate.

Assume the difference is real — environment or data, not the person. Diff the contexts: build, browser, account, test data, feature flags. Reproduce again on a clean state and count the rate.

Then bring evidence instead of repeating steps: a recording with the network tab open, the failing request ID, the log at that timestamp — and offer ten minutes at your desk for a live repro.

Real-world example

The bug that taught me this: a discount applied twice — for me, never for the developer. The difference was a feature flag that was on for my test account and off for his. Since then, flags and account state are the first thing I diff, not the last.

Key points
  • Diff build, data, flags, account
  • Count the repro rate
  • Evidence + live repro offer
They'll ask next · tap one for the answer
The trap

Reopening with 'still happening for me' and no new information — a status update, not an investigation.

Copy link

How do you decide the severity of a defect?

Defect Managementjuniormid

By user impact, not by how ugly it looks: what breaks, for how many users, and is there a workaround. Critical = data loss, security, or a core flow blocked with no way around.

By user impact, not by how ugly it looks: what breaks, for how many users, and is there a workaround. Critical = data loss, security, or a core flow blocked with no way around. High = major feature broken, painful workaround. Medium = reasonable workaround exists. Low = cosmetic.

Real-world example

A card-payment crash was Critical — until we confirmed PayPal still worked, which made it High: same bug, a workaround changed the call. The two questions that settle every severity argument: who hits this, and what does it cost them?

Key points
  • Impact × reach × workaround
  • Critical = data loss, security, blocked core flow
  • A workaround lowers severity
They'll ask next · tap one for the answer
The trap

Calling everything critical. If everything is critical, nothing is, and developers stop trusting your reports.

Copy link

What are the phases of the SDLC, and where does QA fit?

SDLC & STLCjunior

Requirements → design → development → testing → deployment → maintenance. The modern answer: QA fits into every phase, not just the testing one — questioning requirements, reviewing designs for…

Requirements → design → development → testing → deployment → maintenance. The modern answer: QA fits into every phase, not just the testing one — questioning requirements, reviewing designs for testability, preparing cases during development, watching production after release.

Real-world example

In refinement I asked one question about a discount feature: 'what happens if the code expires while the cart is open?' Nobody had decided. Answering it cost five minutes in that meeting; discovering it in testing would have cost a coded bug, a fix and a retest.

Key points
  • Six phases, QA in all of them
  • Requirements bugs are the cheapest
  • 'QA starts after coding' = wrong answer
They'll ask next · tap one for the answer
The trap

Placing QA only in the testing phase — the exact misconception the question exists to catch.

Copy link

What is the STLC and what are its stages?

SDLC & STLCjunior

The Software Testing Life Cycle: requirement analysis → test planning → test case design → environment setup → execution → closure. It's the testing track that runs inside the SDLC.

The Software Testing Life Cycle: requirement analysis → test planning → test case design → environment setup → execution → closure. It's the testing track that runs inside the SDLC.

Don't just recite the names — say what each stage produces: planning gives scope and estimates, design gives cases and data, execution gives defects, closure gives the summary and lessons.

Key points
  • Six stages, analysis → closure
  • Each stage has an output
  • Outputs make the answer real
They'll ask next · tap one for the answer
The trap

Reciting stage names with nothing behind them. Name the outputs and you sound like you've done it.

Copy link

Explain the difference between Waterfall, V-model and Agile from a testing perspective.

SDLC & STLCjuniormid

In Waterfall, testing is one late phase — bugs surface months after they're written, at their most expensive.

In Waterfall, testing is one late phase — bugs surface months after they're written, at their most expensive. The V-model pairs each development stage with a test stage, so test design starts early but execution stays late. In Agile, testing runs inside every sprint.

The real difference is feedback time: months, weeks, days.

Real-world example

Same requirement bug, three worlds: in Waterfall it's found at month six during system testing. In V-model it's caught while writing acceptance tests against the spec — before coding. In Agile it surfaces in the sprint's three-amigos conversation, the same week it was written.

Key points
  • Waterfall: late testing, expensive bugs
  • V-model: early design, late execution
  • Agile: testing every sprint
They'll ask next · tap one for the answer
The trap

Describing the models without ever saying when a bug gets found — that's the testing perspective they asked for.

Copy link

What are entry and exit criteria?

SDLC & STLCjuniormid

Entry criteria: what must be true before testing starts — build deployed, smoke passing, test data ready. Exit criteria: what defines done — planned cases executed, no open critical or high defects.

Entry criteria: what must be true before testing starts — build deployed, smoke passing, test data ready. Exit criteria: what defines done — planned cases executed, no open critical or high defects.

Their job is protection: entry criteria stop you burning days on a broken build; exit criteria stop 'done' being whoever argues loudest on release day.

Real-world example

We once accepted a build that failed smoke 'to save time'. Two testers spent a day logging bugs that were all one broken deployment. Entry criteria exist so that day never repeats: smoke green, or the build goes back.

Key points
  • Entry = fit to start
  • Exit = allowed to stop
  • Checkable facts, not opinions
They'll ask next · tap one for the answer
The trap

Vague criteria like 'testing is complete'. If you can't check it objectively, it isn't a criterion.

Copy link

What is shift-left testing?

SDLC & STLCmidsenior

Moving testing earlier in the lifecycle — left on the timeline. Instead of finding bugs after development, you prevent them: review requirements, join design discussions, write test cases before…

Moving testing earlier in the lifecycle — left on the timeline. Instead of finding bugs after development, you prevent them: review requirements, join design discussions, write test cases before code, run automated checks in CI on every commit.

The justification is cost: a requirement bug caught in review costs minutes; in production it costs a release.

Real-world example

The cheapest bug I ever 'found' was a sentence: a story said users could re-order 'any past order', and I asked whether that included orders with discontinued products. It didn't — the story changed in refinement, and the bug never existed.

Key points
  • Test earlier: reviews, design, CI
  • Prevention over detection
  • Cheapest fix is pre-code
They'll ask next · tap one for the answer
The trap

Defining it as 'testing early' with no concrete activity. Name the refinement meeting, the review, the CI check.

Copy link

What is the difference between verification and validation?

Testing Fundamentalsjunior

Verification: are we building the product right — does it match the spec? Mostly static: reviews, walkthroughs. Validation: are we building the right product — does it serve the user?

Verification: are we building the product right — does it match the spec? Mostly static: reviews, walkthroughs. Validation: are we building the right product — does it serve the user? Mostly dynamic: executing tests, UAT.

Anchor: verify the spec, validate the need.

Real-world example

Spec says the discount is 10%; the code applies exactly 10% — verification passes. But the business had promised customers 15% — validation fails, because the spec itself was wrong. A perfect implementation of a wrong requirement is still a wrong product.

Key points
  • Verification = against the spec
  • Validation = against the need
  • Right build of wrong spec fails validation
They'll ask next · tap one for the answer
The trap

Swapping the two under pressure. Anchor it: verify the spec, validate the need.

Copy link

What is the difference between QA, QC and testing?

Testing Fundamentalsjuniormid

QA is about process — preventing defects by improving how software gets built: reviews, standards, root-cause work. QC is about product — checking the built thing.

QA is about process — preventing defects by improving how software gets built: reviews, standards, root-cause work. QC is about product — checking the built thing. Testing is the main activity inside QC: executing the product to find defects.

One line: QA prevents, QC detects, testing is how QC detects.

Real-world example

After the third release with payment bugs, we didn't just test harder — we added a payment-scenario checklist to refinement and a sandbox contract check in CI. That process change is QA. The regression run that still verifies each release is QC.

Key points
  • QA = process, prevention
  • QC = product, detection
  • Testing = execution inside QC
They'll ask next · tap one for the answer
The trap

Treating the three words as synonyms — the question exists to check you know they aren't.

Copy link

What is static testing and how is it different from dynamic testing?

Testing Fundamentalsjuniormid

Static testing examines work without running it — requirement reviews, code reviews, walkthroughs, linting. Dynamic testing executes the software and checks behaviour.

Static testing examines work without running it — requirement reviews, code reviews, walkthroughs, linting. Dynamic testing executes the software and checks behaviour.

Static finds defects at their cheapest; strong teams do both, and start static.

Real-world example

A requirements review caught 'the user is notified' with no channel defined — email? in-app? SMS? One comment fixed it. Found dynamically weeks later, that same gap would have been a built feature notifying nobody, plus a bug, a fix and a retest.

Key points
  • Static = review, no execution
  • Dynamic = run and observe
  • Static is the cheapest catch
They'll ask next · tap one for the answer
The trap

Thinking static testing is only for code — requirements and designs are its biggest wins.

Copy link

What is the difference between smoke and sanity testing?

Test Typesjunior

Smoke is a broad, shallow check on a new build: do the critical paths work at all? It decides whether the build is worth testing further.

Smoke is a broad, shallow check on a new build: do the critical paths work at all? It decides whether the build is worth testing further. Sanity is a narrow, focused check after a specific fix or small change: does that area behave rationally?

Hook: smoke asks 'is the build alive?', sanity asks 'did this fix actually land?'

Real-world example

Morning build arrives: login, search, checkout — fifteen minutes of smoke. It fails at login, so the build goes straight back; nobody spends the day testing a dead build. Later a payment fix lands: twenty minutes of sanity around payments only.

Key points
  • Smoke: wide + shallow, gates the build
  • Sanity: narrow, after a change
  • Failed smoke = reject the build
They'll ask next · tap one for the answer
The trap

Using the words interchangeably — the interviewer is checking you run different-shaped checks for different reasons.

Copy link

What is the difference between regression testing and retesting?

Test Typesjunior

Retesting verifies a specific fix: run the exact failing case again — pass, or reopen. Regression verifies the fix didn't break anything nearby: re-run previously passing tests around the change.

Retesting verifies a specific fix: run the exact failing case again — pass, or reopen. Regression verifies the fix didn't break anything nearby: re-run previously passing tests around the change.

So retesting runs failed cases, regression runs passed ones — and regression is the classic automation candidate, because it repeats forever and only grows.

Real-world example

A date-picker bug gets fixed. Retest: the exact broken date now works. Regression: every form that uses the same date component — because the fix touched shared code, and 'fixed here, broken there' is precisely what regression exists to catch.

Key points
  • Retest = the fix, on the failed case
  • Regression = everything around it
  • Regression is what you automate
They'll ask next · tap one for the answer
The trap

Saying regression 'tests the fix'. That's retesting — regression is about everything around it.

Copy link

What is the difference between functional and non-functional testing?

Test Typesjunior

Functional testing checks what the system does — features against requirements. Non-functional checks how well it does it — performance, security, usability, accessibility, reliability.

Functional testing checks what the system does — features against requirements. Non-functional checks how well it does it — performance, security, usability, accessibility, reliability.

Same feature, both lenses: login works (functional); login responds in under two seconds, locks out brute force, and works with a screen reader (non-functional).

Real-world example

A search feature passed every functional case — right results, right filters. In production it fell over: 4-second responses under real load and no rate limiting. Nothing 'functional' was wrong; the release still failed. That's why the second lens exists.

Key points
  • Functional = what it does
  • Non-functional = how well
  • Perf, security, usability, accessibility
They'll ask next · tap one for the answer
The trap

Only naming performance. Security, accessibility and usability are non-functional too — naming them is what sounds senior.

Copy link

Explain black box, white box and grey box testing.

Test Typesjunior

Black box: testing through the interface with no knowledge of the code — inputs and outputs. White box: testing with full code visibility — paths, branches, units.

Black box: testing through the interface with no knowledge of the code — inputs and outputs. White box: testing with full code visibility — paths, branches, units. Grey box: knowing some internals and using them to design sharper black-box tests.

Good manual QA is grey box in practice: you don't read every line, but you check the database after a save and the network tab after a click.

Real-world example

Testing a profile update: black box checks the success message. Grey box opens the network tab, sees the API returned 200 but with an empty body, then queries the database — the save never happened. The UI was lying; the internals told the truth.

Key points
  • Black = interface, white = code
  • Grey = partial internals, sharper tests
  • DB + network tab checks = grey box
They'll ask next · tap one for the answer
The trap

Textbook definitions with no example of using internals — the grey-box example is the differentiator.

Copy link

What is the difference between alpha and beta testing?

Test Typesjunior

Both are acceptance-stage. Alpha happens in-house before release — internal users, controlled environment, bugs still expected. Beta happens in the wild — real users, real devices, real data.

Both are acceptance-stage. Alpha happens in-house before release — internal users, controlled environment, bugs still expected. Beta happens in the wild — real users, real devices, real data.

The useful distinction is control: alpha you can observe and debug directly; beta trades control for reality, and reality finds what the lab can't.

Real-world example

An app sailed through alpha on office Wi-Fi and current-year phones. Beta found the truth: timeouts on patchy mobile networks and a layout broken on small older screens — environments the lab never had. That's the trade beta makes on purpose.

Key points
  • Alpha: internal, controlled
  • Beta: real users, real chaos
  • Beta finds environment bugs
They'll ask next · tap one for the answer
The trap

Only saying 'alpha inside, beta outside' — say what each stage is FOR.

Copy link

What is User Acceptance Testing and who performs it?

Test Typesjuniormid

UAT is the final check that the software works for the business — performed by users or business representatives, not by QA. They run their real workflows and decide: accept or not.

UAT is the final check that the software works for the business — performed by users or business representatives, not by QA. They run their real workflows and decide: accept or not.

QA enables it: environments, data, scenario support, triaging findings. If UAT is finding plain functional bugs, earlier testing failed — UAT should confirm fit, not discover defects.

Real-world example

In a payroll rollout, QA had passed everything against the spec. UAT's finance users rejected it in an hour: the export didn't match the format their bank upload needed. Nothing was 'broken' — it just didn't fit how the business actually works. That's UAT's whole job.

Key points
  • Business users perform, QA enables
  • Confirms fit, not bug-free code
  • Functional bugs in UAT = earlier failure
They'll ask next · tap one for the answer
The trap

Saying QA performs UAT. The A is 'acceptance' — the people accepting are the users.

Copy link

Explain equivalence partitioning with an example.

Test Design Techniquesjunior

Divide all possible inputs into groups the system should treat the same, then test one value per group instead of hundreds.

Divide all possible inputs into groups the system should treat the same, then test one value per group instead of hundreds.

It works because if the system handles one member of a partition correctly, it almost certainly handles the rest the same way — same code path, same behaviour.

Real-world example

Age field accepting 18–60: three partitions — below 18 (invalid), 18–60 (valid), above 60 (invalid). Three tests: 10, 35, 70. You've covered the meaningful space with three values instead of testing sixty ages that all walk the same code.

Key points
  • Group inputs that behave the same
  • One value per partition
  • Don't forget invalid partitions
They'll ask next · tap one for the answer
The trap

Forgetting the invalid partitions — half the technique's value is testing what should be rejected.

Copy link

Explain boundary value analysis and why it's effective.

Test Design Techniquesjuniormid

Test at the edges of a range, because that's where bugs live. For each boundary: one below, the boundary itself, one above.

Test at the edges of a range, because that's where bugs live. For each boundary: one below, the boundary itself, one above.

It's effective because boundary bugs are one-keystroke mistakes in code — a developer writing > when they meant >=. Partitioning says where to test; boundaries say the exact values.

Real-world example

Field valid 18–60: test 17, 18, 19 and 59, 60, 61. A real catch: 'minimum order $10' rejected exactly $10.00 — the code said greater-than instead of greater-or-equal. Only the boundary value itself could have caught it; $15 passed fine.

Key points
  • Below, on, above each edge
  • Catches > vs >= mistakes
  • 18–60 → 17,18,19,59,60,61
They'll ask next · tap one for the answer
The trap

Testing only the valid boundary and skipping just-outside values — those catch the off-by-one.

Copy link

What is decision table testing and when would you use it?

Test Design Techniquesmid

A table of condition combinations and their expected outcomes — for when business rules interact and no single field's range tells the story.

A table of condition combinations and their expected outcomes — for when business rules interact and no single field's range tells the story.

Its power is exposing combinations nobody specified: the row the spec has no answer for is a requirements bug found before a single test ran.

Real-world example

Free shipping if: order over $50 AND member AND not oversized. Eight combinations, eight rows. Building the table surfaced that nobody had decided 'over $50, member, oversized' — the spec was silent. That question went back to product before any code was tested.

Key points
  • Rows = rule combinations + outcome
  • For interacting rules, not ranges
  • Empty row = spec bug found early
They'll ask next · tap one for the answer
The trap

Using it for a simple range — that's partitioning's job. Decision tables are for interacting rules.

Copy link

What is state transition testing?

Test Design Techniquesmid

Testing systems where behaviour depends on state — the same action gives different results depending on what happened before.

Testing systems where behaviour depends on state — the same action gives different results depending on what happened before. Map the states, events and transitions, then test the valid paths AND the invalid ones.

The invalid transitions are where the bugs and the fraud paths hide.

Real-world example

Order flow: Placed → Paid → Shipped → Delivered. Cancelling while Placed works; cancelling while Shipped must refuse. The bug we caught: a refund allowed on an order in Refunded state — money out twice. That's an invalid transition test paying for the whole technique.

Key points
  • For history-dependent behaviour
  • Map states, events, transitions
  • Test the forbidden transitions
They'll ask next · tap one for the answer
The trap

Only walking the happy path through the states — the technique's value is the transitions that must NOT happen.

Copy link

What is pairwise (all-pairs) testing and why does it work?

Test Design Techniquesmidsenior

A technique for combination explosions: instead of every combination of browser × OS × language × role, you test a set where every PAIR of values appears together at least once — tools like PICT…

A technique for combination explosions: instead of every combination of browser × OS × language × role, you test a set where every PAIR of values appears together at least once — tools like PICT generate it.

It works because most combination bugs are triggered by two factors interacting, not five. All pairs ≈ most real bugs at a fraction of the cost.

Real-world example

3 browsers × 3 OSes × 4 languages × 2 roles = 72 combinations. The pairwise set covers every pair in about 12 tests. The bug it still catches: German text overflowing a button — but only in Safari. That's a two-factor interaction, exactly what pairs cover.

Key points
  • Cover every pair, not every combo
  • Most interaction bugs = two factors
  • 72 combos → ~12 tests
They'll ask next · tap one for the answer
The trap

Claiming it covers everything — it trades exhaustiveness for efficiency, and saying so is the senior answer.

Copy link

What is error guessing, and is it a legitimate technique?

Test Design Techniquesmid

Using experience to aim directly at likely failures: empty inputs, zero, negatives, huge values, special characters, double-clicks, back-button after payment, expired sessions.

Using experience to aim directly at likely failures: empty inputs, zero, negatives, huge values, special characters, double-clicks, back-button after payment, expired sessions. Fully legitimate — as a supplement.

Formal techniques give coverage you can defend; error guessing adds the punch of every bug you've seen before.

Real-world example

A name field, formally covered by length partitions. Error guessing adds: an apostrophe (O'Brien — breaks naive SQL), emoji, a leading space, and pasting 10,000 characters. The apostrophe found it: the form 500'd. No partition table suggests O'Brien; scar tissue does.

Key points
  • Experience-targeted attacks
  • Supplement, never replacement
  • Sharpens with every bug seen
They'll ask next · tap one for the answer
The trap

Calling it 'random testing'. It's targeted by experience — the opposite of random.

Copy link

How many test cases would you write for a login page?

Test Design Techniquesjuniormid

No magic number — the strong move is categories first, then prioritisation. Functional (valid, invalid, empty), validation (format, length, case), security (lockout, enumeration, injection, masking),…

No magic number — the strong move is categories first, then prioritisation. Functional (valid, invalid, empty), validation (format, length, case), security (lockout, enumeration, injection, masking), session (expiry, logout, remember-me), non-functional (speed, accessibility).

Then: 'with limited time I'd run happy path, lockout and injection first — highest risk first.' Structure plus priorities is what's being scored.

Key points
  • Categories, never a number
  • Functional, validation, security, session
  • Close with what runs first
They'll ask next · tap one for the answer
The trap

Answering with a number. Any number is wrong — the question probes how you think, not how you count.

Copy link

What is the difference between a test scenario and a test case?

Test Documentationjunior

A scenario is what to test, one line: 'verify a user can reset their password'. A test case is how: steps, data, preconditions, expected results. One scenario usually breaks into several cases.

A scenario is what to test, one line: 'verify a user can reset their password'. A test case is how: steps, data, preconditions, expected results. One scenario usually breaks into several cases.

Scenarios are for coverage conversations; cases are for execution.

Real-world example

Scenario: 'user can pay by card'. Its cases: valid card happy path, declined card, expired card, wrong CVV, card form abandoned mid-payment. Five cases from one line — and in a coverage review you discuss the one line, not the five documents.

Key points
  • Scenario = what, one line
  • Case = how, with steps
  • One scenario → many cases
They'll ask next · tap one for the answer
The trap

Writing 40-step cases for everything — modern teams often run on scenarios plus exploratory notes.

Copy link

What is the difference between a test plan and a test strategy?

Test Documentationmidsenior

Strategy is the organisation's standing approach — levels, tools, environments, standards. It changes rarely.

Strategy is the organisation's standing approach — levels, tools, environments, standards. It changes rarely. A plan applies that strategy to one release or feature: this scope, these people, these dates, these risks.

One line: strategy is how we test here; a plan is how we test THIS.

Real-world example

Strategy says: API tests in CI, UI automation for revenue paths, exploratory each sprint. The Q3 payment-provider migration then gets a plan: scope includes refunds and webhooks, out of scope is the legacy provider, exit criteria include a full sandbox reconciliation.

Key points
  • Strategy = org-level, stable
  • Plan = this release, dated
  • Plan inherits the strategy
They'll ask next · tap one for the answer
The trap

Using the words interchangeably — the scoping difference is the whole question.

Copy link

What are the essential contents of a test plan?

Test Documentationmid

Scope (in AND out), approach per area, environments, entry and exit criteria, schedule and people, risks with mitigations, and reporting.

Scope (in AND out), approach per area, environments, entry and exit criteria, schedule and people, risks with mitigations, and reporting.

The two sections that separate a real plan from a template: out of scope — what you deliberately won't test, on record before release — and risks. A plan with no risks means nobody thought hard.

Real-world example

The out-of-scope line that saved an argument: 'Load testing excluded — owned by the platform team this quarter.' When a performance issue surfaced later, the plan showed the business had accepted that gap knowingly — a conversation, not a blame hunt.

Key points
  • Scope in AND out
  • Entry/exit criteria
  • Risks, or it's a template
They'll ask next · tap one for the answer
The trap

Listing ten IEEE sections from memory — interviewers want the two or three you'd actually fight for.

Copy link

What is a requirements traceability matrix and why does it matter?

Test Documentationmid

A mapping between requirements and the test cases covering them — so 'is everything tested?' gets answered with evidence, not a feeling.

A mapping between requirements and the test cases covering them — so 'is everything tested?' gets answered with evidence, not a feeling. A requirement with no linked case is a coverage gap found before release.

It also works backwards: when a requirement changes, the matrix says exactly which tests to revisit.

Real-world example

Before a banking release, the matrix showed REQ-31 'duplicate transfer detection' with zero linked cases — everyone assumed someone else had covered it. One empty row in a spreadsheet caught what would have been the worst possible production surprise.

Key points
  • Requirements ↔ tests mapping
  • Empty row = gap found early
  • Change impact: reverse lookup
They'll ask next · tap one for the answer
The trap

Calling it bureaucracy — the question is whether you can PROVE coverage, not whether you enjoy spreadsheets.

Copy link

Which test metrics do you actually track, and why?

Metricsmidsenior

A small set, each tied to a decision: defect leakage (is the process catching things?), defect density per module (where to focus), execution progress (are we on track?), and flake rate if there's…

A small set, each tied to a decision: defect leakage (is the process catching things?), defect density per module (where to focus), execution progress (are we on track?), and flake rate if there's automation (can we trust red?).

The senior half is what I don't track: pass percentage alone is decoration — every reported metric must change a decision.

Real-world example

Density pointed at the invoicing module: 3× the defects of anything else. That number moved real decisions — invoicing got exploratory sessions every sprint and a refactor made the next roadmap. A metric that moves effort is worth keeping; the rest is wallpaper.

Key points
  • Leakage, density, progress, flake
  • Each metric drives a decision
  • Pass rate alone = vanity
They'll ask next · tap one for the answer
The trap

Listing every metric you've heard of. Name the two or three you'd act on, with the action.

Copy link

What is defect density and defect removal efficiency?

Metricsmid

Defect density = defects per unit of size (per module, per KLOC) — its real use is comparing modules to find the hotspot.

Defect density = defects per unit of size (per module, per KLOC) — its real use is comparing modules to find the hotspot. DRE = caught before release ÷ total (caught + escaped) × 100 — the percentage your process caught in time.

Trend beats snapshot for both.

Real-world example

90 bugs caught internally, 10 escaped to production: DRE = 90 ÷ 100 = 90%. The number itself matters less than its direction — a DRE sliding from 95 to 85 over three releases is a process leak announcing itself early.

Key points
  • Density: defects ÷ size, per module
  • DRE: caught ÷ total × 100
  • Watch the trend, not the snapshot
They'll ask next · tap one for the answer
The trap

Quoting formulas without what you'd DO with the number — the number without the decision is trivia.

Copy link

What is exploratory testing and when is it the right choice?

Exploratory Testingmid

Simultaneous learning, test design and execution — you explore, and each result shapes the next test. Skilled work with a goal, not random clicking.

Simultaneous learning, test design and execution — you explore, and each result shapes the next test. Skilled work with a goal, not random clicking.

Right when: requirements are thin, time is short, a feature just landed, or scripted suites keep passing while users keep finding bugs. Scripts check what we predicted; exploration finds what we didn't.

Real-world example

A checkout suite was green for months while support tickets kept coming. One 90-minute exploratory session — charter: 'attack checkout as an impatient user' — found three bugs: double-click double-charge, back-button after payment, and a price change mid-session. All unpredictable, all unscripted.

Key points
  • Learn + design + execute together
  • Charter and time-box it
  • Finds what scripts can't predict
They'll ask next · tap one for the answer
The trap

Describing it as unstructured. Charters, time-boxes and notes are what make it a discipline.

Copy link

What is session-based test management?

Exploratory Testingmidsenior

The accountability layer for exploratory testing: time-boxed sessions (60–90 min), each with a charter, ending in notes, bugs, and a short debrief.

The accountability layer for exploratory testing: time-boxed sessions (60–90 min), each with a charter, ending in notes, bugs, and a short debrief.

It answers the fair management question 'what did exploration actually do?' — with sessions run, areas covered, findings per charter — without scripting the exploration itself.

Real-world example

Sprint's exploratory budget: six sessions. The board after: 'payments — 2 sessions, 4 bugs', 'new onboarding — 1 session, clean', 'reports — not covered'. Ten seconds of reading tells the lead exactly where confidence exists and where nobody has looked.

Key points
  • Time-box + charter + notes + debrief
  • Makes exploration auditable
  • Charter = mission, not steps
They'll ask next · tap one for the answer
The trap

Confusing the charter with a test case — it's a mission, and the freedom inside it is the point.

Copy link

What is the difference between ad-hoc testing and exploratory testing?

Exploratory Testingjuniormid

Ad-hoc is unstructured poking — no goal, no notes, no trail. Exploratory is a discipline: charter, time-box, notes, each finding steering the next test.

Ad-hoc is unstructured poking — no goal, no notes, no trail. Exploratory is a discipline: charter, time-box, notes, each finding steering the next test.

Both are unscripted; only one leaves something behind. Unscripted is not the same as unprofessional.

Real-world example

Ad-hoc: ten minutes clicking around a new build before standup — fine as a pulse check, invisible afterwards. Exploratory: a charter against the same build, 90 minutes, notes showing three areas covered and two bugs. Same freedom, completely different value.

Key points
  • Both unscripted
  • Exploratory: charter + notes
  • Ad-hoc leaves no trail
They'll ask next · tap one for the answer
The trap

Treating them as synonyms — the interviewer is checking you know exploration can be rigorous.

Copy link

What is risk-based testing?

Test Strategymidsenior

Prioritising by risk = likelihood × impact. Score features on both, test the high-risk ones first and deepest, and consciously go light on the rest.

Prioritising by risk = likelihood × impact. Score features on both, test the high-risk ones first and deepest, and consciously go light on the rest.

The honest part: risk-based testing means accepting less coverage on low-risk areas — and saying that out loud to the business, instead of pretending everything gets equal attention.

Real-world example

Payment flow: high impact, changes every sprint — deep testing, first, always. The static FAQ page: a glance. When time got cut mid-release, the risk ranking made the argument for us: the FAQ went untested and everyone had already agreed that was fine.

Key points
  • Risk = likelihood × impact
  • Deepest where risk is highest
  • Say the trade-off out loud
They'll ask next · tap one for the answer
The trap

Claiming risk-based testing covers everything — it's a prioritisation method, and admitting the trade-off is the point.

Copy link

You have two days to test a release that needs two weeks. What do you do?

Test Strategymidsenior

Cut by risk, and put the cut in writing. Order: the diff's blast radius, then revenue paths (login, checkout), then modules with bug history, then recent hotfixes.

Cut by risk, and put the cut in writing. Order: the diff's blast radius, then revenue paths (login, checkout), then modules with bug history, then recent hotfixes. Skip cosmetics, low-traffic flows, anything trusted automation already covers.

Then send the plan WITH the not-tested list — my constraint becomes the business's informed decision, which is where it belongs.

Real-world example

The email that does it: 'In two days I'll cover checkout, auth, and the three changed modules. NOT covered: reporting, admin, bulk export. If that's unacceptable, we move the date or add hands.' Every recipient now shares the risk they were silently handing me.

Key points
  • Changed areas → revenue paths → history
  • Skip what automation covers
  • Not-tested list, in writing
They'll ask next · tap one for the answer
The trap

'I'd work nights and weekends.' That hides a planning failure and guarantees it repeats.

Copy link

How would you test a feature with no requirements or documentation?

Test Strategymidsenior

Rebuild the intent from what exists: ticket comments, the pull request, designs, similar features, competitors.

Rebuild the intent from what exists: ticket comments, the pull request, designs, similar features, competitors. Then explore the feature and write down what it actually does as plain statements — that document becomes the de-facto spec.

Then have the developer and product owner correct it: correcting a wrong statement is easy; writing a spec from scratch never happens.

Real-world example

An undocumented export feature: I explored it and wrote fourteen statements — 'exports current filters only', 'caps at 10,000 rows', 'emails when done'. The PO crossed out the cap ('should be 50,000') and the developer circled the email ('only on success — bug?'). Two findings before formal testing began.

Key points
  • Mine tickets, PRs, designs
  • Explore → written statements
  • Their corrections = findings
They'll ask next · tap one for the answer
The trap

'I can't test without requirements.' The job is testing under ambiguity — that answer says you can't do the job.

Copy link

What is the role of a tester in Agile ceremonies?

Agile & Scrumjuniormid

Active in all of them, loudest early. Refinement: ask the edge-case questions before they become code. Planning: size testing work, flag risk. Stand-up: raise blockers — environments, data.

Active in all of them, loudest early. Refinement: ask the edge-case questions before they become code. Planning: size testing work, flag risk. Stand-up: raise blockers — environments, data. Review: show what was tested, not just what passed. Retro: bring the process bugs.

QA's cheapest value is before the code exists.

Real-world example

One refinement question — 'what happens to a subscription renewal if the payment fails halfway?' — turned into a story of its own. Un-asked, it would have been a production incident with a partial charge; asked, it was a design decision made over coffee.

Key points
  • Refinement = QA's biggest value
  • Ask edge cases pre-code
  • Retro: process bugs count
They'll ask next · tap one for the answer
The trap

Describing QA as silent attendees waiting for builds — the modern role is loudest before development starts.

Copy link

What is the Definition of Done, and how do acceptance criteria differ?

Agile & Scrumjuniormid

Definition of Done is the team's standing checklist for EVERY story: reviewed, tested, deployed to staging, documented. Acceptance criteria are per-story: the conditions THIS feature must meet.

Definition of Done is the team's standing checklist for EVERY story: reviewed, tested, deployed to staging, documented. Acceptance criteria are per-story: the conditions THIS feature must meet.

DoD is the same bar for all stories; criteria are unique per story. Both gates must close.

Real-world example

A login story passed all its acceptance criteria — lockout worked, errors correct. Still not Done: the DoD required automated tests in CI and a staging deploy, and neither existed yet. Criteria said the feature works; DoD said the work isn't finished.

Key points
  • DoD: one bar, every story
  • Criteria: this story only
  • Both must pass
They'll ask next · tap one for the answer
The trap

Mixing them up — anchor: DoD is the team's bar, criteria are the story's bar.

Copy link

What is the 'three amigos' practice?

Agile & Scrummid

A short conversation before development: product (what do we need?), development (how will we build it?), QA (what could go wrong, how do we test it?).

A short conversation before development: product (what do we need?), development (how will we build it?), QA (what could go wrong, how do we test it?). Together they walk the story, surface edge cases, agree acceptance criteria.

Fifteen minutes here is the cheapest bug prevention that exists.

Real-world example

Story: 'users can apply one discount code'. Amigos, minute nine: QA asks about a code applied, then cart edited below the code's minimum. Nobody had decided. The rule got written on the spot — a bug that never existed, killed by a calendar invite.

Key points
  • Product + dev + QA, pre-code
  • Edge cases while they're free
  • Output: agreed criteria
They'll ask next · tap one for the answer
The trap

Calling it a process meeting — it's about one story's edge cases, concrete and short.

Copy link

How do you handle testing when stories are only ready on the last day of the sprint?

Agile & Scrummidsenior

Two answers: cope today, fix the system tomorrow. Today: test in risk order, timebox exploration, and make what didn't get covered explicit before sign-off — never silently thin the testing.

Two answers: cope today, fix the system tomorrow. Today: test in risk order, timebox exploration, and make what didn't get covered explicit before sign-off — never silently thin the testing.

Tomorrow: raise the pattern in retro with numbers, and push the real fixes — smaller stories, QA in refinement, earlier handoffs, a WIP limit.

Real-world example

The retro line that changed it: 'Four sprints running, 60% of stories reached QA on the final day — here are the dates.' Numbers turned a complaint into a process problem the team owned; stories got split smaller and testing started day one, mid-development.

Key points
  • Today: risk order + visible gaps
  • Never silently cut coverage
  • Retro with numbers, not feelings
They'll ask next · tap one for the answer
The trap

Only answering the heroic short-term half. Senior candidates fix the system, not just the sprint.

Copy link

In a sprint, when do you decide to automate a test?

Agile & Scrummid

Automate when the test will run many times against a stable feature: regression paths, smoke, data-heavy repeats.

Automate when the test will run many times against a stable feature: regression paths, smoke, data-heavy repeats. Stay manual while the feature churns, for one-offs, and for judgment calls — visuals, usability, exploration.

The rule: manual first while it stabilises, automate when it stops moving. ROI in one line: will the writing cost be repaid in runs?

Real-world example

New checkout redesign: manual and exploratory for two sprints while the UI shifted daily — automating it then would have meant rewriting locators every morning. Sprint three, design frozen: the happy path and payment-declined cases went into the suite, where they've run every build since.

Key points
  • Automate: repeated + stable
  • Manual: churning or judgment
  • ROI = write cost vs runs
They'll ask next · tap one for the answer
The trap

'Automate everything' — the answer that says you've never maintained a flaky suite.

Copy link

What is REST, and what do the common HTTP methods and status codes mean?

API Basicsjuniormid

REST is the standard style for web APIs: resources at URLs, HTTP methods saying what you do. GET reads, POST creates, PUT/PATCH update (full vs partial), DELETE removes.

REST is the standard style for web APIs: resources at URLs, HTTP methods saying what you do. GET reads, POST creates, PUT/PATCH update (full vs partial), DELETE removes.

Codes by family: 2xx success, 4xx you messed up (400 bad request, 401 unauthenticated, 403 forbidden, 404 missing), 5xx they messed up. The pair everyone confuses: 401 = who are you; 403 = I know you, and no.

Real-world example

Testing a delete: DELETE /orders/123 returns 200. The grey-box follow-through: GET /orders/123 should now 404, and a second DELETE should 404 too — not 200 again, and definitely not 500. Three requests, and you've tested more than the endpoint's happy path.

Key points
  • GET read, POST create, PUT/PATCH update, DELETE remove
  • 2xx / 4xx / 5xx families
  • 401 = unauthenticated, 403 = unauthorised
They'll ask next · tap one for the answer
The trap

Fumbling 401 vs 403 — the most common API question there is.

Copy link

How do you test an API manually using Postman?

API Basicsjuniormid

Build the request — method, URL, auth header, JSON body — send, and check more than the status: the body's fields and values, response time, and the side effect (does a follow-up GET or the database…

Build the request — method, URL, auth header, JSON body — send, and check more than the status: the body's fields and values, response time, and the side effect (does a follow-up GET or the database show the change?).

Then the negative half: missing fields, wrong types, no token, someone else's ID. Save it all as a collection with environment variables so it re-runs as a suite.

Real-world example

POST /users returns 201 — looks done. The checks that find the real bugs: GET the new user (does it actually exist?), POST the same email again (409 or duplicate?), POST with no auth (401?), and read the response body — we once found it echoing the password hash back.

Key points
  • Status + body + side effect
  • Negative cases: bad data, no auth
  • Collections + variables = reusable
They'll ask next · tap one for the answer
The trap

'Send request, check 200.' A 200 with a wrong body passes that test — which is exactly the point of the question.

Copy link

What do you test in an API beyond the status code?

API Basicsmidsenior

The body: right fields, values, types. The contract: response matches the documented schema. Errors: correct codes AND useful messages. Security: can I read someone else's data by changing an ID?

The body: right fields, values, types. The contract: response matches the documented schema. Errors: correct codes AND useful messages. Security: can I read someone else's data by changing an ID? Side effects: did the database actually change? Plus response time and headers.

The one that impresses: idempotency — the same POST twice must not create two records.

Real-world example

GET /orders/124 with user A's token, where order 124 belongs to user B — it returned the order. Status 200, perfect JSON, textbook contract… and a critical IDOR leaking other customers' purchases. No status-code check would ever have caught it.

Key points
  • Body + schema, not just status
  • IDOR: swap the ID, expect 403
  • Idempotency: same POST twice
They'll ask next · tap one for the answer
The trap

Stopping at 'validate the response' — name the checks: schema, security, side effects, idempotency.

Copy link

Why do testers need SQL, and what would you use it for?

SQL Basicsjuniormid

Because the UI shows a claim; the database shows the truth. SQL verifies what an action actually persisted, builds precise test data instead of begging for it, and settles the oldest question in…

Because the UI shows a claim; the database shows the truth. SQL verifies what an action actually persisted, builds precise test data instead of begging for it, and settles the oldest question in triage: wrong data, or wrong display?

It upgrades your bug reports from opinions to evidence.

Real-world example

The report that gets fixed in an hour: 'Order saved with NULL in the discount column — SELECT attached.' The report that starts a three-day argument: 'total looks wrong sometimes.' Same bug — the difference is one query.

Key points
  • DB truth vs UI claim
  • Build your own test data
  • Evidence-grade bug reports
They'll ask next · tap one for the answer
The trap

'To check data in the database' with no scenario — give the NULL-column story, not the definition.

Copy link

Write a SQL query to find duplicate records, and explain JOINs briefly.

SQL Basicsjuniormid

Duplicates: group and count.

Duplicates: group and count.

SELECT email, COUNT(*)
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

HAVING filters after grouping — that's what they're checking; WHERE can't see the count. JOINs: INNER = only rows matching in both tables; LEFT = all left rows plus matches, NULLs where the right side is missing.

Real-world example

The tester's classic LEFT JOIN: users to orders, then WHERE orders.id IS NULL — every user who never ordered. Same pattern finds paid orders with no invoice row, accounts with no verification record: the NULLs are your missing-data bug list.

Key points
  • GROUP BY + HAVING COUNT > 1
  • HAVING filters after grouping
  • LEFT JOIN + IS NULL = the gap finder
They'll ask next · tap one for the answer
The trap

Writing WHERE COUNT(*) > 1 — it doesn't run, and it's the exact mistake the question was built to catch.

Copy link

How do you approach cross-browser and cross-device testing?

Test Typesmid

From analytics, not from a master list: cover the combinations your users actually run — usually 4–6 pairs cover 90%+ of traffic.

From analytics, not from a master list: cover the combinations your users actually run — usually 4–6 pairs cover 90%+ of traffic. Full functional pass on the top pair; on the rest, layout, critical flows, and input differences (touch, keyboards, viewports).

Cloud grids over device drawers; screenshot automation for rendering. Coverage chosen by usage, not by fear.

Real-world example

Analytics said: Chrome desktop 58%, Chrome Android 22%, Safari iOS 12%, Edge 5% — four pairs, 97% of users. The matrix became one deep pass and three targeted ones. The old plan had eleven browsers 'to be safe'; nobody had ever finished it.

Key points
  • Matrix from YOUR analytics
  • Deep on top pairs, targeted on rest
  • Cloud grid + screenshots
They'll ask next · tap one for the answer
The trap

Promising to test 'all browsers and devices' — that's not a strategy, it's an apology in advance.

Copy link

What is accessibility testing and where would you start?

Test Typesmidsenior

Checking the product works for people with disabilities — visual, motor, auditory, cognitive — usually against WCAG, commonly level AA. In many markets it's law, not polish.

Checking the product works for people with disabilities — visual, motor, auditory, cognitive — usually against WCAG, commonly level AA. In many markets it's law, not polish.

Start: automated scan (axe/Lighthouse) for the cheap third, then unplug the mouse — a full keyboard-only pass finds the most real bugs per minute. Then a screen reader on the critical flow, contrast, alt text.

Real-world example

Keyboard-only on a checkout: Tab reached the pay button but focus was invisible — white outline on white — and the promo-code field couldn't be reached at all. Two real blockers in ten minutes, on a page whose Lighthouse score was 96.

Key points
  • WCAG AA, often legal
  • Scans catch ~a third
  • Keyboard-only pass = best value
They'll ask next · tap one for the answer
The trap

Treating a Lighthouse score as the whole answer — the scanner can't tell whether the page makes sense with your eyes closed.

Copy link

Why does a tester need SQL, and what is database testing?

SQL Basicsjuniormid

Because the UI can lie and the database is the source of truth. Database testing checks that data is stored, updated and related correctly — that what a screen or an API claims actually landed in the…

Because the UI can lie and the database is the source of truth. Database testing checks that data is stored, updated and related correctly — that what a screen or an API claims actually landed in the tables, with the right values and no corruption.

SQL is how you check it. After an action, you query the database and assert the row is there, the fields are right, and nothing else was touched. A UI showing "saved" while the record never persisted is exactly the bug only a query catches.

Key points
  • The DB is the source of truth; the UI can show stale or wrong data
  • Verify data persisted correctly, with the right values, nothing corrupted
  • SQL lets you assert on the row behind the screen
They'll ask next · tap one for the answer
Copy link

What's the difference between an INNER JOIN and a LEFT JOIN?

SQL Basicsmid

An INNER JOIN returns only rows that match in both tables. A LEFT JOIN returns every row from the left table, plus matches from the right — and NULLs where there's no match.

An INNER JOIN returns only rows that match in both tables. A LEFT JOIN returns every row from the left table, plus matches from the right — and NULLs where there's no match.

For testing that difference is a real check: a LEFT JOIN from orders to shipments with a NULL shipment finds orders that never shipped — records an INNER JOIN would silently hide. Reaching for the right join is often how you surface the missing-data bug.

Real-world example

To find users who never placed an order: LEFT JOIN users to orders and filter WHERE orders.id IS NULL. An INNER JOIN would drop exactly the users you were looking for.

Key points
  • INNER: only matching rows in both tables
  • LEFT: all left rows + matches, NULL where no match
  • LEFT JOIN + IS NULL finds missing/orphan records
They'll ask next · tap one for the answer
Copy link

What's the difference between WHERE and HAVING?

SQL Basicsmid

WHERE filters individual rows before they're grouped. HAVING filters groups after a GROUP BY, using aggregate results. You can't put an aggregate like COUNT(*) in a WHERE — that's what HAVING is for.

WHERE filters individual rows before they're grouped. HAVING filters groups after a GROUP BY, using aggregate results. You can't put an aggregate like COUNT(*) in a WHERE — that's what HAVING is for.

So to find customers with more than five orders: GROUP BY customer, then HAVING COUNT(*) > 5. WHERE would filter orders before counting; HAVING filters the counts themselves.

Key points
  • WHERE filters rows before grouping
  • HAVING filters groups after GROUP BY, on aggregates
  • Aggregates (COUNT, SUM) go in HAVING, not WHERE
They'll ask next · tap one for the answer
Copy link

How would you verify that an API actually wrote the right data to the database?

SQL Basicsmid

Call the API, then query the table directly and assert the row matches what you sent — not just that the API returned 200.

Call the API, then query the table directly and assert the row matches what you sent — not just that the API returned 200. Check the values you set, the defaults and timestamps the system should add, and that related tables updated correctly.

This catches the class of bug where the API responds success from memory but the write silently failed or saved the wrong value. The response says what the API claims; the query says what actually happened.

Real-world example

A POST returned 201 with the order in the body, but a trigger meant the DB stored the total pre-discount. Only a query comparing the stored total to the expected value caught it.

Key points
  • Query the row after the call — don't trust the 200
  • Assert values, defaults/timestamps, and related-table effects
  • Catches 'API says saved, DB says otherwise' bugs
They'll ask next · tap one for the answer
Copy link

How do you find duplicate rows in a table?

SQL Basicsmid

Group by the columns that should be unique and count — anything over one is a duplicate. SELECT email, COUNT() FROM users GROUP BY email HAVING COUNT() > 1 returns every email that appears more than…

Group by the columns that should be unique and count — anything over one is a duplicate. SELECT email, COUNT() FROM users GROUP BY email HAVING COUNT() > 1 returns every email that appears more than once, with how many times.

It's a common data-integrity test: a field that's supposed to be unique (email, order number) but has no constraint enforcing it will accumulate duplicates, and this query is how you prove it.

Key points
  • GROUP BY the should-be-unique columns, COUNT(*)
  • HAVING COUNT(*) > 1 surfaces the duplicates
  • Standard integrity check for unenforced uniqueness
They'll ask next · tap one for the answer
Copy link

What data-integrity checks would you write for a new feature?

SQL Basicsmidsenior

The ones that catch silent corruption: no orphan rows (every child has a valid parent — a LEFT JOIN with IS NULL), no unexpected duplicates, required fields never NULL, and totals that reconcile (an…

The ones that catch silent corruption: no orphan rows (every child has a valid parent — a LEFT JOIN with IS NULL), no unexpected duplicates, required fields never NULL, and totals that reconcile (an order's total equals the sum of its line items).

These are the bugs a UI test sails past — the screen looks fine while the data underneath drifts. A handful of standing queries over the key tables catches data problems before they compound into a support incident.

Key points
  • No orphans (child rows with a missing parent)
  • No unexpected duplicates; required fields not NULL
  • Reconciliation: derived totals match their sources
They'll ask next · tap one for the answer
Copy link
They'll ask next