Fundamentals
Core software-testing concepts — QA vs QC, test levels and types, the defect lifecycle, and where testing fits in the SDLC.
21 questions
JuniorTheoryVery commonWhat is the difference between black-box, white-box, and grey-box testing?
What is the difference between black-box, white-box, and grey-box testing?
Black-box tests behavior through the interface with no knowledge of internals — focus on requirements. White-box tests with full access to code and structure — focus on paths and branches. Grey-box combines both: you test from outside but use partial knowledge of internals (DB, API) to design smarter checks.
Common mistakes
- ✗Swapping black-box (no internals) with white-box (full internals)
- ✗Saying grey-box requires no knowledge at all
- ✗Tying the colours to which UI artifact is inspected rather than internal knowledge
Follow-up questions
- →Which level of testing is usually white-box?
- →Give an example where grey-box knowledge improves a black-box check.
JuniorTheoryVery commonWhat is a bug report and what should it contain?
What is a bug report and what should it contain?
A bug report is a documented description of a defect that lets others reproduce and fix it. Core fields: a clear title/summary, environment, preconditions, numbered steps to reproduce, the expected result versus the actual result, severity and priority, plus attachments (screenshots, screencasts, logs, stack traces). The expected-vs-actual pair is its heart.
Common mistakes
- ✗Omitting steps to reproduce or making them non-numbered and vague
- ✗Leaving out the expected result and giving only the actual
- ✗Forgetting environment details so the bug can't be reproduced
Follow-up questions
- →Why are both expected and actual results required, not just actual?
- →What makes a bug report title good rather than vague?
JuniorTheoryVery commonWhat is the difference between severity and priority of a defect?
What is the difference between severity and priority of a defect?
Severity is how badly the defect impacts the system's functioning (blocker, critical, major, minor) — a technical measure usually set by the tester. Priority is how urgently it must be fixed — a management measure set by the lead/manager from business impact. They are independent: a typo on the logo can be low severity but high priority.
Common mistakes
- ✗Saying severity and priority always rise and fall together
- ✗Attributing both decisions to the same role
- ✗Confusing which one is technical impact vs business urgency
Follow-up questions
- →Give an example of a high-severity but low-priority defect.
- →Who typically sets severity, and who sets priority?
MiddleTheoryVery commonHow do smoke and regression testing differ, and how do you pick cases for each?
How do smoke and regression testing differ, and how do you pick cases for each?
Smoke testing is a shallow, wide sanity check that the build's critical paths work and it is worth testing further; a small, fast set run first on every build. Regression testing re-checks that new changes did not break existing functionality; it is broader and deeper. Pick smoke cases by criticality — the few flows that must work; pick regression cases by impact analysis — the areas a change could touch, plus historically fragile spots. A small hotfix may need only smoke around the fix.
Common mistakes
- ✗Equating smoke depth with regression depth
- ✗Selecting regression cases without impact analysis
- ✗Running full regression for every trivial hotfix
Follow-up questions
- →When would a hotfix still require full regression despite being small?
- →How does smoke testing relate to build acceptance in CI?
JuniorTheoryCommonWhat are the common causes of bugs in software?
What are the common causes of bugs in software?
Bugs come mostly from human factors and process gaps: human mistakes in design and coding, requirements that change mid-project, misunderstood or ambiguous specifications, time pressure that forces shortcuts, poor prioritization of what to test, confusion between software versions, and the sheer complexity of the system. Most defects trace back to communication and requirements, not just typing errors in code.
Common mistakes
- ✗Reducing all bugs to coding typos only
- ✗Ignoring requirements and communication as a root cause
- ✗Forgetting that time pressure and complexity drive defects
Follow-up questions
- →Which of these causes can a tester influence the most?
- →How does early testing reduce requirements-related defects?
JuniorTheoryCommonHow do error, defect, and failure differ in the ISTQB chain?
How do error, defect, and failure differ in the ISTQB chain?
An error (mistake) is a human action that produces a wrong result — e.g. a developer misreads a requirement. That error introduces a defect (fault) in the code or document. When the defective code runs and behaves wrongly, the result observed in operation is a failure. So the chain is error → defect → failure: human cause, static flaw, runtime effect.
Common mistakes
- ✗Reversing the direction of the cause-and-effect chain
- ✗Treating the three terms as interchangeable synonyms
- ✗Saying a defect is always observable without running the code
Follow-up questions
- →Can a defect exist without ever causing a failure?
- →Where in this chain does static testing intervene?
JuniorTheoryCommonWhat is the difference between positive and negative testing?
What is the difference between positive and negative testing?
Positive testing feeds valid data and expected scenarios to confirm the system does what it should ("happy path"). Negative testing feeds invalid data, wrong formats, and unexpected actions to confirm the system rejects them gracefully — showing an error when it should and not crashing. Good practice: start positive, then cover negative cases.
Common mistakes
- ✗Swapping which one uses valid versus invalid input
- ✗Starting a test session with negative cases before positive ones
- ✗Believing negative testing is the same as security testing
Follow-up questions
- →Why is it recommended to run positive cases before negative ones?
- →Give two negative test cases for a numeric input field.
JuniorTheoryCommonWhat are the stages of the software life cycle, and where does testing fit?
What are the stages of the software life cycle, and where does testing fit?
The software life cycle spans from the first concept to the moment the product can no longer be used. Typical stages are: idea and requirements, design, implementation, testing, deployment and configuration, operation and support, and eventual retirement. Testing is not a single late phase — it runs across the whole cycle: requirements are reviewed statically, code is checked dynamically, and support keeps verifying fixes in production.
Common mistakes
- ✗Treating testing as one phase after development only
- ✗Confusing the software life cycle with the defect lifecycle
- ✗Omitting operation, support, and retirement stages
Follow-up questions
- →How does the cost of fixing a defect change across these stages?
- →Which stage does static testing primarily support?
JuniorTheoryCommonName the levels of testing: unit, integration, system, acceptance.
Name the levels of testing: unit, integration, system, acceptance.
Unit tests verify a single component in isolation. Integration tests check interactions between components. System testing validates the whole integrated product against requirements. Acceptance testing confirms it meets business needs and is ready to ship.
Common mistakes
- ✗Confusing integration (component interactions) with system (whole product)
- ✗Thinking acceptance testing is just another internal QA pass
- ✗Believing unit tests exercise multiple components together
Follow-up questions
- →Who typically performs acceptance testing?
- →Why isolate a unit with mocks or stubs?
JuniorTheoryCommonFunctional vs non-functional testing — and what are smoke, regression, and sanity?
Functional vs non-functional testing — and what are smoke, regression, and sanity?
Functional testing checks what the system does against requirements; non-functional checks how well it does it (performance, security, usability). Smoke is a shallow build-acceptance check; sanity is a narrow check of one fix; regression re-verifies existing features after changes.
Common mistakes
- ✗Swapping the definitions of functional (what) and non-functional (how well)
- ✗Confusing smoke (broad shallow) with sanity (narrow focused)
- ✗Thinking regression means testing only the changed code
Follow-up questions
- →When would you run a smoke test versus a full regression?
- →Name two non-functional quality attributes.
JuniorTheoryCommonWhat is the difference between verification and validation?
What is the difference between verification and validation?
Verification checks that the product is built according to its specification — "are we building the product right?". Validation checks that the product meets the user's real needs and intended use — "are we building the right product?". Verification compares against requirements/design; validation compares against actual expectations.
Common mistakes
- ✗Swapping the two mnemonics (right product vs product right)
- ✗Thinking both compare only against the written specification
- ✗Assuming validation happens only at the very end of the project
Follow-up questions
- →Give an example of software that passes verification but fails validation.
- →Which of the two relies more on static review techniques?
MiddleTheoryCommonDescribe the defect lifecycle: states from new to closed/reopened.
Describe the defect lifecycle: states from new to closed/reopened.
A defect flows New → Assigned → Open (in progress) → Fixed → Retest, then Closed if verified. If the fix fails retest it becomes Reopened and re-enters the fix loop. Invalid or duplicate reports are Rejected or marked Duplicate instead of fixed.
Common mistakes
- ✗Skipping the Retest step before Closed
- ✗Forgetting the Rejected and Duplicate terminal paths
- ✗Confusing who fixes (developer) and who verifies (tester)
Follow-up questions
- →At which level is a fixed defect usually retested?
- →What status fits a report that can't be reproduced?
MiddleTheoryCommonHow do test suspension criteria differ from test exit (completion) criteria?
How do test suspension criteria differ from test exit (completion) criteria?
Suspension criteria pause testing temporarily when continuing is pointless — a blocking defect, too many bugs, missing access/builds, or changed requirements; testing resumes once the blocker is gone. Exit (completion) criteria end testing for this cycle: planned tests run, coverage and risk are acceptable, and no open blocker/critical defects remain (or time/budget ran out).
Common mistakes
- ✗Treating suspension (temporary) and exit (final) as the same thing
- ✗Saying exit always demands zero defects of every severity
- ✗Ignoring coverage and risk when defining completion criteria
Follow-up questions
- →Name two events that would suspend testing mid-cycle.
- →Can you exit testing with open low-severity defects? Why?
MiddleTheoryCommonHow does STLC differ from SDLC, and how do their phases map?
How does STLC differ from SDLC, and how do their phases map?
SDLC is the overall software lifecycle: requirements, design, development, testing, deployment, maintenance. STLC is the testing-specific lifecycle nested inside it: requirement analysis, test planning, test design, environment setup, execution, and closure. STLC runs in parallel, not after SDLC.
Common mistakes
- ✗Believing STLC starts only after SDLC development is fully done
- ✗Swapping which acronym is the broader lifecycle
- ✗Listing only execution and forgetting planning/design/closure phases
Follow-up questions
- →Which STLC phase produces the test plan?
- →How does early STLC involvement relate to QA's preventive goal?
MiddleTheoryCommonName the seven ISTQB testing principles and explain two of them.
Name the seven ISTQB testing principles and explain two of them.
The seven: testing shows the presence of defects (not their absence); exhaustive testing is impossible; early testing saves time and money; defects cluster; the pesticide paradox (repeating the same tests stops finding new defects); testing is context-dependent; and the absence-of-errors fallacy (a bug-free system is still useless if it doesn't meet user needs).
Common mistakes
- ✗Stating testing proves the absence of defects (it shows presence only)
- ✗Confusing defect clustering with uniform distribution
- ✗Forgetting the pesticide paradox requires renewing test cases
Follow-up questions
- →Why is exhaustive testing impossible even for a small form?
- →How do you counter the pesticide paradox in practice?
JuniorTheoryOccasionalWhat is the difference between QA, QC, and testing?
What is the difference between QA, QC, and testing?
QA is a process-oriented activity that prevents defects by improving the whole development process. QC is product-oriented and detects defects in the built product. Testing is one QC technique — executing the product to find defects.
Common mistakes
- ✗Treating QA and QC as synonyms instead of process- vs product-oriented
- ✗Calling testing a superset of QA rather than a subset technique of QC
- ✗Believing QA only happens after the product is built
Follow-up questions
- →Give one concrete QA activity that is not testing.
- →Why is preventing a defect usually cheaper than detecting it?
MiddleTheoryOccasionalWhat do you check before closing a bug as "cannot reproduce"?
What do you check before closing a bug as "cannot reproduce"?
Do not close it after one failed retry. Re-run the exact steps on the reporter's build, environment, and account, because a defect reaches Closed only through real verification. Re-read the report for missing preconditions, data, or timing, match the reporter's device and network, and scan the logs and crash reports. Close it only once it genuinely will not reproduce.
Common mistakes
- ✗Closing after a single failed retry instead of real verification
- ✗Blaming the reporter without matching their environment and data
- ✗Ignoring logs and crash reports from the moment of failure
Follow-up questions
- →Which report fields most often explain a failed reproduction?
- →When is it fair to ask the reporter for a screencast?
MiddleTheoryOccasionalWhat attributes make a requirement good and testable?
What attributes make a requirement good and testable?
A good requirement is complete (nothing missing), unambiguous (one interpretation), consistent (no conflict with others), necessary, feasible, and — crucially — testable/verifiable: you can write a check that confirms or refutes it. A requirement you cannot verify is a defective requirement, because no test can ever prove it was met.
Common mistakes
- ✗Omitting testability/verifiability from the quality attributes
- ✗Confusing a detailed requirement with an unambiguous one
- ✗Thinking a requirement must specify the implementation
Follow-up questions
- →Why is an untestable requirement considered defective?
- →How would you rewrite "the page must load fast" to be testable?
SeniorTheoryOccasionalWhat is shift-left testing, why use it, and what are its trade-offs?
What is shift-left testing, why use it, and what are its trade-offs?
Shift-left moves testing earlier in the lifecycle — reviewing requirements, writing unit tests with code, testing each build — so defects are caught when they are cheap to fix. Trade-offs: higher upfront effort, the need for testable design, and pressure on still-unstable early specs.
Common mistakes
- ✗Defining shift-left as testing later instead of earlier
- ✗Ignoring that early testing needs testable design and stable-enough specs
- ✗Claiming it removes all later testing rather than complementing it
Follow-up questions
- →How do unit tests embody shift-left at the development phase?
- →When can shifting left too far waste effort on volatile requirements?
SeniorTheoryOccasionalWhat is shift-right testing, and how does post-release monitoring support quality?
What is shift-right testing, and how does post-release monitoring support quality?
Shift-right extends testing into production — monitoring, logging, alerting, real-user metrics, and canary or A/B releases — so defects that only surface under real load are caught fast. It complements shift-left, not replaces it: early testing prevents defects, shift-right catches escaped ones and feeds them into the defect lifecycle. The trade-off: it acts on issues real users may already hit.
Common mistakes
- ✗Calling shift-right a replacement for early shift-left testing
- ✗Reducing it to late pre-release testing with no production observation
- ✗Ignoring that it acts on defects real users may already hit
Follow-up questions
- →Which production signals would you monitor to catch an escaped defect?
- →How does a staged-rollout canary release limit a regression's blast radius?
JuniorTheoryRareWhat is software testing, and what is its purpose?
What is software testing, and what is its purpose?
Testing is the process of checking that a product's real behavior matches its expected behavior. Its purpose is to find defects, reduce risk, and give stakeholders confidence about quality — not to prove the software is bug-free. It spans the whole lifecycle, both static (reviewing docs) and dynamic (running the system).
Common mistakes
- ✗Claiming testing proves the absence of defects rather than reducing risk
- ✗Treating testing as only a post-development dynamic phase
- ✗Forgetting that informing stakeholders is part of the purpose
Follow-up questions
- →Why can't testing prove that software is completely defect-free?
- →What is the difference between static and dynamic testing?