Describe the risk first, then choose the smallest test layer that provides useful evidence. A tool name without an oracle or failure model is not a test strategy.
Question set
15 detailed answers
01What is the difference between verification and validation?
junior
Short answer: Verification answers "are we building the product right" — does it conform to the spec and requirements. Validation answers "are we building the right product" — does it solve the user's actual problem. Verification is about matching documents, validation is about matching expectations.
In depth:
- Verification — checking an artifact against its specification. Often static: requirements review, code inspection, cross-checking against the spec. Answers: "did we build it to the blueprint?".
- Validation — checking that the finished system meets the user's need. Usually dynamic: real execution, acceptance testing, a demo to the customer. Answers: "was this blueprint the right one?".
- Order — verification comes earlier and is cheaper, validation is closer to release.
| Criterion | Verification | Validation |
|---|---|---|
| Question | building it right? | building the right thing? |
| Reference | specification | user needs |
| Type | usually static | usually dynamic |
| Example | review, inspection | acceptance test, demo |
⚠️ Common mistake: rattling off examples ("a review is verification") without the two crisp formulations "are we building it right" / "are we building the right thing." That's exactly what the interviewer is listening for.
02What are the test levels and who owns each one?
junior
Short answer: ISTQB defines four levels: unit, integration, system, and acceptance. Developers own unit tests, developers and QA share integration, QA owns system testing, and QA together with the customer/business owns acceptance. The levels mirror the pyramid shape: the lower you go, the more numerous and cheaper the tests.
In depth:
- Unit — a single module/function in isolation. Owner: the developer, usually in CI on every commit.
- Integration — interaction between modules and external systems (API, DB). Owner: developer and/or QA.
- System — the whole system against requirements, end-to-end. Owner: QA.
- Acceptance (UAT) — is the system ready to hand over from a business standpoint. Owner: customer/PO, supported by QA.
| Level | What it checks | Owner |
|---|---|---|
| Unit | a single module | developer |
| Integration | module/API wiring | developer + QA |
| System | the whole system | QA |
| Acceptance | business readiness | customer + QA |
⚠️ Common mistake: confusing test levels with test types (smoke, regression, load). A level is about the scope of the object under test, a type is about the goal of the check — they are orthogonal.
03What types of testing do you know and how do you classify them?
junior
Short answer: It's better not to list testing types flat but to arrange them along classification axes: by goal (functional / non-functional), by code knowledge (black / white / grey box), by automation level (manual / automated), and by stage/purpose of the run (smoke, regression, acceptance). Structure matters more than list length.
In depth:
- By goal — functional (what the system does) vs non-functional (performance, security, usability).
- By code access — black box (no code), white box (full knowledge), grey box (partial).
- By automation — manual vs automated.
- By stage/purpose of the run — smoke, sanity, regression, acceptance.
| Classification axis | Options |
|---|---|
| Goal | functional / non-functional |
| Code knowledge | black / white / grey box |
| Automation | manual / automated |
| Run stage | smoke / sanity / regression / acceptance |
⚠️ Common mistake: dumping a pile of terms ("load, smoke, regression, usability…") with no grouping logic. The interviewer is scoring systematic thinking, not the length of the list.
04What is the difference between smoke and sanity testing?
junior
Short answer: Smoke is a broad, shallow check that the build is alive at all and worth testing further (key features launch). Sanity is a narrow, deep check of one specific fix or feature after a change. Smoke goes "wide," sanity goes "deep."
In depth:
- Smoke — run the main scenarios at surface level right after the build: login opens, key pages load. If the build "smokes," send it back to the developer without wasting time on detailed testing.
- Sanity — after a targeted change, verify that this specific area works correctly, usually without a full regression.
- Formalization — smoke is more often automated and documented; sanity is often informal.
| Criterion | Smoke | Sanity |
|---|---|---|
| Coverage | broad, whole build | narrow, one area |
| Depth | shallow | deep |
| When | right after the build | after a targeted fix |
| Goal | is the build testable? | does the fix work? |
⚠️ Common mistake: using smoke and sanity as synonyms. It's a classic trap question: the difference is exactly "broad-shallow" vs "narrow-deep."
05What is the difference between regression testing and retesting?
junior
Short answer: Retesting confirms that a specific reported bug is fixed — you run exactly the same steps as in the bug report. Regression checks that this fix (or any other change) didn't break the rest of the previously working functionality around it.
In depth:
- Retest — follows the steps of a specific defect, expecting the bug to no longer reproduce. Runs only on the specific fixed bugs, case by case.
- Regression — a suite over adjacent and key functionality; answers "did anything that used to work break?" A strong automation candidate since it repeats every release.
- Order — retest first (is the bug closed?), then regression around it.
bug fix #123
│
┌──────┴───────┐
▼ ▼
retest #123 regression
(same steps) (adjacent features —
bug gone? nothing broke?)
⚠️ Common mistake: conflating the two — "I retested, so I did regression." Retest is about one bug via the same steps; regression is about the survival of everything else.
06What is the difference between black-box, white-box, and grey-box testing?
junior
Short answer: The axis of difference is how much the tester knows about the system's internals. Black box — only input/output, the user's view, no code access. White box — full knowledge of code and structure (unit tests, branch coverage). Grey box — partial knowledge: e.g. you know the DB schema and API but not the source.
In depth:
- Black box — test behavior against requirements without looking at code. Techniques: equivalence classes, boundary values. The end-user's view.
- White box — test structure: branches, conditions, paths. Requires code access; typical for developers and unit tests.
- Grey box — a hybrid: some internals are known (DB structure, API contracts), which helps prepare data and check integrations more precisely.
| Approach | Code knowledge | Who and techniques |
|---|---|---|
| Black box | none | QA; equivalence, boundaries |
| White box | full | dev; branch/path coverage |
| Grey box | partial | integration, security, API |
⚠️ Common mistake: confusing these methods with test levels (unit / integration / system). A box approach is about code access, a level is about object scope; different approaches can apply at the same level.
07What are SDLC and STLC and how do they relate?
junior
Short answer: SDLC (Software Development Life Cycle) is the whole product development lifecycle from idea to maintenance. STLC (Software Testing Life Cycle) is the testing cycle inside it: from requirements analysis to test closure. STLC doesn't run "after development" — it's woven into the SDLC from the earliest phases (shift-left).
In depth:
- SDLC — phases: requirements → design → development → testing → deployment → maintenance.
- STLC — phases: requirements analysis → planning → test case design → environment setup → execution → closure.
- Relation (shift-left) — testing starts already at requirements analysis (finding ambiguities and contradictions statically), not only on a finished build.
Req. analysis → Planning → Case design
→ Environment setup → Execution → Closure
⚠️ Common mistake: treating SDLC and STLC as the same thing, or placing testing only "at the end, after development." An early STLC start (shift-left) catches defects when they're cheapest to fix.
08Name the seven ISTQB testing principles.
middle
Short answer: The seven ISTQB principles: testing shows the presence of defects, not their absence; exhaustive testing is impossible; early testing saves money; defects cluster; the pesticide paradox; testing is context-dependent; the absence-of-errors fallacy.
In depth:
- Presence of defects — tests prove bugs exist but can never prove there are none.
- Exhaustive is impossible — you can't check every input combination; you need priorities and risk analysis.
- Early testing — the earlier a defect is found, the cheaper the fix (shift-left).
- Defect clustering — ~80% of bugs concentrate in ~20% of modules (Pareto principle).
- Pesticide paradox — the same tests stop finding new bugs over time; cases must be refreshed.
- Context-dependent — banking and a game are tested differently.
- Absence-of-errors fallacy — a product with no bugs that doesn't solve the user's problem is still a failure.
⚠️ Common mistake: confusing the "absence-of-errors fallacy" (all bugs found, but the wrong product) with "exhaustive testing is impossible" (you can't check everything). They are different principles.
09What is the testing pyramid and why should UI tests be the fewest?
middle
Short answer: The testing pyramid is a model for distributing automated tests across layers: many fast, cheap unit tests at the base, fewer API/integration tests in the middle, and a minimum of slow UI/E2E tests at the top. UI tests are fewest because they're the slowest, most brittle (flaky), and most expensive to maintain.
In depth:
- Unit (base) — thousands of tests, milliseconds, catch logic-level bugs, give the developer fast feedback.
- Integration / API (middle) — verify wiring and contracts; fewer of them, slower.
- UI / E2E (top) — few, run through the real interface; slow, break from any layout tweak, expensive to fix.
/\ UI / E2E — few, slow, flaky
/ \
/----\ Integration / API
/ \
/--------\ Unit — many, fast, cheap
⚠️ Common mistake: naming the layers but not explaining "why." The interviewer wants the reason specifically: feedback speed and maintenance cost. An inverted pyramid (lots of E2E) is the "ice-cream cone" anti-pattern.
10How does functional testing differ from non-functional testing?
junior
Short answer: Functional testing checks what the system does — whether behavior matches requirements (the "Pay" button charges the card). Non-functional checks how well it does it — performance, security, usability, reliability (payment completes in 2 seconds under load).
In depth:
- Functional — against functional requirements: login, search, checkout, calculations. The answer is "yes/no: works as in the spec."
- Non-functional — against quality attributes: speed, resilience under load, security, availability, convenience. The answer is measured in numbers (latency, RPS, uptime).
- Both are needed — a functionally correct but sluggish or insecure system is still unusable.
| Criterion | Functional | Non-functional |
|---|---|---|
| Question | what does it do? | how well? |
| Reference | functional reqs | quality attributes |
| Examples | login, search, payment | load, security, usability |
| Assessment | yes/no | metrics (ms, RPS, %) |
⚠️ Common mistake: giving definitions with no examples and no crisp "what it does" vs "how well" pair. An example on each side closes the question.
11What is the difference between load, stress, soak, and spike testing?
middle
Short answer: These are four kinds of performance testing distinguished by load profile. Load — expected/peak normal load. Stress — beyond capacity, to the breaking point. Soak (endurance) — moderate load over a long duration (memory leaks, degradation). Spike — a sharp short surge and return.
In depth:
- Load — hold the projected number of users; verify metrics (latency, RPS) stay within SLA.
- Stress — push load above normal to find the breaking point and see how the system degrades and recovers.
- Soak / endurance — hours-to-days under load; catch memory leaks, log bloat, degradation over time.
- Spike — an instant surge (a sale, a mailout) and a sharp drop; verify elasticity and auto-scaling.
| Type | Load profile | What we look for |
|---|---|---|
| Load | expected peak | SLA compliance |
| Stress | beyond the limit | the breaking point |
| Soak | long, steady | leaks, degradation |
| Spike | sharp surge | elasticity |
⚠️ Common mistake: conflating load and stress. Load is "can it handle normal load," stress is "where does it break and how does it behave past the limit." Even a manual QA is expected to know this taxonomy.
12What is exploratory testing and when does it beat scripted test cases?
middle
Short answer: Exploratory testing is the simultaneous learning of the product, test design, and test execution without pre-written scripts, guided by the tester's experience and judgment. It beats scripts on new or poorly specified features, on usability, and on hunting edge cases where you can't foresee every check in advance.
In depth:
- Essence — the tester learns on the fly: the result of each step suggests the next one. Design and execution are fused.
- When it wins — a new feature with no clear requirements, usability, "what if," hunting non-obvious bugs, no time for formal cases.
- Session-based (SBTM) — to keep it from being chaos: a fixed time-box (60–90 min), a charter (session goal), and notes as you go.
| Criterion | Exploratory | Scripted |
|---|---|---|
| Scenarios | on the fly | written in advance |
| Strong on | new, unclear, UX | stable, regression |
| Governance | charter + sessions | test cases |
| Repeatability | lower | high |
⚠️ Common mistake: calling exploratory "chaotic clicking with no plan." It's a structured approach: session-based testing, charters, and session logs make it manageable and reportable.
13What are static and dynamic testing? Give examples.
middle
Short answer: Static testing checks artifacts without executing the code — reviews and analysis. Dynamic testing checks the system during execution — an actual run with input data. Static catches defects earlier and cheaper; dynamic verifies actual behavior.
In depth:
- Static — requirements reviews, code inspection, walkthroughs, static analysis (linters, SonarQube). Finds defects in documents and code before running, often at the requirements stage.
- Dynamic — running test cases, unit/integration/system, load testing. Requires a compiled, runnable build.
- Economics — fixing a defect found at requirements review is many times cheaper than in production; hence the value of static testing and shift-left.
| Criterion | Static | Dynamic |
|---|---|---|
| Code execution | no | yes |
| Examples | review, analysis, inspection | unit, E2E, load |
| When | from requirements onward | on a finished build |
| Catches | defects in artifacts | behavioral failures |
⚠️ Common mistake: believing testing only starts with a finished build. That contradicts the early-testing principle: static checks of requirements are full-fledged testing too.
14What is the pesticide paradox and how do you deal with it?
concept
Short answer: The pesticide paradox is one of the ISTQB principles: if you run the same set of tests over and over, it eventually stops finding new defects. Just as pests grow resistant to a pesticide, the code becomes "immune" to unchanged tests — they only check what has long been working.
In depth:
How to deal with it:
- Regularly review and update cases — add new checks for changed functionality and for bugs found in production.
- Add exploratory sessions — unscripted testing finds what a fixed set misses by definition.
- Vary the test data — new inputs, boundary values, combinations, not the same dataset every time.
- Rotate and prune the suite — retire stale cases, write new ones for emerging risks.
⚠️ Common mistake: reading a green regression run as "there are no bugs." Consistently green unchanged tests more often mean they've simply stopped looking for anything new, not that quality is perfect.
15Are QA, QC, and testing the same thing?
junior
Short answer: No. QA (Quality Assurance) is about processes and defect prevention — process-oriented. QC (Quality Control) is about controlling the quality of the finished product — product-oriented. Testing is a tool inside QC. The relationship is nested: QA ⊃ QC ⊃ testing.
In depth:
- QA — builds processes, standards, reviews so defects don't arise (proactive, about the process). Example: introducing code review and a Definition of Done.
- QC — checks the finished product against requirements, catching defects already made (reactive, about the product).
- Testing — a concrete QC activity: executing test cases, finding bugs.
┌──────────────────────────────┐
│ QA — processes, prevention │
│ ┌────────────────────────┐ │
│ │ QC — product control │ │
│ │ ┌─────────────────┐ │ │
│ │ │ Testing │ │ │
│ │ └─────────────────┘ │ │
│ └────────────────────────┘ │
└──────────────────────────────┘
⚠️ Common mistake: using QA, QC, and testing as synonyms. The key distinction: QA prevents defects (process), QC detects them (product), and testing is one particular detection method.
Source notes
References and review policy
RecallDeck’s interview answers are editorial material, reviewed against maintained official documentation where a primary reference is available. Tool selections use direct provider links and contain no affiliate placements. Features can change after the review date.
From reading to recall
Practice the full interview loop.
RecallDeck schedules the concepts you miss and keeps coding, design, and behavioral fundamentals available when the interviewer changes direction.