Skip to content
Bugwise
Menu

Interview Prep

Common QA interview questions with model answers, what interviewers look for, and flashcards.

122 questions66 junior34 mid-level22 senior
01

What is software testing and why does it matter?

FundamentalsJunior

In shortSoftware testing is checking that an app does what it should and finding problems before users do. It matters because bugs found late cost more money, time and trust.

Software testing is the process of checking that an app or website works as expected and meets the needs of its users, and finding defects before real people run into them.

It includes running the software (clicking, tapping, typing, breaking things on purpose) and also reviewing requirements and designs early, before any code is written.

Why it matters:

  • Cost. A bug found while reviewing a requirement costs minutes to fix. The same bug found after release can mean hotfixes, app store reviews and support tickets.
  • Trust and money. If a banking app shows the wrong balance or a shop’s checkout fails, users leave and may not come back.
  • Safety and legal risk. Some bugs leak personal data or break accessibility laws.

For example, if a food delivery app charges the card but does not create the order, users lose money and the company loses customers and reputation.

One important point: testing cannot prove there are no bugs. It reduces risk and gives the team information to decide whether the product is ready to release.

Learn more: What Is Software Testing?

Open as a page to share

What they're looking for

A clear, simple definition plus the business reason for testing (risk, cost, user trust), ideally with a real example.

Common mistakes

  • Saying testing proves the software has no bugs.
  • Only talking about finding bugs and forgetting about checking requirements and user needs.
  • Giving a textbook definition with no example.
02

What is the difference between QA, QC and testing?

FundamentalsJunior

In shortQA improves the process so fewer bugs are made, QC checks the product for bugs, and testing is the main activity inside QC.

The three terms are related but focus on different things:

FocusGoalExample
Quality assurance (QA)The processPrevent defectsAgreeing that every user story needs acceptance criteria before development
Quality control (QC)The productDetect defectsChecking a finished build before release
TestingThe productFind defects and give informationRunning checkout test cases on build 4.2

A simple way to remember it: QA asks “Are we working in a way that produces quality?” and QC asks “Does this product have quality?” Testing is the main hands-on activity of QC.

For example, in a shopping app team, QA might mean introducing requirement reviews and a definition of done. QC and testing mean actually installing the new build and trying to add items, apply coupons and pay.

In real life, job titles mix these up. A “QA Engineer” usually spends most of the day testing, but a good one also helps improve the process, which is real QA.

Learn more: What Is Software Testing?

Open as a page to share

What they're looking for

That QA is process-focused and preventive, QC is product-focused and detective, and testing is a part of QC.

Common mistakes

  • Treating all three as synonyms.
  • Not being able to give an example of a QA activity that is not testing.
03

What is the difference between an error, a defect and a failure?

FundamentalsJunior

In shortAn error is a human mistake, a defect is the resulting flaw in the code, and a failure is what users see when that faulty code runs.

These three words describe a chain of cause and effect:

  1. Error (mistake): a person does something wrong. A developer misreads “users must be 18 or older” and writes age > 18.
  2. Defect (bug, fault): the result of that mistake in the product. The line age > 18 is now in the code.
  3. Failure: the defect is executed and the system behaves wrongly. An 18-year-old tries to sign up and sees “You are too young”.

So: error → defect → failure.

Two useful details:

  • Not every defect causes a failure. If the faulty code is in a screen nobody ever opens, the defect exists but no failure is observed yet.
  • Failures can also come from the environment, for example a server outage or a full phone storage, not only from defects.

As testers we usually observe failures, and then we report them so developers can find and fix the underlying defect.

Learn more: What Is Software Testing?

Open as a page to share

What they're looking for

The chain error → defect → failure, explained with one consistent example, and awareness that not every defect causes a failure.

Common mistakes

  • Mixing up the order of the chain.
  • Saying every defect always causes a failure.
04

What is the difference between verification and validation?

FundamentalsMid-level

In shortVerification checks we built the product right (matches the spec); validation checks we built the right product (meets users' real needs).

Verification: “Are we building the product right?” It checks whether the product matches its specification and requirements. Reviews, walkthroughs and most test cases are verification.

Validation: “Are we building the right product?” It checks whether the product actually solves the user’s problem in real use. User acceptance testing, usability testing and beta programs are validation.

Example: a banking app login

  • The spec says: “User logs in with a 6-digit PIN.” You test that 6 digits are accepted, 5 and 7 are rejected, and the error messages are correct. Everything passes, so the feature is verified.
  • In a beta, many users forget the PIN and ask for Face ID or fingerprint login. Support tickets grow. The feature is not validated, because the requirement itself did not fit users’ needs.
VerificationValidation
Compares againstSpecificationUser needs
Typical activitiesReviews, test casesUAT, usability tests, beta
Can be static?Yes (document reviews)Mostly dynamic

Both are needed: verification without validation gives a perfectly built wrong product.

Learn more: Verification vs Validation

Open as a page to share

What they're looking for

The classic "built it right vs built the right thing" distinction, with an example where a product passes one but fails the other.

Common mistakes

  • Reciting the two phrases but swapping them.
  • Not explaining that something can meet the spec and still be useless to users.
05

What is the difference between smoke, sanity and regression testing?

FundamentalsJunior

In shortSmoke testing quickly checks a new build's critical features, sanity testing quickly checks one specific fix or change, and regression testing checks that changes didn't break existing features.

All three are about checking a new build, but they differ in scope and purpose.

SmokeSanityRegression
QuestionIs this build stable enough to test?Does this fix/change work?Did anything that worked before break?
ScopeWide and shallowNarrow and a bit deeperWide and deep
WhenEvery new buildAfter a small fix or changeBefore release, after significant changes
DurationMinutesMinutesHours to days (often automated)

Example with a shopping app:

  • Smoke: a new build arrives. You check the app opens, login works, search shows products, cart and checkout open. If login crashes, the build is rejected.
  • Sanity: the developer fixed the coupon field. You apply a few coupons and check the total updates correctly, before spending time on deeper testing.
  • Regression: before releasing, you run the full checkout, account and search suites to make sure the new coupon logic did not break card payments, shipping costs or order history.

Note that teams use “smoke” and “sanity” a bit differently, so it is fine to say you follow your team’s definitions.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

The scope and purpose of each (wide-shallow, narrow-focused, wide-deep) and when each is used, with a concrete example.

Common mistakes

  • Saying smoke and sanity are exactly the same thing.
  • Thinking regression testing only means retesting the fixed bug.
06

What is the difference between retesting and regression testing?

FundamentalsJunior

In shortRetesting confirms that a specific bug is fixed by repeating its exact steps; regression testing checks that the fix (or any change) didn't break other features.

Retesting (also called confirmation testing) means running the same test that failed again on a new build, to confirm the bug is fixed.

Regression testing means re-testing other existing features to make sure the change did not break anything that used to work.

Example: in a photo app, you reported “App crashes when uploading a HEIC photo.”

  • Retesting: on the new build, you upload the same HEIC photo, on the same device and OS, following the same steps. It works, so you move the bug to Verified/Closed.
  • Regression: you also upload JPG and PNG photos, try uploading from the camera, check that profile pictures still display and that the gallery still loads. The fix touched the upload code, so anything near it could be affected.
RetestingRegression
TargetOne known bugFeatures that already worked
Test casesSame steps as the failed testExisting regression suite
Planned in advance?No, triggered by a fixYes, run regularly
Good for automation?RarelyVery often

You usually do both: retest first, then run regression around the change.

Learn more: Types of Testing

Open as a page to share

What they're looking for

That retesting targets a known defect with the same steps, while regression looks for new, unexpected side effects in areas that used to work.

Common mistakes

  • Using the two terms interchangeably.
  • Saying regression testing is only done on the fixed feature.
07

What is a test plan and what does it contain?

ProcessMid-level

In shortA test plan describes what will be tested, how, by whom, when, with which environments, and what counts as done.

A test plan is a document that describes the scope, approach, resources and schedule of testing for a specific project or release. Its real purpose is alignment: everyone knows what will be tested, what will not, and when testing is “done”.

Typical contents:

  • Scope: features in scope and, just as important, out of scope.
  • Approach: types of testing (functional, regression, accessibility…), manual vs automated.
  • Environments and devices: for example iOS 17-18 on iPhone SE and 15, Android 13-15 on Samsung and Pixel, Chrome/Safari/Firefox for web.
  • Test data and accounts needed.
  • Roles and responsibilities.
  • Schedule and milestones.
  • Risks and mitigations: “payment sandbox may be unstable, so we will book extra time”.
  • Entry criteria: when testing can start (build deployed, smoke test passed).
  • Exit criteria: when testing stops (all high-priority tests run, no open critical bugs).
  • Deliverables: test cases, bug reports, summary report.

In agile teams, a test plan is often a one-page wiki per release or epic rather than a large formal document. A test plan is different from a test strategy, which describes the company-wide approach, and from test cases, which describe individual checks.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

The main sections of a test plan (scope, approach, environments, schedule, risks, entry/exit criteria) and the understanding that it is a communication tool, often lightweight in agile teams.

Common mistakes

  • Confusing a test plan with a list of test cases.
  • Forgetting to list what is out of scope, or leaving out exit criteria.
  • Describing only a heavy 40-page document and ignoring agile reality.
08

What are the phases of the software testing life cycle (STLC)?

ProcessMid-level

In shortRequirement analysis, test planning, test case design, test environment setup, test execution and test closure.

The STLC describes the testing activities from start to finish. A common version has six phases:

PhaseWhat happensOutput
1. Requirement analysisReview requirements and user stories, ask questions, find unclear or untestable partsList of questions, testable requirements
2. Test planningDecide scope, approach, devices, effort, risksTest plan
3. Test case designWrite test scenarios, test cases and test dataTest cases, test data, traceability matrix
4. Environment setupPrepare servers, builds, devices, accountsReady test environment, smoke test passed
5. Test executionRun tests, report bugs, retest fixesTest results, bug reports
6. Test closureEvaluate exit criteria, summarize, share lessons learnedTest summary report

Example: for a new “Pay with Apple Pay” feature, you first ask what happens if the card is declined (phase 1), decide to test on three iPhones (phase 2), write test cases for success, cancel and decline (phase 3), set up sandbox cards on the devices (phase 4), run the tests and file bugs (phase 5), then write a summary for the release decision (phase 6).

In agile, these phases still happen, just in small loops inside every sprint instead of once per project.

Learn more: SDLC and STLC

Open as a page to share

What they're looking for

The six phases in order, what happens in each, and that testing starts with requirements, not with a finished build.

Common mistakes

  • Listing phases without saying what each one produces.
  • Saying testing starts only when the code is ready.
09

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

ProcessMid-level

In shortA test strategy is the high-level, long-lived approach to testing for the whole product or company; a test plan applies it to one specific project or release, with scope, schedule, people and environments.

Test strategy: the “how we test here” rules

  • Long-lived, for the whole product or organization.
  • Covers: test levels and types we use, manual vs automation approach, tools, environments, how we handle defects, risk approach, quality metrics, supported devices and browsers policy.
  • Example line: “Every story gets exploratory testing; critical flows are covered by automated regression on each build; we support the latest two iOS versions and Android 10+.”

Test plan: the “what we do for this release” document

  • Short-lived, for one project, release or epic.
  • Covers: scope and out of scope, schedule, who tests what, specific devices, test data, risks, entry and exit criteria.
  • Example line: “Release 5.2: new checkout. Test on iPhone 12 and 16, Pixel 8, Galaxy A15. Exit when no open critical bugs and all high-priority cases pass.”
StrategyPlan
ScopeProduct / companyOne release or project
LifetimeMonths or yearsWeeks
LevelGeneral approachConcrete details

The plan follows the strategy. In agile teams both are often lightweight: a strategy page on the wiki and a one-page plan per release.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

The difference in scope and lifetime, typical contents of each, and how they relate in practice (the plan follows the strategy).

Common mistakes

  • Saying they are the same document.
  • Putting dates and names in the strategy, or general philosophy in the plan.
  • Not knowing that many agile teams keep both very short.
10

What does "shift-left" testing mean?

ProcessJunior

In shortShift-left means moving testing earlier in development, by reviewing requirements and designs, discussing acceptance criteria before coding and testing small pieces early, because bugs found early are much cheaper to fix.

If you draw the development process as a timeline from left (idea) to right (release), traditional testing happens on the right. Shift-left means moving testing activities to the left, earlier.

Why: a missing requirement found in a planning meeting costs a five-minute conversation. The same problem found after release costs a hotfix, unhappy users and maybe lost money.

What it looks like for a tester

  • Review user stories and acceptance criteria in refinement and ask questions: “What happens if the coupon expires during checkout?”
  • Review designs for missing states: empty, error, loading, long text, dark mode.
  • Three amigos sessions (product, developer, tester) before work starts.
  • Write test scenarios before the feature is ready, and share them with developers so they can check them while coding.
  • Test early builds, API endpoints and feature branches instead of waiting for the full feature.
  • Encourage unit and API tests by developers.

Shift-left doesn’t replace later testing. We still do regression and exploratory testing before release, and many teams also “shift right” by monitoring production.

Example: in refinement I asked what happens to a scheduled post if the user deletes their account. Nobody had thought about it, and it was solved before a line of code was written.

Learn more: SDLC and STLC

Open as a page to share

What they're looking for

The idea that quality work starts before code exists, concrete activities a tester can do early, and the cost-of-defects reasoning.

Common mistakes

  • Thinking it only means "write automated tests earlier".
  • Thinking it removes the need for testing at the end.
  • Not giving examples of early activities.
11

What are entry and exit criteria in testing?

ProcessJunior

In shortEntry criteria are the conditions that must be true before testing starts (for example, a stable build is deployed); exit criteria define when testing is done enough to stop or release (for example, no open critical bugs).

Entry criteria: can we start testing?

Examples:

  • The build is deployed to the test environment and the smoke test passes.
  • The user story has acceptance criteria and designs.
  • Test data and accounts are ready.
  • Release notes list what changed.

Without them, testers waste time on broken builds or guess what to test.

Exit criteria: can we stop testing and release?

Examples:

  • All planned high-priority test cases were run, with 95%+ passing.
  • No open critical or high-severity bugs; remaining bugs are reviewed and accepted by the product owner.
  • Regression suite run on the agreed devices and browsers.
  • Test summary shared.

Why they matter: they turn “is it ready?” from a feeling into a checklist everyone agreed on earlier. They also protect the team from pressure: if a critical bug is open, the criteria say we’re not done.

Exit criteria never mean “zero bugs”; that’s impossible. They mean the remaining risk is known and accepted.

In agile teams, entry criteria often look like a Definition of Ready, and exit criteria like the Definition of Done for a story or a release checklist.

Learn more: SDLC and STLC

Open as a page to share

What they're looking for

Clear definitions, realistic examples of each, and an understanding that they make "ready to test" and "done" objective rather than a feeling.

Common mistakes

  • Mixing up entry and exit criteria.
  • Saying testing is done when "all bugs are fixed".
  • Giving vague criteria that can't be checked.
12

Blocked vs Failed: what's the difference?

ProcessJunior

In shortA test is Failed when you ran it and the product did the wrong thing, so you link a bug. It's Blocked when you couldn't run it to the end because something outside the test stopped you, like a down environment, missing test data or an earlier bug, so you write the reason and re-run it later.

The question I ask myself is: did I get to check what this case checks?

Failed: yes, I ran the steps, and the actual result is different from the expected result because of a defect in the product. For example, in a food delivery app the expired coupon SPRING5 is still accepted and the discount applies. I mark it Failed, write the actual result, attach a screenshot and link a bug.

Blocked: no, something outside this case stopped me before I could find out. Typical causes:

  • the test environment or a third-party sandbox is down (the payment provider returns 503 errors);
  • test data or an account I need doesn’t exist;
  • another bug is in the way: sign-in is broken, so I can’t reach checkout at all.

I mark it Blocked, write the reason and link the blocking issue if there is one, then re-run it when it’s cleared. If it fails then, it becomes Failed.

FailedBlocked
Was the case executed?YesNot to the end
What’s wrong?The productSomething the case depends on
What I recordActual result, evidence, bug keyReason, blocking issue, when to re-run

Why it matters: a wrong Failed sends a developer hunting for a bug that isn’t in their code. A wrong Blocked hides a real defect. And in the summary report, blocked cases count as not verified, not as tested.

One nuance: when a bug blocks other cases, the case that hit the bug is Failed, and the cases behind it are Blocked by that bug. When the bug is fixed, they’re all run again.

Learn more: Test Runs and Test Management Tools

Open as a page to share

What they're looking for

A clear distinction based on whether the case was actually executed and the product misbehaved, realistic examples of each, and knowing what to record for each status (a bug link vs a reason).

Common mistakes

  • Marking everything that doesn't work as Failed, including environment outages.
  • Marking a real product defect as Blocked, which hides it from the bug count.
  • Setting Blocked without saying what blocks it.
13

What is a traceability matrix and why use it?

ProcessJunior

In shortA requirements traceability matrix (RTM) links each requirement or user story to the test cases that check it, and usually to their latest results and bugs. It shows which requirements are untested, which are failing, and what is affected when a requirement changes.

A requirements traceability matrix (RTM) is a table of links: each requirement or user story on one side, the test cases that check it on the other. In practice most teams add the latest run result and the bugs found, because that’s what people ask about.

RequirementTest casesLatest resultBugs
FD-104 Coupon rulesC202FailedFD-242
FD-105 Tip the couriernone––
FD-106 Pay with a saved cardC301Blocked–

Why use it

  • Coverage gaps (forward traceability). Going from requirement to tests, FD-105 (tip the courier) has no tests at all and FD-106 was blocked, so neither is verified. Without the matrix those gaps hide behind a nice pass rate.
  • Why does this exist? (backward traceability). Going from a bug or test back to its requirement shows which story a bug hurts, and finds orphan tests linked to nothing, often for removed features.
  • Impact analysis. When the coupon rule changes, the matrix lists the cases and bugs linked to FD-104, so I know what to update and re-run. I still think about indirect effects; for example, reorder copies old carts together with their coupons, so a new coupon rule affects it too.
  • Reporting and audits. The summary report can say exactly which requirements were tested, failed or not tested. Regulated projects (finance, health) often require this.

How I keep one: I link each test case to its story while writing it, record statuses in the run, and link every failure to a bug. Then the tool (Xray, TestRail, Zephyr) or a spreadsheet can generate the matrix.

One caution: a link says a requirement has a test, not that it’s tested well. One happy-path case per story gives “100% coverage” and still misses most bugs. I use the matrix to find gaps and risk to decide depth.

Learn more: Traceability and Test Summary Reports

Open as a page to share

What they're looking for

A correct definition, forward and backward traceability, concrete uses (coverage gaps, impact analysis, reporting), and awareness that "covered" doesn't mean "tested well".

Common mistakes

  • Describing it as a list of test cases only, without the link to requirements.
  • Claiming 100% requirement coverage means the product is well tested.
  • Saying it's built by hand at the end instead of from links kept during the work.
14

What goes into a test summary report?

ProcessJunior

In shortScope (release, build, environments, dates), what was tested and what wasn't and why, results (executed, passed, failed, blocked), open bugs by severity with their user impact, risks, and a clear recommendation. The tester recommends; the product owner decides.

A test summary report (also called a test closure or completion report) closes a test cycle. Its job is to help the team decide whether to release, so I keep it to one page with six parts:

  1. Scope. Release and build number, environments and devices, dates, and which stories or features were in scope.
  2. What was tested. Features and requirements covered, plus anything special like a retest of earlier fixes.
  3. What wasn’t tested, and why. Blocked areas, cases not run, requirements without tests, devices we didn’t have. This is the part readers can’t guess, so it’s never optional.
  4. Results. Executed, passed, failed, blocked, not run. Always with meaning: “3 failures, all in checkout”, not just “92% passed”.
  5. Open bugs by severity, with the user impact of the worst ones: “FD-241 (Major): ‘Remember me’ is ignored, so every user is signed out each time they restart the app.”
  6. Risks and recommendation. What could still go wrong, then a clear call: go, no-go, or go if specific conditions are met.

A short example of the last part:

Recommendation: not ready for Friday as is. Go on Monday if FD-241 and FD-242 are fixed and retested and card payment passes once the payment sandbox is back. FD-243 can ship as a known issue if Product accepts it.

The product owner (or whoever owns the release) makes the decision; my job is to make sure they decide with the facts.

During the cycle I also send short daily or weekly updates in the same shape (progress, new important bugs, blockers, what I need), so the final report holds no surprises.

Learn more: Traceability and Test Summary Reports

Open as a page to share

What they're looking for

The main sections, an emphasis on the not-tested list and on risks, numbers paired with meaning, and an understanding that the report supports a decision rather than making it.

Common mistakes

  • Listing only counts like "120 executed, 92% passed".
  • Leaving out what wasn't tested.
  • Writing "testing is complete, approved for release" as if the tester decides.
  • Pasting the whole bug list instead of summarizing by severity and impact.
15

How do you organize and track test execution for a release?

ProcessMid-level

In shortI pick cases from the repository by priority and risk, create one run per build and environment, assign testers, and record a status, actual result and evidence for each case, linking every failure to a bug. I track progress daily, retest fixes in a new run on the new build, and close with a summary report.

I think of it in five steps.

1. Scope the run. From the test plan and the release notes, I decide what to run: all P1 cases, plus P2 cases for the areas that changed, plus retests of bugs fixed in this release. Impact analysis and the traceability matrix help me see which requirements and cases are affected.

2. Create the runs. In the test management tool (TestRail, Xray, Zephyr, or a disciplined spreadsheet for a small team), I create one run per build and environment, for example “2.0.0 regression · build 412 · iPhone 15” and the same for a Pixel. I filter by platform so iOS-only cases don’t end up in the Android run, and I assign testers by section or device so every case has one owner.

3. Execute with discipline. Each case gets a status as soon as it’s run:

  • Passed when the actual result matches;
  • Failed with the actual result, evidence and a linked bug;
  • Blocked with the reason (sandbox down, missing data, another bug);
  • Skipped / N/A with a reason.

If I find that a case is out of date, I note it on the result and update the repository after the run, rather than silently editing it mid-run.

4. Track and unblock daily. I watch executed vs remaining (a burndown) and the failed and blocked P1 cases. A flat burndown usually means a blocker, so I raise it at stand-up the same day. I send a short daily update: progress, important new bugs, blockers, what I need.

5. Retest, re-run, report. When fixes arrive in a new build, I create a new run with the failed, blocked and untested cases plus a regression subset around the fixes. The old run stays as the record of the old build. At the end I write a one-page test summary report with what was and wasn’t tested, open bugs by severity, risks and a recommendation.

Learn more: Test Runs and Test Management Tools

Open as a page to share

What they're looking for

A structured workflow from repository to run to report, sensible scoping, correct use of statuses, discipline about builds and evidence, active handling of blockers, and familiarity with tools like TestRail, Xray or Zephyr without depending on one.

Common mistakes

  • Answering only with a tool name.
  • Running everything every time, with no prioritization.
  • Mixing results from different builds in one run.
  • Waiting until the end to report progress or blockers.
16

Who makes the go/no-go decision for a release, and what do you bring to that meeting?

ProcessSenior

In shortThe decision usually belongs to the product owner or release manager, not to QA. I bring a clear, honest picture of quality, covering what was tested, open bugs with their impact, untested areas and remaining risk, plus my recommendation.

In most teams the decision belongs to the product owner, release manager or engineering lead, because it’s a business decision that weighs quality against deadlines, marketing and customer commitments. My role is to make sure it’s an informed decision.

What I bring, on one page

  1. Scope tested: which features, platforms and devices, and at what depth.
  2. Open bugs that matter: each with severity, who is affected, workaround, and whether a fix is in progress. Not the full list, the ones that influence the decision.
  3. What was not tested or only partly tested, and why.
  4. Exit criteria status: for example “no open critical bugs, all P1 regression passed on tier 1 devices” and which criteria are met or not.
  5. Risks outside testing: an unstable third-party API, a store review deadline, a backend migration in the same week.
  6. My recommendation: go, no-go, or go with conditions such as a feature flag, a staged rollout or a hotfix plan.

How I say it

I keep it short and in business language: “I recommend go with a staged rollout. The one open major bug affects saved addresses on Android 10, about 2% of our users, and there’s a workaround. I’d recommend no-go if the payment timeout issue reappears in the final build.”

If I disagree with the decision

I state my concern clearly, once, with evidence. If a critical risk such as data loss or a security hole is accepted, I make sure the decision and its owner are documented, and I escalate if it’s serious enough. Then I support the team and help reduce the impact.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

Understanding that testers inform the decision rather than own it, a concise and factual quality summary, a clear personal recommendation, and the courage to escalate when a critical risk is being ignored.

Common mistakes

  • Saying QA alone decides whether a release goes out.
  • Arriving with raw numbers (test counts, pass rate) and no interpretation.
  • Having no opinion and leaving the decision entirely to others.
  • Not documenting the decision and the accepted risks.
17

The product manager wants to ship with a bug you think is serious. How do you handle it?

ProcessSenior

In shortMake sure the PM truly understands the impact in user and business terms, propose options that reduce the risk, and if they still decide to ship, get the risk acceptance documented with a mitigation and monitoring plan. Escalate only for truly critical risks.

First I check that we actually disagree about the risk, not about the words. Often “Major” means something different to me and to the PM.

1. Translate the bug into impact

Not “the sync has a race condition”, but “if a user edits a note on two devices within a few seconds, one edit is lost without warning. Our heaviest users do this every day, and lost data creates support tickets and churn.”

I add what I know about how many users, how often, and whether there’s a workaround, and I’m honest about what I don’t know.

2. Offer options, not just “no”

  • Ship with the feature behind a feature flag, off for everyone or on for a small group.
  • Staged rollout with a clear rule to halt it.
  • Ship but disable the specific path (for example, turn off multi-device editing for now).
  • Delay by one or two days for a targeted fix and a focused retest.

3. If the PM still decides to ship, make the risk acceptance explicit

  • Record it on the ticket: the risk, who accepted it, and the reason.
  • Add it to the known issues for the support team and, if needed, the release notes.
  • Agree on monitoring (crash rate, error logs, support tickets for that flow) and a trigger: “If we see more than a handful of reports in 48 hours, we roll back or hotfix.”
  • Schedule the fix.

4. Escalate only when it’s justified

For security holes, data loss, legal or payment issues, I escalate to engineering or product leadership, calmly and with evidence, and I tell the PM I’m doing it. For anything less, I accept that the business can take risks I wouldn’t have taken.

Learn more: Severity vs Priority

Open as a page to share

What they're looking for

Respect for who owns the decision, strong translation of a technical bug into business impact, creative alternatives between "ship" and "block", formal risk acceptance, and judgment about when escalation is justified.

Common mistakes

  • Turning it into a power struggle or "QA veto".
  • Giving up silently after the first "we'll ship anyway".
  • Arguing about severity labels instead of user impact.
  • Forgetting to plan monitoring and follow-up after the release.
18

It's Friday at 5 pm and a hotfix must ship tonight. How do you test it?

ProcessSenior

In shortUnderstand exactly what changed and why, retest the fix on the real build, run a focused regression around the changed code plus a smoke test of critical flows, and agree on a rollback and monitoring plan, including who stays reachable over the weekend.

A Friday hotfix is a risk in itself, so the first question I ask is: does it really have to ship tonight? If the bug is blocking payments or leaking data, yes. If it’s a cosmetic issue, Monday morning is often safer. If it must go, here’s my plan.

1. Understand the change (10 minutes)

  • What was the bug, and what exactly did the developer change? I look at the pull request with them.
  • Which other features use that code? This is my impact analysis.

2. Test the right build

I test the exact build or deployment that will go out, not a local or older one. For mobile, that means the release candidate from the same pipeline.

3. Retest the fix

The original steps, plus variations: other devices, other user types, the edge case that caused the bug.

4. Focused regression plus smoke

  • Areas that share the changed code.
  • A smoke test of the critical paths: launch, login, browse, checkout or the app’s main job.

5. Plan for things going wrong

  • Web: how do we roll back the deployment, and how fast?
  • Mobile: an app store release can’t simply be pulled back from devices, so a feature flag or server-side switch matters even more. On iOS we can request an expedited review if the fix is urgent, but approval time isn’t guaranteed. A phased or staged rollout limits the blast radius.
  • Monitoring and people: who watches crash reports and error logs tonight, and who is on call this weekend?

6. Communicate

A short message to the team and support: what was fixed, what was tested, what wasn’t, and what to watch. On Monday, I make sure the fix gets a proper regression test and we discuss in the retro why it escaped.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

Calm prioritization under time pressure, impact analysis of the change, focused retesting and regression, attention to how the fix is delivered (web deploy vs app store), and a rollback and monitoring plan.

Common mistakes

  • Running the full regression suite or, the opposite, only checking the fix.
  • Not reading the actual code change or asking the developer what else it touches.
  • Testing on a different build from the one being released.
  • Shipping with nobody watching production over the weekend.
19

How do staged rollouts and feature flags change your work as a tester?

ProcessSenior

In shortThey let a team release to a small group first and switch features on or off without a new build. As a tester I have to test both flag states and the switch between them, plan what to watch during the rollout, and agree on clear criteria to pause, roll back or expand.

Both tools reduce the blast radius of a release, but they don’t reduce the need for testing. They change what I test and add a phase after release.

How they work

  • Staged rollout: a release reaches a percentage of users first. Google Play supports staged rollouts by percentage that you can increase or halt. The App Store offers a phased release for automatic updates over seven days, which can be paused, although users can still update manually. On the web, teams use canary releases or traffic percentages.
  • Feature flag: code ships to everyone, but a feature is turned on remotely for chosen users, markets or percentages, without a new build.

What changes in my testing

  • Both states: every flagged feature is tested with the flag on and off, and the “off” path must still be the old, working behavior.
  • Switching: what happens if the flag changes while the user is in the middle of the flow, or between sessions? Is cached data from the new feature handled when it’s turned off?
  • Combinations: several flags at once can interact. I agree with the team which combinations are realistic, and push for removing old flags.
  • Targeting: is the feature really shown only to the right users, countries or app versions?
  • Test environments: I need a way to set flags for my test accounts.

During the rollout

  • Agree beforehand on what we watch: crash-free users, error rates, conversion, support tickets.
  • Agree on pause and rollback criteria, so nobody debates it under pressure.
  • For mobile, remember: halting a rollout stops new installs of that version, but users who already have it keep it. A server-side flag is often the real emergency brake.

Example: we rolled out a new checkout to 5% of Android users behind a flag. Payment errors were slightly higher on one bank’s 3-D Secure page, so we turned the flag off within minutes, fixed it, and resumed the next day.

Learn more: TestFlight and Firebase App Distribution

Open as a page to share

What they're looking for

Accurate understanding of how rollouts work on the App Store, Google Play and the web, the extra combinations flags create, testing in production as a complement (not a replacement), and defining pause and rollback criteria.

Common mistakes

  • Thinking a feature flag means the feature doesn't need testing.
  • Testing only the "flag on" state.
  • Believing a staged rollout can be rolled back from users' phones.
  • Not cleaning up old flags, which multiplies combinations over time.
20

A serious bug reached production. What do you do afterwards, and how do you run a useful root cause analysis?

ProcessSenior

In shortFirst help contain and fix it, then run a blameless review that asks why it happened and why it wasn't caught, using techniques like the "5 whys". The output should be a few concrete, owned improvements, such as a new regression test, a better environment or a process change, not finger-pointing.

During the incident: users first

I help reproduce it, narrow down who is affected (platform, version, region), verify the fix, and do a focused regression before it ships. Analysis waits until the fire is out.

After the incident: a blameless review

“Blameless” doesn’t mean nobody is responsible. It means we assume people acted reasonably with the information they had, and we look for the conditions that made the mistake easy. People only share honestly if they don’t fear punishment.

Two questions, not one

  1. Why did the defect happen? Unclear requirement, missing validation, a risky change merged late?
  2. Why didn’t we catch it? Wrong test data, an environment that differs from production, a device we don’t cover, a scenario nobody thought of, or testing that was cut due to time?

Going deeper with “5 whys”

The order total was wrong for some users. Why? The discount was applied twice. Why? The app retried the request after a timeout. Why wasn’t it caught? Our test environment never times out. Why? We have no way to simulate slow responses. Why? Nobody owned network testing tools.

The 5 whys is a heuristic, not a rule; sometimes there are several causes and it’s fine to stop at three or go to seven.

Output: a few owned actions

  • A regression test for this bug and for its category (for example, all retryable payment requests).
  • A tool or environment improvement, like a proxy to simulate timeouts.
  • A process change if needed, such as a review checklist for retry logic.
  • Each action has an owner and a date, and we check them in the next retro.

As a tester, I own my part openly: “I didn’t test slow networks on checkout. From now on it’s in our checklist.”

Learn more: Bug Life Cycle

Open as a page to share

What they're looking for

Clear priorities (users first, analysis later), a blameless mindset, looking at both "why did it happen" and "why did we miss it", honest ownership of testing gaps, and concrete follow-up actions that actually get done.

Common mistakes

  • Blaming a person, or getting defensive about "QA missed it".
  • Stopping at "human error" as the root cause.
  • Producing a long list of actions that nobody owns.
  • Only adding a test for that exact bug and not the class of bugs.
21

Right after a release, your app gets a wave of 1-star reviews. What do you do in the first hour?

ProcessSenior

In shortConfirm and size the problem using reviews, crash reports and analytics, try to reproduce it on the affected version and devices, raise an incident with clear facts, and help the team decide quickly whether to halt the rollout, flip a flag, or hotfix. The root cause analysis comes later.

My goal in the first hour is to turn “people are angry” into facts the team can act on.

Minutes 0-15: confirm and size it

  • Read the reviews: what do they have in common? Crash on launch, can’t log in, payment fails, a feature removed?
  • Check the version: are the reviews from the new version? Store consoles show the app version for many reviews.
  • Check the data: crash reporting (for example Crashlytics or Sentry), Android vitals in Google Play Console, App Store Connect crash data, backend error dashboards, and support tickets.
  • Find the pattern: one platform, OS version, device, country, language, or user type such as users who upgraded vs fresh installs.

Minutes 15-35: reproduce

  • Install the exact production version on a matching device. If it’s an upgrade issue, install the previous version first, create data, then update.
  • Capture evidence: video, logs, the failing request. Even a partial reproduction (“only after upgrade, only with a saved card”) helps a lot.

Minutes 15-45, in parallel: raise the alarm

I don’t wait until I’ve reproduced it. I post in the incident or release channel with what we know: “Since release 4.2, 1-star reviews mention login failures. Crashlytics shows a new crash on Android 12 at login, about 8% of sessions on that version. Reproducing now.” Then I keep updating that one thread.

Minutes 30-60: help choose the fastest safe fix

  • Halt the staged rollout or pause the phased release, so fewer users get the bad version.
  • Turn off a feature flag or fix it on the server, if the problem allows that.
  • Hotfix if needed, and I start preparing the test plan for it.
  • Make sure support and whoever answers store reviews have a short, accurate message.

Afterwards: reply to reviews once the fix is out, verify that the crash rate drops, and run a blameless review of why we missed it.

Learn more: adb Basics

Open as a page to share

What they're looking for

A calm, structured first response, fast use of real data (crash tools, store consoles, logs), narrowing down the affected users, clear communication, and knowing the levers available (halting a rollout, feature flags, server fixes, hotfix).

Common mistakes

  • Panicking or trying to fix it alone without telling anyone.
  • Spending the first hour writing a perfect bug report.
  • Assuming the reviews are about the new release without checking versions.
  • Forgetting to keep support and the people replying to reviews informed.
22

How do you estimate testing effort?

ProcessMid-level

In shortI break the work into tasks (understanding, test design, setup and data, execution per device, bug reporting, retest and regression, reporting, a buffer for blockers), give each a best, likely and worst number, and give the total as a range with my assumptions. I cross-check against similar past features and re-estimate when things change.

I combine a work breakdown with three-point estimates, then sanity-check the result.

1. List the tasks. For a feature, that’s more than running tests:

  • understanding the story and asking questions;
  • test design: scenarios, cases, charters, the regression set;
  • environment and test data setup;
  • execution on each device or browser we test on;
  • bug reports and follow-up;
  • retesting fixes and regression around them, usually in more than one round;
  • status updates and the summary;
  • a visible buffer for late builds and blockers.

2. Three numbers per task. Optimistic, most likely and pessimistic. The PERT formula (O + 4M + P) / 6 gives an expected value; the sums of O and P give a range.

3. Cross-check. How long did something similar take last time? Some teams also compare with the dev estimate using their own historical ratio, but only as a check: a small change to payments can need far more testing than a big text change.

4. Say it with assumptions. “About five days, three to eight, assuming the build is on staging Monday and we test on four phones.” Rounded, with a range, never “28.17 hours”.

5. Re-estimate as soon as scope or an assumption changes, and compare estimate with actual afterwards so the next one is better.

In scrum teams the whole team often estimates stories in story points with planning poker. There, my job is to make the testing part visible: devices, data, payment sandboxes, risky integrations.

Learn more: Estimating Testing Effort

Open as a page to share

What they're looking for

A structured approach rather than a gut number, awareness of the tasks people forget (retest, regression, devices, test data, waiting), giving a range with assumptions, and the habit of re-estimating and learning from actuals.

Common mistakes

  • Estimating only the time to run the test cases.
  • Giving one precise number with no range or assumptions.
  • Quoting a "standard" test-to-dev ratio as if it were a rule.
  • Treating the estimate as fixed after it's given.
23

Your testing estimate doesn't fit the deadline. What do you do?

ProcessMid-level

In shortI don't quietly squeeze it. I show the gap and what the estimate is made of, prioritize by risk, offer options (reduce scope, test lower-risk areas lightly, move the date, add help, release behind a flag), write down what won't be tested, and let the product owner decide.

This is a negotiation, not a failure. The estimate’s job is to turn “there isn’t enough time” into a clear choice.

1. Show the gap and the breakdown. “My estimate is five days; Thursday gives three. Here’s what the five days are made of.” A task list makes it concrete instead of sounding like a complaint.

2. Prioritize by risk. Score areas by likelihood and impact. Money, personal data and the main flow come first and get tested deepest.

3. Offer options, each with its risk:

OptionTrade-off
Test high-risk areas deeply, the rest lightlyLower-risk bugs may slip through
Reduce scope (e.g. ship “later today”, not “tomorrow”)Less value in this release
Move the dateBusiness cost of waiting
Add a tester or developer helpOnboarding time
Release behind a feature flag to a small groupNeeds flag and monitoring in place

4. Write down what won’t be tested by the deadline, in the plan or ticket: “Not tested: large text, Samsung A-series, custom tips above €50.”

5. The product owner decides. I make the risk visible; they decide whether to accept it. Then I re-estimate if anything changes during testing, and say so early.

The difference from the classic “no time to test everything” question is timing: here I raise it when the estimate is made, so the team can still change scope or date instead of discovering the gap on release day.

Learn more: Estimating Testing Effort

Open as a page to share

What they're looking for

Calm, transparent negotiation before testing starts, risk-based prioritization, concrete options rather than a refusal, and an understanding that the release decision and the risk acceptance belong to the product owner.

Common mistakes

  • Agreeing to the shorter time and silently testing less.
  • Promising the date and planning to work nights.
  • Refusing to start until the date moves.
  • Not writing down what was left untested.
24

What is CI/CD, and where does a manual tester fit in?

ProcessJunior

In shortCI automatically builds and checks every code change; CD keeps every passing build ready to release (delivery) or releases it automatically (deployment). Manual testers test PR and staging builds, track which build contains which fix, read red pipelines at a basic level, flag flaky tests and focus on what automation can't judge.

Continuous integration (CI) means developers merge small changes often, and every change is automatically built and checked by a CI server such as GitHub Actions, GitLab CI or Jenkins.

CD has two meanings:

  • Continuous delivery: every change that passes is ready to release; a person decides when.
  • Continuous deployment: every passing change goes to production automatically.

A typical pipeline: build → unit tests → lint → deploy to a test environment → automated API/UI tests → manual testing → release.

Where I fit as a manual tester:

  • Testing early: if the team makes builds for pull requests, I test the change before it’s merged.
  • Knowing the build: I check which build contains a fix (ticket, release notes, the app’s About screen) before retesting, and always report the exact build.
  • Reading a red pipeline: which stage failed, which test, and is it related to the change? I don’t fix it, but I can tell whether there’s anything to test yet.
  • Flaky tests: I make them visible and push for a ticket instead of re-running until green.
  • What automation can’t judge: new features, exploratory testing, real devices, usability and accessibility, and checking features behind feature flags in both states.

Example: “The PR is red on a map UI test that also fails on main without changes. Looks flaky. I tested the PR build on two phones and the fix works; I’ll retest on staging once it’s merged.”

Learn more: Git and CI for Testers

Open as a page to share

What they're looking for

Correct definitions (including delivery vs deployment), knowledge of typical pipeline stages, and a concrete picture of the tester's role around builds rather than "automation replaces manual testing".

Common mistakes

  • Mixing up continuous delivery and continuous deployment.
  • Thinking CI/CD means there is no need for manual testing.
  • Saying pipelines are only the developers' concern.
25

What is the difference between severity and priority?

BugsJunior

In shortSeverity is how badly a bug hurts the product; priority is how soon it should be fixed. They are independent of each other.

  • Severity = the impact of the bug on the system or user. Usually proposed by the tester and confirmed in triage. Levels like blocker/critical, major, minor, trivial.
  • Priority = the urgency of fixing it. Usually set by the product owner or lead, based on business needs. Levels like P1 (highest) to P4 (low).

They are independent, which gives four combinations:

High priorityLow priority
High severityBanking app crashes when tapping “Transfer” for all users. Fix now.App crashes when exporting a statement as CSV on a legacy Android version used by 0.1% of users. Serious, but can wait.
Low severityCompany name is misspelled on the home screen or app store screenshot. Nothing breaks, but everyone sees it.A slightly misaligned icon on a rarely used settings screen.

A good answer also mentions that priority can change: a low-priority bug can become high priority before a big marketing launch, or if a key customer complains.

Learn more: Severity vs Priority

Open as a page to share

What they're looking for

That the two are independent, who usually sets each one, and an example for each of the four combinations.

Common mistakes

  • Saying they are the same thing.
  • Giving definitions without an example.
  • Claiming high severity always means high priority.
26

Can you explain the bug life cycle?

BugsJunior

In shortA bug moves through statuses like New, Open, Assigned, In Progress, Fixed / Ready for test and Verified / Closed, with side paths such as Reopened, Not a bug, Cannot reproduce, Duplicate and Deferred.

The bug life cycle (defect life cycle) is the journey of a bug from discovery to closure. Exact names depend on the team and tool (for example Jira), but a typical flow is:

  1. New: the tester reports the bug.
  2. Triaged / Open: a lead or product owner confirms it is real and not a duplicate, and sets the priority.
  3. Assigned: a developer becomes the owner.
  4. In Progress: the developer reproduces it and works on a fix.
  5. Fixed / Ready for test: the fix is in a new build the tester can install.
  6. Verified / Closed: the tester retests on that build, the fix works, and the bug is closed.

Alternative paths:

  • Reopened: the retest fails, so the bug goes back to the developer.
  • Not a bug / Rejected: the app works as designed.
  • Cannot reproduce: nobody can make it happen again; the tester adds missing details or it is closed.
  • Duplicate: the same bug was already reported.
  • Deferred / Won’t fix: valid, but postponed to a later release or accepted as is.

Example: you report that a shopping app’s cart badge shows the wrong count (New). It is assigned and fixed in build 2.3.1. You retest on 2.3.1, but the badge is still wrong after removing an item, so you reopen it with the new details. In 2.3.2 it works, and you close it.

Learn more: Bug Life Cycle

Open as a page to share

What they're looking for

The main happy path of statuses, the alternative statuses and what triggers each transition, plus the tester's role in retesting and closing.

Common mistakes

  • Listing statuses without saying who moves the bug between them.
  • Forgetting the Reopened path when a fix does not work.
27

What makes a good bug report?

BugsJunior

In shortA good bug report lets a developer reproduce the bug without asking questions. It has a clear title, environment, exact steps, expected vs actual result, severity and evidence.

The goal of a bug report is simple: a developer can reproduce and understand the bug without asking you anything.

Key parts:

  • Title: short and specific. “Checkout: app crashes when tapping Pay with an expired card” instead of “Payment broken”.
  • Environment: device, OS version, browser, app build, environment (QA/staging), account used.
  • Preconditions: for example “logged in, one item in cart”.
  • Steps to reproduce: numbered, exact, starting from a known point.
  • Expected result and actual result.
  • Severity and priority.
  • Evidence: screenshot, screen recording, console or crash logs.
  • Frequency: always, or “3 out of 10 tries”.

Good habits:

  • One bug per report.
  • Reproduce it before reporting, and find the shortest steps.
  • Check for duplicates first.
  • Stay neutral and factual. Describe behavior, not people: “the button does nothing”, not “someone forgot to code the button”.
  • Add useful extras: does it happen on iOS too? In another browser? Was it working in the previous build?

A small example: “Steps: 1. Open cart. 2. Change quantity to 0. 3. Tap Update. Expected: item is removed. Actual: item stays with quantity 0 and total 0.00.”

Learn more: How to Write a Bug Report

Open as a page to share

What they're looking for

The key fields of a bug report and the qualities behind them (clear, specific, reproducible, one bug per report, neutral tone), ideally with an example title.

Common mistakes

  • Vague titles like "Checkout broken".
  • Forgetting environment details such as device, OS, browser and build number.
  • Putting several bugs in one report.
29

What do you do with a bug you saw once but can't reproduce?

BugsMid-level

In shortWrite down everything I remember right away, save any evidence such as logs and recordings, then try to reproduce it by varying one condition at a time. If it still won't reproduce, I report it honestly as intermittent with the frequency and evidence, rather than dropping it.

Bugs that happen “sometimes” are often the most serious ones in production, so I don’t ignore them.

1. Capture what I have, immediately

  • Notes: exact time, build, device, account, what I did just before, network.
  • Logs before they’re overwritten: browser console and network tab, adb logcat on Android, device logs on iOS.
  • A screenshot or, ideally, a screen recording. I often keep recording running during exploratory sessions for exactly this reason.
  • Check the crash reporting tool or server logs for that time.

2. Think about what could make it intermittent

  • Timing: double taps, slow responses, a race between two requests.
  • State: first launch vs later, logged in for a long time, app returning from background.
  • Data: a specific account, item, long text, special characters, an expired token.
  • Environment: network switch, low memory, another device or OS version, a time zone or date.

3. Vary one condition at a time

Repeat the steps with a slow network, then with a different account, then after backgrounding the app. Changing one thing at a time tells me what matters.

4. Report it honestly

If I still can’t reproduce it reliably, I report it as intermittent: “Seen 1 time in about 20 attempts”, with all evidence and what I already tried. I ask the developer to look at the logs; sometimes the stack trace alone is enough to find the cause.

Example: a cart sometimes showed an empty list. After trying different things, it happened only when I tapped the Cart tab within a second of adding an item. It was a race between two API calls, which the developer fixed once I gave him that detail.

Learn more: How to Write a Bug Report

Open as a page to share

What they're looking for

A systematic approach to intermittent bugs, knowledge of typical causes (timing, data, state, network, device), evidence gathering, and honest reporting instead of hiding or exaggerating the bug.

Common mistakes

  • Ignoring it because it only happened once.
  • Reporting it as "always" reproducible to get attention.
  • Changing many conditions at once, so you never learn what matters.
  • Not saving logs right away, before they're overwritten.
30

A bug you verified as fixed has come back in a later build. What do you do?

BugsMid-level

In shortConfirm it's really the same bug on the current build, reopen the original or report a new regression linked to it depending on the team's rules, add evidence and the build where it reappeared, and make sure a regression test exists so it can't silently return again.

A fixed bug coming back is a regression: something that worked has broken again. It’s a useful signal, so I handle it carefully.

1. Confirm it’s really the same bug

I follow the original steps on the current build. Same symptom, same conditions? Sometimes it’s a similar bug with a different cause, for example the original fix covered iOS but this happens on Android.

2. Find when it came back

I check which builds have it. “Fixed in 3.4.0, still fine in 3.4.2, broken again in 3.5.0” helps the developer find the change that reintroduced it, often a merge, a refactor or a library update.

3. Reopen or create a new bug, following the team’s rules

  • Many teams reopen the original if it’s the same bug and the original hasn’t been released yet.
  • If the fix was already released, teams often create a new bug marked as a regression and linked to the original, so release history stays correct.

Either way, I add the new build number, evidence, and a link to the original fix.

4. Raise the priority if needed. A regression of something users already have working is often more urgent than a new bug.

5. Prevent it next time

  • Make sure the scenario is in the regression suite, or ask for an automated test.
  • In the retro, ask how it came back: missing unit test, a merge conflict, two branches fixing the same code?

Learn more: Bug Life Cycle

Open as a page to share

What they're looking for

Understanding of reopening vs a new linked bug, the idea of a regression, checking the build history to narrow down when it came back, and prevention through a regression test.

Common mistakes

  • Assuming it's the same bug without checking the steps and cause.
  • Creating a brand-new bug with no link to the original.
  • Blaming the developer instead of asking how it was reintroduced.
  • Not adding the bug's scenario to the regression suite.
31

What do you include when you report a crash or a freeze?

BugsMid-level

In shortThe exact build, device and OS, the steps and how often it happens, what the user sees (crash, freeze, ANR dialog or white screen), the time it happened, and the evidence, such as the relevant part of the log or stack trace, a link to the crash in the crash reporting tool, and a screen recording.

First, describe exactly what happened. “Crash” means different things to different people:

  • Crash: the app closes and you’re back on the home screen.
  • Freeze: the app stops responding. On Android, if the main thread is blocked for about 5 seconds, the system shows an “App isn’t responding” (ANR) dialog. On iOS, the system can terminate an app that hangs for too long.
  • Blank or white screen: the app or page is open but shows nothing. On the web this is often a JavaScript error.

What goes into the report

  • Title: where and when. “Order history: app crashes when opening an order with 50+ items.”
  • Environment: app build and version, device model, OS version, environment (staging or production), account.
  • Steps and frequency: “3 out of 3 tries” or “1 in 10”.
  • Exact time it happened, with time zone, so the developer can find it in logs.
  • Evidence:
    • Mobile: the stack trace from adb logcat (look for FATAL EXCEPTION) or the crash report from the iPhone or Xcode, plus a link to the crash in Crashlytics or Sentry if the app uses one.
    • Web: the console error with its stack trace, and the failing request from the Network tab.
    • A screen recording showing the steps and the crash.
  • Only the relevant log lines in the description, with the full log attached.

Useful extras: Does it happen on the previous build? On the other platform? After a fresh install? With another account? Each answer helps the developer narrow it down.

Crashes usually get high severity, since the user loses their work and can’t continue.

Learn more: adb Basics

Open as a page to share

What they're looking for

Knowing the difference between a crash, a freeze/ANR and a blank screen, which evidence developers need, where to find it on mobile and web, and how to keep the report focused.

Common mistakes

  • Writing only "the app crashed".
  • Pasting a huge log with no hint where the error is.
  • Forgetting the build number and the exact time, which are needed to find the crash in logs.
  • Not checking whether the crash is already known in the crash reporting tool.
32

How do you decide whether something is a bug, a feature request or just a question?

BugsJunior

In shortIt's a bug when the product doesn't behave as specified or as users can reasonably expect. It's a feature request when it works as intended but something new or different is wanted. When the expected behavior is unclear, it's a question for the product owner before it becomes either.

I compare what I see against a reference: the requirements, acceptance criteria, designs, platform conventions, and what a user would reasonably expect.

Bug: the product doesn’t do what it should.

The spec says a coupon gives 10% off, but the total doesn’t change. Or: the app crashes, loses data, or shows the wrong price. Even without a spec, a crash is never “expected”.

Feature request (or improvement): it works as intended, but it could be better or different.

The search works correctly, but users would like to filter by price. Nobody asked for it, so it’s a new requirement, not a defect.

Question: I can’t tell what the expected behavior is.

Should a discount apply before or after delivery fees? The spec doesn’t say, and both are plausible. I ask the product owner first, in the ticket or the team chat.

Grey areas are common. A confusing label that matches the design isn’t a defect against the spec, but it may cause real user mistakes. I report it as a usability issue or improvement, explain the impact, and let the product owner decide.

Keeping these separate matters: the bug list stays focused on real defects, good ideas go to the backlog, and questions get answered instead of argued about.

Learn more: User Stories and Acceptance Criteria

Open as a page to share

What they're looking for

Using requirements and reasonable user expectations as the reference, honesty about uncertainty, and routing each type to the right place so the bug list stays useful.

Common mistakes

  • Reporting every personal preference as a bug.
  • Never reporting usability problems because "it's not in the spec".
  • Arguing about the label instead of asking the product owner.
33

How do you report a usability issue so it gets fixed?

BugsJunior

In shortLike a bug, but with evidence and impact instead of opinion: what you observed, who and how many it affects, the heuristic or guideline it breaks, and a severity. A suggested fix is optional.

Usability findings get dismissed when they sound like taste. I make them factual:

  • Title that states the problem and the effect: “Account screen has no way back; users get stuck”.
  • What I observed: the screen, device, steps, and what happened. A screenshot or short recording.
  • Who and how many: “3 of 5 colleagues in a hallway test”, “new users”, “on small phones”. A think-aloud quote helps.
  • User impact: time lost, mistakes, abandoned tasks, data or money at risk.
  • Reference: the heuristic or platform guideline it breaks, for example Nielsen’s “Error prevention” for a delete without confirmation.
  • Severity: Nielsen’s 0–4 usability scale (cosmetic, minor, major, catastrophe) based on frequency, impact and persistence, mapped to the team’s bug severity.
  • Suggestion (optional): the designer owns the solution, so I describe the problem first.

If it matches the spec but still confuses people, I say so: “works as specified, but users can’t find it”. That’s a validation finding and still worth fixing.

Learn more: Usability Testing Basics

Open as a page to share

What they're looking for

Turning a subjective feeling into an actionable report with observations, user impact, a shared reference (heuristic or guideline) and an honest severity.

Common mistakes

  • Writing "it's confusing" or "I don't like it".
  • Prescribing a redesign instead of describing the problem.
  • Inflating or downplaying severity because "it's only UX".
34

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

Test designJunior

In shortA test scenario is a high-level idea of what to test; a test case is a detailed set of steps, data and expected result for checking one part of that scenario.

A test scenario is a one-line description of a situation worth testing. It answers what to test.

A test case is a detailed description of how to test one specific behavior: preconditions, steps, test data and expected result.

One scenario usually becomes several test cases.

Example: scenario “User logs in to the banking app”

Test caseSteps (short)Expected result
TC-01 Valid loginEnter valid email and password, tap Log inHome screen with balance appears
TC-02 Wrong passwordValid email, wrong passwordError “Incorrect email or password”, stays on login
TC-03 Empty fieldsTap Log in with empty fieldsFields are highlighted with required messages
TC-04 Locked accountEnter wrong password 3 timesAccount locked message and reset option
Test scenarioTest case
DetailLowHigh
AnswersWhat to testHow to test it
ContainsOne sentencePreconditions, steps, data, expected result
Good forQuick coverage overview, agile teamsRepeatable, handover-friendly testing

Scenarios are quick to write and help you check coverage; test cases are better when tests must be repeated exactly or run by someone else.

Learn more: Test Scenarios vs Test Cases vs Checklists

Open as a page to share

What they're looking for

That scenarios describe "what" at a high level and test cases describe "how" in detail, and that one scenario usually produces several test cases.

Common mistakes

  • Saying they are the same.
  • Describing a test case without expected results.
35

What is the difference between positive and negative testing?

Test designJunior

In shortPositive testing uses valid input to confirm the feature works; negative testing uses invalid or unexpected input to check it fails gracefully.

  • Positive testing checks the system does what it should when the user does things correctly (the happy path).
  • Negative testing checks the system behaves sensibly when the user does things wrong or unexpectedly. It should show a clear message and never crash, freeze or save bad data.

Example: a sign-up form with email, password (min 8 characters) and phone number

Positive tests:

  • Valid email, 10-character password, valid phone number: account is created.
  • Email with a plus sign, like anna+shop@test.com: accepted.

Negative tests:

  • Email without @ (“anna.test.com”): error “Enter a valid email”.
  • 7-character password: error about minimum length.
  • Letters in the phone number field.
  • Email that is already registered.
  • Submitting with no internet connection.
  • Pasting 5,000 characters into the name field.

A negative test passes when the app handles the bad input correctly. “Negative” describes the input, not the result.

Most teams start with positive tests to confirm the basics, then spend a lot of effort on negative tests, because that is where users (and bugs) tend to surprise you.

Learn more: Types of Testing

Open as a page to share

What they're looking for

Clear definitions, examples of both on the same feature, and the idea that the system should handle bad input with helpful errors and no crashes.

Common mistakes

  • Thinking negative testing means the test "failed".
  • Only giving positive examples.
36

Explain equivalence partitioning and boundary value analysis using an age field that accepts 18 to 60.

Test designJunior

In shortEquivalence partitioning splits inputs into groups that behave the same and tests one value per group; boundary value analysis tests the edges of those groups, such as 17, 18, 60 and 61.

Both are black-box techniques that help you test smart, not everything.

Equivalence partitioning (EP) divides inputs into groups (partitions) where the software should behave the same way. You test one value from each partition.

For an age field that accepts 18 to 60:

PartitionExample valueExpected
Below 18 (invalid)10Error
18 to 60 (valid)35Accepted
Above 60 (invalid)75Error
Not a whole number (invalid)“abc”, empty, 25.5Error

Boundary value analysis (BVA) focuses on the edges of partitions, because developers often make off-by-one mistakes, such as writing age > 18 instead of age >= 18.

Boundary values to test: 17, 18, 60, 61 (two-value BVA). Many testers also add 19 and 59 (three-value BVA).

ValueExpected
17Rejected
18Accepted
60Accepted
61Rejected

Together, the techniques give strong coverage with about 8-10 tests instead of hundreds. On a mobile app, also check that the numeric keyboard appears and that pasted values like ” 18 ” with spaces are handled.

Learn more: Boundary Value Analysis

Open as a page to share

What they're looking for

Correct partitions (below 18, 18-60, above 60, plus invalid types), correct boundary values, and why the techniques reduce the number of tests while catching off-by-one bugs.

Common mistakes

  • Choosing wrong boundary values, like 19 and 59 only.
  • Forgetting invalid partitions such as empty input, letters or decimals.
  • Testing every number from 1 to 100 instead of using the techniques.
37

What is exploratory testing, and when would you use it?

Test designJunior

In shortExploratory testing means learning about the product, designing tests and running them at the same time, guided by a goal (charter) and a time box.

In exploratory testing, you do not follow a script. You learn, design and execute tests at the same time, using what you discover to decide what to try next.

It is not random. Good exploratory testing has structure:

  • A charter (goal): “Explore the photo editor’s undo and redo to find data loss issues.”
  • A time box: often 60-90 minutes, shorter for small charters.
  • Notes: what you tried, questions, bugs and ideas for follow-up.
  • A short debrief with the team afterwards.

Example: exploring a food delivery app’s checkout for 45 minutes, you might change the address after choosing a time slot, put the app in the background during payment, switch to airplane mode, apply two coupons, rotate the phone and use very large text. Scripted tests often miss these combinations.

When to use it:

  • New features with incomplete documentation.
  • When you need fast feedback early in a sprint.
  • To complement scripted regression tests and find “unknown unknowns”.
  • When time is short and you want to focus on risky areas.

It differs from ad hoc testing, which has no charter or notes and is hard to repeat or report on.

Learn more: Exploratory Testing

Open as a page to share

What they're looking for

That exploratory testing is structured (charter, time box, notes), not random, and that it complements scripted testing, especially for new features and finding unexpected bugs.

Common mistakes

  • Describing it as random clicking with no plan.
  • Saying it replaces test cases completely.
38

What is a decision table, and when would you use one?

Test designJunior

In shortA decision table lists every combination of conditions and the expected outcome for each, so you don't miss a rule. Use it when a feature has several conditions that together decide the result.

A decision table is a test design technique for business rules where several conditions combine to decide the result. Each column is a rule: one combination of conditions and its expected action.

Example: free shipping rule: “Members get free shipping. Non-members get it on orders over 50 EUR.”

R1R2R3R4
Is member?YesYesNoNo
Order over 50 EUR?YesNoYesNo
Free shippingYesYesYesNo

With two yes/no conditions there are 2 x 2 = 4 rules, so 4 test cases. Three conditions give 8, and so on. Building the table often reveals gaps in requirements: “What about a member with a discount code that brings the total under 50?” is a question to ask the product owner before anything is built.

When I use it: discounts and pricing, loan or insurance eligibility, permissions by role, form logic that shows or hides fields.

If the table gets too big, I merge rules where a condition doesn’t matter (R1 and R2 above: members always get free shipping) or combine it with pairwise testing.

Learn more: Decision Tables

Open as a page to share

What they're looking for

A clear explanation with a small example, and knowing when the technique is useful (business rules with combinations).

Common mistakes

  • Describing it without an example.
  • Not knowing how many combinations there are (2 to the power of the number of yes/no conditions).
  • Forgetting that impossible or duplicate combinations can be removed.
39

What is state transition testing? Give an example.

Test designJunior

In shortIt models a feature as states and the events that move between them, then tests both valid transitions and invalid ones that should be blocked. Great for orders, accounts, logins and media players.

Some features behave differently depending on what state they are in. State transition testing models these states, the events that move between them, and checks each transition.

Example: an online order

  • States: Placed, Paid, Shipped, Delivered, Canceled.
  • Valid transitions: Placed to Paid (payment succeeds), Paid to Shipped, Shipped to Delivered, Placed or Paid to Canceled (user cancels).

What I test

  1. Each valid transition at least once, and that the UI, emails and buttons match the new state.
  2. Invalid transitions: can a Delivered order be canceled? Can a Canceled order be shipped? Can the user tap Cancel after it shipped? These should be blocked.
  3. Sequences: full paths like Placed, Paid, Canceled, and refund issued.
  4. Repeated events: pressing Pay twice, or a cancellation and a shipment happening at the same time.

Another classic: login with lockout. States: Active, 1 failed attempt, 2 failed, Locked. Test that a correct password resets the counter and that a Locked account can’t log in even with the right password.

Drawing a simple state diagram first makes missing transitions easy to spot and is a good discussion tool with developers.

Learn more: State Transition Testing

Open as a page to share

What they're looking for

Understanding of states, events and transitions, a realistic example, and remembering to test invalid transitions too.

Common mistakes

  • Only testing the happy path through the states.
  • Not testing transitions that should be impossible.
  • Choosing an example without clear states.
40

How would you test a form with many combinations of options?

Test designMid-level

In shortYou can't test every combination, so use pairwise testing to cover every pair of values in far fewer tests, then add risk-based combinations and boundary values on top.

The problem: a flight search form with 4 trip types, 3 cabin classes, 5 passenger counts, 2 currencies and 3 languages has 4 x 3 x 5 x 2 x 3 = 360 combinations. Testing all of them is not realistic.

Pairwise (all-pairs) testing: most bugs are caused by a single value or by the interaction of two values. Pairwise testing creates a small set of tests where every pair of values appears at least once. For the form above, that is about 20 tests instead of 360.

How I do it

  1. List the fields and the values for each, using equivalence partitions (not every number from 1 to 9, but 1, a typical value and the maximum).
  2. Generate the combinations with a tool like PICT or an online pairwise generator.
  3. Add constraints for impossible combinations (an infant can’t travel alone).
  4. Add risk-based extras: combinations that matter to the business or have failed before, like “one-way, business class, 9 passengers, EUR”.
  5. Test each field on its own for validation and boundaries too.

Pairwise is a smart way to reduce tests, not a guarantee. A bug that needs three specific values together can still slip through, so I combine it with the risky combinations I know about.

Learn more: Equivalence Partitioning

Open as a page to share

What they're looking for

Recognizing combinatorial explosion, knowing pairwise (all-pairs) testing and why it works, and complementing it with risk-based and boundary tests.

Common mistakes

  • Trying to test every combination.
  • Picking random combinations with no method.
  • Treating pairwise as complete coverage and skipping important specific combinations.
41

What is the difference between black box, white box and grey box testing?

Test designJunior

In shortBlack box tests behavior without looking at the code, white box tests based on the code's internal structure, and grey box uses some internal knowledge (like the API or database) to design better black box tests.

The difference is how much you know about the inside of the system.

Black box testing

  • You test inputs and outputs based on requirements, without seeing the code.
  • Techniques: equivalence partitioning, boundary values, decision tables, state transitions.
  • Example: enter a 101-character name and check the error message.
  • Mostly done by testers and also by users in acceptance testing.

White box testing

  • You design tests from the code structure: branches, conditions, loops.
  • Goal: cover paths in the code (for example, both sides of every if).
  • Example: a unit test for the discount function that covers each branch.
  • Mostly done by developers.

Grey box testing

  • You test from the outside, but use some inside knowledge to aim better.
  • Examples from my daily work:
    • Checking the API response in DevTools to see if a bug is front end or backend.
    • Looking in the database to confirm an order was saved with the right status.
    • Knowing from the architecture that two screens use the same endpoint, so a fix in one needs a retest in the other.
    • Reading logs to understand a crash.

Most experienced manual testers work in grey box style: user-focused, but technically aware.

Learn more: Black, White and Grey Box

Open as a page to share

What they're looking for

Clear definitions, who usually does each, and practical examples of grey box testing in a manual tester's daily work.

Common mistakes

  • Saying manual testers only ever do black box testing.
  • Confusing white box testing with "testing the UI design".
  • Giving definitions without examples.
42

How do you derive test cases from a use case?

Test designJunior

In shortI write one test for the main success scenario, at least one for every alternative and exception flow, and I check the postconditions, not just the final screen. Coverage is the share of flows tested.

A use case describes how an actor reaches a goal: preconditions, the main success scenario (happy path), alternative flows (other routes that still reach the goal), exception flows (errors that stop the normal path) and postconditions (what must be true afterward).

My steps

  1. List every flow. For “Reorder a previous order”: the main flow, “some dishes sold out”, “prices changed”, “restaurant closed”, “card declined” and so on.
  2. One test per flow, at least. For an alternative, I follow the branch and check it rejoins the main flow. For an exception, I check the message, that nothing half-finished is left, and whether the user can recover.
  3. Preconditions become setup. “Customer has a completed order” is test data, not a step.
  4. Postconditions become expected results. After a successful reorder: one new order, charged once, the original order unchanged. A nice confirmation screen isn’t enough.
  5. Use other techniques inside steps. Boundary values for a quantity, state transitions for an order status.
  6. Look for missing flows. “What if every dish is sold out?” If the use case doesn’t say, I raise it as a gap rather than guessing.

Coverage is flows tested divided by all flows. Ten variations of the happy path still cover one flow.

Learn more: Use Case Testing

Open as a page to share

What they're looking for

Knowing the parts of a use case (actor, preconditions, main flow, alternative and exception flows, postconditions), one test per flow, checking postconditions, and raising missing flows as gaps.

Common mistakes

  • Testing only the happy path.
  • Treating preconditions as test steps instead of setup.
  • Inventing expected results for flows the use case doesn't describe.
43

What is error guessing, and how do you use it?

Test designJunior

In shortError guessing is choosing tests from experience of where software usually breaks, like empty or whitespace-only input, zero and negative numbers, leap days, denied permissions and slow networks. I use it after the systematic techniques, ideally from a written checklist.

Error guessing is an experience-based technique: I pick tests based on the mistakes developers typically make, not only on what the spec says.

What I typically try

  • Text: empty, spaces only, very long, apostrophes like O’Neil, emoji, <b> tags.
  • Numbers: 0, negative, too many decimals, other number formats (1.250,50 in Germany).
  • Dates and time: 29 February, another time zone, midnight, daylight saving changes.
  • Actions: the same thing twice, interrupting an action halfway (lock the phone, take a call).
  • Environment: permissions denied, slow or lost network.

How I make it reliable

  1. I cover the spec first with equivalence partitioning, boundaries or decision tables, so coverage is measurable.
  2. Then I timebox an error-guessing session, often as part of exploratory testing.
  3. I keep a checklist fed by real escaped bugs, and pick items by risk for each feature. A planned version of this, where you list likely failures and design a test to provoke each one, is called a fault attack.

The weakness is that it depends on experience and its coverage is hard to measure. That’s why I combine it with systematic techniques instead of relying on it alone.

Learn more: Error Guessing and Checklists

Open as a page to share

What they're looking for

A clear definition as an experience-based technique, concrete examples of typical guesses, and knowing it complements (not replaces) systematic techniques like equivalence partitioning and boundary values.

Common mistakes

  • Saying it means "randomly trying things".
  • Giving no concrete examples.
  • Presenting it as a replacement for systematic test design.
44

What can pairwise testing miss, and how do you compensate?

Test designMid-level

In shortPairwise only guarantees pairs, so bugs that need three or more specific values together can slip through. It also depends on good values and correct constraints, and it doesn't test sequences or define expected results. I add risk-based rows, 3-way coverage for risky areas and other techniques.

Pairwise testing guarantees that every pair of values appears in at least one test. That’s powerful, but it leaves gaps:

GapExampleHow I compensate
Three-way interactionsA bug only with German + PayPal + FirefoxAdd that row explicitly, or generate 3-way coverage (PICT /o:3) for risky features
Missing or impossible combinationsSafari on Windows rows, or a forgotten constraint hiding a real pairModel constraints in the tool instead of deleting rows; only exclude what truly can’t exist
Poor value choicesListing desktop browsers but forgetting mobile SafariChoose values with equivalence partitioning and real usage data
Business rulesFees that depend on specific combinationsUse a decision table for rule-based logic
Order and timingA bug only when payment is retried after a timeoutUse state transition or use case testing
Popular combinations40% of users on Chrome + Android + English + CardAdd the top real-world combinations as extra rows

Pairwise also doesn’t give expected results: every row still needs a clear “what correct looks like”.

So I present it as a smart way to reduce a combinatorial set, never as complete coverage.

Learn more: Pairwise Testing

Open as a page to share

What they're looking for

Understanding pairwise as a reduction technique with clear limits (higher-order interactions, constraints, value choice, rules and order), and practical ways to compensate.

Common mistakes

  • Claiming pairwise coverage means everything is tested.
  • Deleting impossible rows instead of adding constraints, which loses pairs.
  • Forgetting the most-used real combinations.
45

How is testing a mobile app different from testing a website?

MobileMid-level

In shortMobile testing adds device fragmentation, OS versions, gestures, interruptions, permissions, network changes, battery and app store releases; web testing focuses more on browsers, screen sizes and URLs.

Many basics are the same (functional checks, bug reports, test design), but each platform has its own risks.

Things you test more on mobile apps:

  • Device and OS fragmentation: many models, screen sizes, notches, Android manufacturer skins.
  • Interruptions: incoming calls, notifications, alarms, low battery popups.
  • App lifecycle: backgrounding, killing the app, returning after hours. Is state kept?
  • Permissions: camera, location, notifications. What if the user denies them?
  • Gestures and hardware: swipe, pinch, long press, rotation, Android back button, biometrics.
  • Network: switching Wi-Fi to 4G, airplane mode, offline mode.
  • Install, update and uninstall, plus app store requirements.
  • Battery, memory and storage use.

Things you test more on websites:

  • Cross-browser: Chrome, Safari, Firefox, Edge, and versions.
  • Responsive layouts at many widths and zoom levels.
  • URLs and navigation: browser back/forward, refresh, bookmarks, deep links, opening in a new tab.
  • Cookies, cache and sessions across tabs.
  • Keyboard navigation and DevTools evidence (console errors, network calls).

Example: the same “edit profile” form may lose your input on mobile when you leave the app to copy a code from email, while on the web it may break when you press the browser’s back button and return.

Learn more: iOS vs Android Differences

Open as a page to share

What they're looking for

Concrete mobile-specific concerns (interruptions, permissions, gestures, offline, lifecycle, installs and updates) and web-specific ones (browsers, responsive layout, back button, cookies), not just "the screen is smaller".

Common mistakes

  • Saying the only difference is screen size.
  • Forgetting interruptions, backgrounding and app updates.
  • Ignoring that mobile websites are also part of web testing.
46

How do you decide which devices to test on, and when do you use emulators, simulators or real devices?

MobileMid-level

In shortChoose devices based on real user analytics and risk, use emulators and simulators for fast early checks, and use real devices for hardware, performance and final verification.

You cannot test on every device, so you build a device matrix based on data and risk.

Choosing devices:

  • Use analytics to see the top devices, OS versions and screen sizes your users actually have.
  • Cover the extremes: smallest and largest screens, oldest supported OS, newest OS (and betas), a low-end Android with little memory.
  • Include key manufacturers (Samsung, Pixel, Xiaomi…) because of Android fragmentation.
  • Add tablets if the app supports them.

Emulators, simulators and real devices:

Emulator / SimulatorReal device
Cost and speedFree, fast to switch modelsCostly, need maintenance
Good forLayouts, flows, early checks, many screen sizesPerformance, camera, GPS, biometrics, push, battery, real networks
LimitationsNot real performance or sensors, no manufacturer quirksLimited number available

The Android Emulator imitates hardware and OS; the iOS Simulator only imitates the software, so it is even less like a real iPhone.

A practical approach: develop and do early checks on emulators and simulators, run the main tests on a set of real devices in the office, and use a cloud device farm (such as BrowserStack or Firebase Test Lab) for wider coverage. Always confirm release-critical flows, like payments and login, on real devices.

Learn more: Device Fragmentation

Open as a page to share

What they're looking for

A data-driven device matrix, an honest comparison of emulators/simulators vs real devices, and awareness of fragmentation and cloud device farms.

Common mistakes

  • Saying you only test on your own phone.
  • Claiming emulators are just as good as real devices for everything.
  • Trying to test on every possible device instead of prioritizing.
47

What are the main differences between testing on iOS and Android?

MobileJunior

In shortAndroid has far more device and OS fragmentation plus a system Back button, while iOS has fewer devices but stricter platform rules, its own gestures and a different way to install test builds.

The app may share one design, but the two platforms behave differently, so I plan tests for each.

Android

  • Fragmentation: hundreds of manufacturers, screen sizes and OS versions, plus custom skins (Samsung One UI, Xiaomi HyperOS) that change fonts, battery savers and permissions.
  • System Back button / gesture: every screen needs a sensible Back behavior. Does Back close a modal, or exit the app by accident?
  • Install sources: APKs, Play Console testing tracks, Firebase App Distribution. Easy to sideload a build with adb.

iOS

  • Fewer devices, faster OS adoption: most users update within months, so I focus on the latest two OS versions and the smallest and largest iPhones.
  • Swipe from the left edge to go back, and no hardware Back button, so every screen needs a visible way out.
  • Stricter rules: permissions can only be asked once from the app; after “Don’t Allow” the user must go to Settings.
  • Test builds come through TestFlight or a registered device.

Both: design conventions differ (iOS action sheets vs Android bottom sheets, date pickers, toasts are Android-only), so I check that each platform feels native and matches its own design, not the other one’s.

Learn more: iOS vs Android Differences

Open as a page to share

What they're looking for

Concrete differences that change how you test (fragmentation, navigation, permissions, build distribution, design conventions), not a list of phone specs.

Common mistakes

  • Saying "it's the same app, so I only test one platform".
  • Listing hardware facts that don't affect testing.
  • Forgetting the Android Back button and iOS swipe-back gesture.
48

How do you test interruptions in a mobile app?

MobileJunior

In shortTrigger real-life interruptions (calls, notifications, alarms, low battery, network loss, switching apps) during important moments and check that the app pauses, recovers and keeps the user's data.

An interruption is anything that takes the user’s attention or the system’s resources away from the app. Users get interrupted all the time, so the app must cope.

What I use to interrupt:

  • Incoming phone or video call (from a second phone).
  • SMS, push notifications from other apps, alarms and timers.
  • Low battery warning, battery saver turning on.
  • Losing Wi-Fi or switching to mobile data, airplane mode.
  • Pressing Home, opening the app switcher, locking the screen.
  • Plugging in headphones or a charger, Bluetooth connecting.

When I interrupt: at the risky moments, not on a static screen. For example: while a video is playing, during a file upload, on the payment confirmation screen, while filling in a long form, or in the middle of a game level.

What I expect afterwards:

  • No crash and no frozen screen.
  • Form data and scroll position are kept.
  • Media pauses and can resume.
  • Ongoing actions finish or fail clearly; a payment is never charged twice.
  • Timers and sessions behave sensibly after a long interruption.

Example bug: a call arrives while the checkout spinner is showing; after the call, the user taps Pay again and gets two orders.

Learn more: Interruptions (Calls, SMS, Alarms)

Open as a page to share

What they're looking for

A list of realistic interruption types, the idea of interrupting at critical moments, and clear expected results (state kept, no crash, no duplicate actions).

Common mistakes

  • Only mentioning phone calls.
  • Interrupting on an idle screen instead of during a critical action.
  • Not saying what the expected behavior is after returning.
49

What kinds of bugs happen when a mobile app goes to the background and comes back?

MobileMid-level

In shortLost state, stale data, crashes after the OS kills the app, expired sessions and broken audio or timers. You test them by backgrounding the app for short and long periods and under memory pressure.

When the user leaves the app, it moves through lifecycle states: active, background, suspended, and sometimes killed by the OS to free memory. When the user returns, the app must restore itself correctly. Many bugs hide here.

Typical bugs:

  • Lost state: the half-filled form is empty, the user is thrown back to the Home screen.
  • Crash on return after the OS killed the process (the app tries to use data that no longer exists).
  • Stale data: the inbox still shows old messages, prices are outdated.
  • Session problems: the token expired in the background, and the next tap fails silently instead of asking to log in again.
  • Audio, timers, location: music stops, a countdown jumps, location tracking stops or drains battery.

How I test it:

  1. Background for a few seconds, then for 10+ minutes and overnight.
  2. Open several heavy apps (camera, games) to create memory pressure.
  3. On Android, enable Developer options > Don’t keep activities to force the worst case.
  4. Change things while away: rotate, switch language, dark mode, revoke a permission, log out on another device.
  5. Return via the app icon, the app switcher, and a notification.

Learn more: Background and Foreground

Open as a page to share

What they're looking for

Understanding that the OS can suspend or kill a backgrounded app, knowledge of typical bugs, and practical ways to reproduce them (long background, "Don't keep activities", low memory).

Common mistakes

  • Only pressing Home for two seconds and coming back.
  • Not knowing that the OS may kill the app process to free memory.
  • Ignoring what happens to data and sessions after a long time away.
50

How would you test push notifications?

MobileJunior

In shortCheck that notifications arrive with the right content in every app state (foreground, background, killed), open the correct screen when tapped, respect permission and settings, and handle edge cases like logout or many notifications at once.

I start by asking how notifications are triggered (an action in the app, a backend event, a marketing tool) and how I can send one on the test environment.

Delivery and content

  • Arrives on time, with the correct title, text, image and badge count.
  • Long text is truncated nicely; special characters and emoji display correctly.
  • The right user gets it, and only once.

App states

  • App in foreground (in-app banner or silent update?), background, and killed.
  • Device locked: lock screen preview respects privacy settings.

Tapping the notification

  • Opens the right screen (deep link), even from a killed state.
  • Works if the user is logged out: login first, then the target screen.

Permissions and settings

  • iOS asks permission; Android 13+ asks too, older Android grants by default.
  • If permission is denied, the app does not keep nagging, and in-app settings toggles actually stop notifications.

Edge cases

  • No notifications after logout or for a deleted account.
  • Many notifications at once are grouped sensibly.
  • Do Not Disturb, low network, app reinstalled (new push token).

I test on real devices because simulators and emulators do not always match real push behavior.

Learn more: Push Notifications

Open as a page to share

What they're looking for

Coverage of app states, tap behavior/deep links, permission handling, content checks and edge cases, plus knowing that real devices are usually needed.

Common mistakes

  • Only checking that "a notification appears".
  • Forgetting to test with the app killed or after logout.
  • Testing only on a simulator where push may not behave like on a real device.
51

How do you test app permissions like camera, location or contacts?

MobileJunior

In shortTest every answer the user can give (allow, allow once, deny, deny permanently), changing the permission later in Settings, and that the app explains why it needs it and still works without it.

Permissions are a classic source of crashes and dead ends, because the user can say no.

What I check:

  1. Timing and reason: the app asks when the feature is used (tapping “Scan QR”), not on first launch for everything. A short explanation says why.
  2. Every answer:
    • Allow / Allow while using the app.
    • Allow once (iOS and Android 11+): works now, asks again next time.
    • Precise vs approximate location.
    • Deny: the app keeps working and shows a helpful message.
    • Deny permanently (iOS after the first deny, Android after two denies): the app offers a button to open Settings instead of a dead button.
  3. Change it later: grant or revoke in system Settings while the app is in the background, then return. No crash, the feature updates.
  4. Limited access: iOS “Selected photos” only.
  5. Upgrades: permissions survive an app update.

Resetting between tests: reinstall the app, or use Settings > Apps > Permissions. On Android, adb shell pm reset-permissions or pm revoke is fast.

Example bug: after denying camera access, the Scan button shows a black screen forever instead of explaining what to do.

Learn more: App Permissions

Open as a page to share

What they're looking for

Knowledge of the permission states on iOS and Android, testing the "denied" paths, revoking in Settings, and checking the app asks at the right moment with a clear reason.

Common mistakes

  • Only testing the "Allow" path.
  • Forgetting that permissions can be changed later in system Settings while the app is running.
  • Not resetting permissions between test runs, so the system dialog never appears again.
52

What do you check when testing app installation and upgrades?

MobileMid-level

In shortFresh install, upgrade from older versions with real user data, uninstall and reinstall, and edge cases like low storage or interrupted downloads. Upgrades are where data loss bugs hide.

Most users don’t install the app fresh; they update it. So upgrade testing is critical.

Fresh install

  • Installs from the store or test channel, opens without crashing.
  • Onboarding, permission prompts and default settings are correct.
  • Works on the oldest supported OS version.

Upgrade (the important part)

  1. Install the current production version.
  2. Use it like a real user: log in, create data, change settings, save drafts, download offline content.
  3. Upgrade to the new build without uninstalling.
  4. Check: still logged in (or asked nicely to log in), data and settings kept, database migration worked, no crash on first launch.
  5. Repeat from an older version (for example two or three releases back), because users skip updates.

Uninstall and reinstall

  • Local data is gone, but server data comes back after login.
  • On iOS, Keychain data can survive uninstall; check the app doesn’t log in as the old user unexpectedly.

Edge cases

  • Low storage, download interrupted, forced update screen when the version is too old.

On Android, adb install -r upgrades a build in place, which makes this quick.

Learn more: Install, Update and Uninstall

Open as a page to share

What they're looking for

Understanding that upgrade testing from previous production versions matters more than fresh installs, with concrete checks for data migration, sessions and settings.

Common mistakes

  • Only testing fresh installs of the new build.
  • Upgrading from an empty app with no data, which hides migration bugs.
  • Skipping versions (users often jump from a version several releases old).
53

When would you choose an emulator or simulator, and when must you use a real device?

MobileJunior

In shortUse emulators and simulators for fast early checks, layouts and many screen sizes; switch to real devices for anything involving hardware, performance, push, biometrics, real networks or final sign-off.

I think of it as a question: does this test depend on real hardware or real-world conditions?

I choose an emulator or simulator when:

  • A new feature has just landed and I want quick feedback on the flow.
  • I need to check layouts on many screen sizes or OS versions quickly.
  • I want to reproduce a bug on a specific OS version I don’t have in the office.
  • I need easy tools: screenshots, setting a fake GPS location, changing language, slow network profiles.

I use a real device when testing:

  • Camera, NFC, Bluetooth, sensors, biometrics (Face ID, fingerprint).
  • Push notifications and interruptions like real phone calls.
  • Performance, battery, heat and memory on low-end devices.
  • Real networks: switching Wi-Fi to 4G, weak signal in an elevator.
  • Manufacturer quirks, like Samsung keyboards or aggressive battery savers.
  • Touch feel and gestures, and the final release sign-off.

Example: I verify a new settings screen on three emulator sizes in ten minutes, then confirm the QR scanner and payment flow on a real iPhone and a low-end Samsung.

Learn more: Simulators and Emulators

Open as a page to share

What they're looking for

Clear decision rules with examples, rather than "real devices are always better" or "emulators are enough".

Common mistakes

  • Saying one option is always better.
  • Signing off a release that was only tested on simulators.
  • Not knowing the iOS Simulator does not emulate real hardware.
54

How do you test gestures and screen rotation in a mobile app?

MobileJunior

In shortTry every supported gesture (tap, long press, swipe, pinch, drag) and its edge cases, check for conflicts with system gestures, and rotate on every important screen to check layout and that no data is lost.

Gestures

  • Tap, double tap, long press: does each do the right thing, and does a fast double tap trigger an action twice?
  • Swipe: swipe-to-delete, carousels, pull-to-refresh. Partial swipes and swiping back the other way.
  • Pinch and zoom on images and maps: limits, zooming out past the minimum.
  • Drag and drop: reorder lists, drop outside the target.
  • Conflicts: a horizontal carousel inside a vertical scroll, a side menu vs the iOS swipe-back or Android back gesture, gestures near the screen edges.
  • Accessibility: every gesture action is also available another way (a button or a screen reader action).

Rotation

  • Rotate on each important screen, especially mid-task: a half-filled form, a playing video, an open modal, a scrolled list.
  • Layout adapts: nothing cut off, no overlapping, keyboard still usable.
  • No data loss: on Android, rotation recreates the screen, so a classic bug is a form that empties itself.
  • Screens that should be locked to portrait stay locked.
  • Also check tablets, split screen and foldables if supported.

Example bug: rotating during video playback restarts the video from the beginning.

Learn more: Gestures

Open as a page to share

What they're looking for

Knowledge of common gestures and their typical bugs, awareness of conflicts with system gestures, and the specific risk of state loss on rotation.

Common mistakes

  • Only tapping buttons and never trying swipes or long presses.
  • Rotating only on an empty screen instead of mid-task.
  • Forgetting accessibility alternatives for gestures.
55

What is TestFlight, and how do testers get mobile test builds?

MobileJunior

In shortTestFlight is Apple's service for installing beta builds on iPhones. On Android, testers usually get builds through Google Play testing tracks, Firebase App Distribution or a direct APK.

Mobile apps can’t simply be “deployed to a URL” like websites, so teams use beta distribution tools.

iOS: TestFlight

  • Developers upload a build to App Store Connect; testers get it through the TestFlight app.
  • Internal testers (team members) get builds right away; external testers need a quick Apple beta review first.
  • Builds expire after 90 days. Testers can send feedback and screenshots from inside TestFlight, and crash reports are collected.

Android

  • Google Play testing tracks: internal, closed and open testing. Builds come through the normal Play Store.
  • Firebase App Distribution: testers get an email or use the App Tester app; works for iOS too.
  • Direct APK installed with adb, common for quick dev builds.

Good habits as a tester

  • Always note the version and build number (for example 4.2.0 (318)) and the environment (dev, staging, production) in bug reports.
  • After a fix, confirm the new build actually contains it before retesting.
  • Keep older builds available for upgrade testing.

Learn more: TestFlight and Firebase App Distribution

Open as a page to share

What they're looking for

Familiarity with the common distribution channels, and the habit of always checking which build and environment you are testing.

Common mistakes

  • Not knowing how a build gets onto a test device.
  • Reporting bugs without the exact build number.
  • Testing an old build because the app didn't update automatically.
56

How do you test a mobile app under different network conditions?

MobileMid-level

In shortTest on slow, unstable and no connection, and while switching networks, using real-world situations plus tools like network throttling, airplane mode and proxy tools. Look for clear messages, retries and no data loss.

Office Wi-Fi is fast and stable; real users are on trains, in elevators and on cheap data plans.

Scenarios I test

  • No connection at launch and in the middle of a flow.
  • Slow connection (3G-like): loading indicators, timeouts, images loading progressively.
  • Flaky connection: requests that fail halfway.
  • Switching from Wi-Fi to mobile data during an upload or video.
  • Captive portal (hotel Wi-Fi that needs a login page).
  • Connection returns: does the app recover by itself or need a restart?

What I expect

  • A clear, friendly message, not an endless spinner or a raw error.
  • A retry option; offline actions are queued or clearly rejected.
  • No duplicate actions: tapping Send twice on a slow network doesn’t send two messages.
  • Cached content shown when offline, if the app supports it.

Tools

  • Airplane mode and Wi-Fi toggles on a real device.
  • iOS Network Link Conditioner (Developer settings), Android emulator network settings.
  • Charles or Proxyman to throttle, block or delay specific requests.
  • Browser DevTools throttling for the web version.

Learn more: Network Conditions

Open as a page to share

What they're looking for

Realistic network scenarios, knowledge of tools to simulate them, and clear expectations (feedback, timeouts, retries, offline behavior, no duplicates).

Common mistakes

  • Only testing on fast office Wi-Fi.
  • Only toggling airplane mode, never testing slow or flaky connections.
  • Not checking for duplicate requests after a retry.
57

How do you capture logs and crash evidence on Android and iOS?

MobileMid-level

In shortOn Android, use adb logcat and the crash stack trace; on iOS, use the Console app or Xcode device logs and the crash reports in Settings. Always add a screen recording and the build number.

Good evidence turns “it crashed” into a bug a developer can fix in minutes.

Android

  • Connect the device and run adb logcat. Clear it first (adb logcat -c), reproduce, then save the output.
  • Look for FATAL EXCEPTION and the stack trace below it; that is what the developer needs.
  • adb shell screenrecord or the built-in screen recorder for video; adb bugreport for a full report.
  • Android Studio’s Logcat window lets you filter by app.

iOS

  • Connect the iPhone to a Mac and open the Console app (or Xcode > Devices and Simulators) to stream logs and view crash logs.
  • On the device: Settings > Privacy & Security > Analytics & Improvements > Analytics Data holds crash files you can share.
  • TestFlight crash feedback is also sent to the team.
  • Screen recording from Control Center.

Both

  • Crash reporting tools like Firebase Crashlytics or Sentry: I find the crash there and link it in the ticket.
  • Always include the build number, device, OS version, exact time of the crash and steps.
  • Paste only the relevant part of the log, and attach the full file.

Learn more: adb Basics

Open as a page to share

What they're looking for

Practical, tool-specific knowledge for both platforms, and an understanding of which evidence helps developers fix a crash fast.

Common mistakes

  • Reporting "the app crashed" with no steps, build number or logs.
  • Not knowing any way to get logs from a device.
  • Attaching a huge unfiltered log without pointing to the relevant part.
58

How do you approach cross-browser testing?

WebJunior

In shortPick browsers from user analytics and risk, run the full tests on the main browser, then check key flows and known risk areas on the others, using real browsers or a cloud service for the ones you don't have.

1. Decide which browsers matter. I look at analytics and the supported browser list. A typical list: Chrome, Safari (macOS and iOS), Firefox, Edge, and Samsung Internet if many Android users use it. Usually the latest one or two versions.

2. Split the work.

  • Run the full test suite on the most-used browser.
  • On the others, run key flows (sign up, login, search, checkout) and the risky areas.

3. Know what usually breaks:

  • Layout differences: flexbox/grid quirks, fonts, scrollbars.
  • Safari especially: date inputs, autoplay video, cookies blocked by privacy features, 100vh on iPhone.
  • Form controls and autofill look and behave differently.
  • Newer JavaScript or CSS features not supported yet.
  • File uploads, downloads, copy and paste, print.

4. Tools. Real browsers on my machine, real phones for mobile browsers, and a cloud service like BrowserStack or LambdaTest for combinations I don’t have.

5. Report clearly. Include browser name, version and OS, because “it doesn’t work” means nothing without them.

Example: a checkout button worked everywhere except Safari on iPhone, where it was hidden under the bottom toolbar.

Learn more: Cross-browser Testing

Open as a page to share

What they're looking for

A prioritized, data-driven browser list instead of "test everything everywhere", and knowledge of what typically breaks between browsers.

Common mistakes

  • Testing everything only in Chrome.
  • Trying to run every test on every browser and version.
  • Forgetting mobile browsers like Safari on iPhone.
59

How do you test that a website is responsive?

WebJunior

In shortCheck the layout at and around each breakpoint, on small and large screens, in both orientations, using DevTools device mode for speed and real phones and tablets for confirmation.

A responsive site adapts its layout to the screen size. Designs usually define breakpoints (for example 375, 768, 1024, 1440 px).

How I test

  1. Slowly resize the browser from very narrow (320 px) to very wide (1920 px+), watching for anything that breaks between breakpoints, not just at them.
  2. Use DevTools device mode to check common phones and tablets in portrait and landscape.
  3. Confirm on real devices, because real browsers have toolbars, notches, touch and on-screen keyboards that device mode doesn’t fully simulate.

What I look for

  • No horizontal scrolling, nothing cut off or overlapping.
  • Navigation collapses into a working menu on small screens.
  • Text is readable, images scale and don’t stretch.
  • Tables and long words (URLs, emails) don’t break the layout.
  • Touch targets are big enough to tap.
  • Modals and forms fit the screen and stay usable when the keyboard opens.
  • Browser zoom to 200% still works (also an accessibility check).
  • Long translated text (German) still fits.

Example bug: at 800 px, between the tablet and desktop breakpoints, the menu items wrap onto two lines and cover the page title.

Learn more: Responsive Design Testing

Open as a page to share

What they're looking for

Knowing what breakpoints are, what to look for at each size, and that DevTools device mode is not a full replacement for real devices.

Common mistakes

  • Only checking a couple of preset device sizes.
  • Relying 100% on DevTools device mode.
  • Checking only layout and not touch, zoom or content behavior.
60

What do you use browser DevTools for as a manual tester?

WebJunior

In shortTo read console errors, inspect network requests and responses, check storage and cookies, simulate devices and slow networks, and inspect elements. All of it makes bug reports much more precise.

DevTools let me see what happens behind the page, so I can tell whether a bug is in the front end or the backend.

  • Console: JavaScript errors and warnings. A red error when clicking “Save” is great evidence for a bug report.
  • Network: every request the page makes, its status code, request payload, response and timing. If Save shows “Success” but the request returned 500, I’ve found the real bug. I can also throttle the network (for example to 3G or Slow 4G) or go offline.
  • Application / Storage: cookies, localStorage, sessionStorage. I can clear them to test as a new user or check that a token is removed after logout.
  • Elements: inspect HTML and CSS, check alt text and labels, temporarily edit text to test very long values.
  • Device mode: quick responsive checks on phone and tablet sizes.
  • Lighthouse: basic performance and accessibility audits.

In bug reports I attach the console error, the failing request (URL, status, response) or a HAR file, so developers know where to look straight away.

Example: a search showed “No results” for every query. The Network tab showed a 401 response, so the real problem was an expired session, not the search itself.

Learn more: DevTools for Testers

Open as a page to share

What they're looking for

Practical use of the main DevTools panels and how they improve bug reports and investigation, not developer-level debugging.

Common mistakes

  • Saying DevTools are only for developers.
  • Only knowing how to open the console.
  • Not connecting DevTools findings to better bug reports.
61

What is the difference between cookies, localStorage and sessionStorage?

WebJunior

In shortCookies are small and sent to the server with every request (often used for sessions); localStorage stays in the browser until cleared; sessionStorage lives only as long as the tab.

All three store data in the browser, but they behave differently:

CookieslocalStoragesessionStorage
Sent to serverYes, with every requestNoNo
LifetimeUntil expiry date, or until browser closesUntil clearedUntil the tab closes
SizeAbout 4 KBAbout 5-10 MBAbout 5-10 MB
Shared between tabsYesYes (same origin)No, per tab
Typical useLogin session, consentPreferences, cart, themeOne-time form steps

Why it matters for testing

  • Logout: check that session cookies and tokens in storage are really removed. Then press Back; private data should not appear.
  • New user: clear storage in DevTools to test first-visit behavior (onboarding, cookie banner).
  • Multiple tabs: a cart in localStorage appears in a second tab; a wizard in sessionStorage does not.
  • Security: session cookies should have HttpOnly, Secure and SameSite flags, and sensitive data should not sit in localStorage in plain text.
  • Consent: if the user rejects non-essential cookies, tracking cookies should not appear.

You can see and edit all three in DevTools under Application (Chrome) or Storage (Firefox).

Learn more: Cookies, Sessions and Storage

Open as a page to share

What they're looking for

The key differences (lifetime, sent to server or not, scope) and what that means for testing logout, sessions and privacy.

Common mistakes

  • Saying they are all the same thing.
  • Not knowing which one is sent to the server.
  • Not linking the difference to real test cases.
62

What basic accessibility checks can you do manually?

WebJunior

In shortUse the page with only the keyboard, try a screen reader, zoom to 200%, check color contrast and text alternatives, and make sure forms have labels and clear errors.

Accessibility means people with disabilities can use the product. Many issues can be found in minutes:

  1. Keyboard only: put the mouse away. Can I reach every link, button and field with Tab, in a logical order? Is the focus visible? Can I close a modal with Esc, and am I not trapped?
  2. Screen reader: VoiceOver (Mac/iPhone), TalkBack (Android) or NVDA (Windows). Do buttons have meaningful names (“Add to cart”, not “button”)? Do images have alt text?
  3. Zoom and text size: browser zoom to 200%, large system font on mobile. Nothing should be cut off or overlap.
  4. Color and contrast: text is readable, and color is not the only signal (an error isn’t just a red border, it has a message too).
  5. Forms: every field has a visible label, errors are announced and explain how to fix them.
  6. Media: videos have captions, nothing autoplays loudly or flashes.
  7. Touch targets on mobile are large enough.

Then I run an automated check like Lighthouse or axe to catch things like missing labels and low contrast. Automated tools find only part of the problems, so the manual checks stay important. The standard to reference is WCAG, usually level AA.

Learn more: Accessibility Basics (WCAG)

Open as a page to share

What they're looking for

A handful of concrete, quick checks a tester can do without special training, plus awareness of WCAG and automated tools as a complement.

Common mistakes

  • Saying accessibility is only about blind users.
  • Relying only on an automated scanner.
  • Not mentioning keyboard navigation.
63

How do you test an API without a UI, for example with Postman?

WebMid-level

In shortSend requests directly to the endpoints with Postman, check status codes, response body, headers and timing, and test invalid input, missing auth and edge cases just like you would in the UI.

An API is how the app talks to the server. Testing it directly lets me find bugs before the UI exists and isolate whether a problem is front end or backend.

A request has: a method (GET, POST, PUT, PATCH, DELETE), a URL, headers (like Authorization), and often a JSON body. I get these from the API docs (Swagger/OpenAPI) or by copying a request from the DevTools Network tab.

What I check in the response

  • Status code: 201 after creating, 400 for bad input, 401 without a token, 404 for a missing item.
  • Body: correct fields, types and values; no sensitive data like password hashes.
  • Headers and response time.
  • Side effects: the item really exists afterwards (follow up with a GET).

Tests I write

  • Valid request (happy path).
  • Missing required fields, wrong types, too-long values, empty body.
  • No token, expired token, and another user’s ID (can user A read user B’s order?).
  • Duplicates, boundary values, pagination limits.

Postman basics: collections to group requests, environments for dev/staging URLs and tokens, variables, and simple tests (pm.expect) so a collection can be re-run as a quick regression check.

Learn more: API Testing with Postman

Open as a page to share

What they're looking for

Understanding of requests (method, URL, headers, body), what to verify in responses, negative and auth tests, and practical Postman features like environments and variables.

Common mistakes

  • Only checking that the status is 200.
  • Not testing without authentication or with another user's data.
  • Hardcoding tokens and URLs instead of using environments.
64

Which HTTP status codes should a tester know?

WebJunior

In shortKnow the groups (2xx success, 3xx redirect, 4xx client error, 5xx server error) and the common ones like 200, 201, 204, 301, 302, 400, 401, 403, 404, 409, 429, 500, 502, 503 and 504.

Every response from the server has a status code. The first digit tells you the group:

CodeMeaningTester’s note
200 OKSuccessStill check the body; a 200 can contain an error message.
201 CreatedNew item createdExpected after a successful POST.
204 No ContentSuccess, empty bodyCommon for DELETE.
301 / 302RedirectCheck old URLs redirect correctly.
400 Bad RequestInvalid inputShould come with a clear validation message.
401 UnauthorizedNot logged in / bad tokenApp should send the user to login.
403 ForbiddenLogged in, but not allowedGood sign in access-control tests.
404 Not FoundDoesn’t existShow a friendly page, not a blank screen.
409 ConflictDuplicate or clashFor example, email already registered.
429 Too Many RequestsRate limitedExpected after many login attempts.
500 Internal Server ErrorServer crashedAlmost always a backend bug.
502 / 503 / 504Gateway, unavailable, timeoutInfrastructure or slow services.

Why it matters: in DevTools or Postman, the status code tells me where to look. A 500 goes to the backend developer; a 200 with wrong data displayed may be a front-end bug. And the UI should handle every error code gracefully.

Learn more: API Testing with Postman

Open as a page to share

What they're looking for

The meaning of the code groups, the common codes, and how they help decide who owns a bug and what the expected behavior is.

Common mistakes

  • Mixing up 401 and 403.
  • Assuming a 200 status means everything worked.
  • Not knowing that 5xx usually points to a server-side problem.
65

What basic security checks can a manual tester do?

WebMid-level

In shortOn a test environment and with permission, check access control with two accounts, login and session handling, input handling, sensitive data exposure, HTTPS and rate limiting, and report findings privately.

I’m not a penetration tester, but many serious security bugs are easy to spot with simple checks. I only do this on test environments, with permission.

Access control (the most common real problem)

  • With two test accounts, open user A’s order URL as user B, or change an ID in the URL or API request. You should get 403 or 404, never someone else’s data.
  • A normal user can’t reach admin pages by typing the URL.

Authentication and sessions

  • Wrong-login messages don’t reveal whether the email exists.
  • Lockout or rate limiting after many attempts.
  • Logout and password change really end sessions; the Back button doesn’t show private data.

Input handling

  • Special characters, very long input and simple script tags in text fields are shown as text, not executed.
  • File uploads reject unexpected types and huge files.

Data exposure

  • No passwords, tokens or personal data in URLs, logs, error messages or API responses that don’t need them.
  • HTTPS everywhere; cookies use Secure and HttpOnly.

Reporting: security bugs go to a restricted ticket or the security contact, not a public channel. I use the OWASP Top 10 as a map of what to look for.

Learn more: Security Basics for Testers

Open as a page to share

What they're looking for

Practical, ethical checks focused on access control and sessions, awareness of OWASP Top 10, and a responsible attitude (test environments, permission, private reporting).

Common mistakes

  • Suggesting attacks on production or systems you don't have permission to test.
  • Claiming a manual tester can replace a penetration test.
  • Reporting a security bug in a public channel.
66

A user says "the page is slow". How do you investigate?

WebMid-level

In shortClarify what, where and when it is slow, reproduce it, then use the DevTools Network and Performance panels (and Lighthouse) to find whether the time goes to the server, large files, too many requests or the browser, and report it with numbers.

1. Clarify. Which page or action? Slow to load, or slow to respond to a click? All the time or at peak hours? Which device, browser, network and location? For one user or many?

2. Reproduce and measure. I open the page with DevTools, preferably in a fresh profile with cache disabled, and also try with throttling (slow 4G, CPU slowdown) to mimic a real phone.

3. Find where the time goes.

  • Network tab: is one API request taking 6 seconds? That points to the backend (check the “waiting for server” time). Are there huge images, many requests, or files blocking the page?
  • Performance tab / Lighthouse: long JavaScript tasks, layout shifts, Core Web Vitals like LCP.
  • Compare environments and accounts: maybe it’s only slow for users with 5,000 orders.

4. Report with facts. “Order history takes 7.8 s to load for account X; GET /orders takes 7.2 s and returns 4 MB. Other pages load in under 1 s.” Attach a HAR file or Lighthouse report.

5. Follow up. After the fix, measure again the same way. For load and stress problems, I’d involve someone running performance tests with tools like JMeter or k6.

Learn more: Performance Basics

Open as a page to share

What they're looking for

A structured investigation (clarify, reproduce, measure, isolate, report) and the ability to tell backend slowness from front-end slowness using basic tools.

Common mistakes

  • Reporting "it's slow" without measurements.
  • Testing only on a fast office network and powerful laptop.
  • Jumping to conclusions without isolating the cause.
67

What is the difference between INNER JOIN and LEFT JOIN?

WebJunior

In shortINNER JOIN returns only rows that have a match in both tables. LEFT JOIN returns every row from the left table and fills the right side with NULL when there's no match, which is how you find missing data.

Both combine rows from two tables using a condition, usually foreign key = primary key, such as ON oi.order_id = o.id.

INNER JOINLEFT JOIN
Rows keptOnly rows with a match on both sidesEvery row from the left table
No match on the rightRow is droppedRight-side columns are NULL

Example. Orders 1001 and 1009 have items, order 1010 has none.

  • orders JOIN order_items returns the items of 1001 and 1009. Order 1010 silently disappears.
  • orders LEFT JOIN order_items also returns 1010, with NULL in the item columns.

Why testers care: LEFT JOIN plus IS NULL finds things that are missing:

SELECT o.id
FROM orders o
LEFT JOIN order_items oi ON oi.order_id = o.id
WHERE oi.id IS NULL;   -- orders without items

The same pattern finds users who never ordered or orphan rows. And it’s a warning: a report built on an INNER JOIN hides exactly the broken records you’re looking for.

One trap: after a LEFT JOIN, a condition like WHERE oi.dish = 'Pizza' removes the NULL rows again. Put conditions on the right table in the ON clause if you want to keep unmatched rows.

Learn more: SQL for Testers

Open as a page to share

What they're looking for

A correct definition with a concrete example, and ideally the tester's use of LEFT JOIN with IS NULL to find records that are missing their partner.

Common mistakes

  • Saying they return the same rows "in a different order".
  • Not knowing what appears in the right-hand columns when there is no match (NULL).
  • Filtering the right table in WHERE after a LEFT JOIN and accidentally turning it back into an inner join.
68

What is the difference between WHERE and HAVING in SQL?

WebMid-level

In shortWHERE filters individual rows before grouping. HAVING filters groups after GROUP BY, so it can use aggregates like COUNT(*) or SUM().

They filter at different moments:

  1. FROM / JOIN builds the rows.
  2. WHERE removes rows. Aggregates don’t exist yet, so WHERE COUNT(*) > 1 is an error.
  3. GROUP BY folds the remaining rows into groups and calculates COUNT, SUM, AVG…
  4. HAVING removes groups, using those aggregates.
SELECT user_id, COUNT(*) AS orders, SUM(total) AS spent
FROM orders
WHERE status <> 'canceled'      -- ignore canceled orders (rows)
GROUP BY user_id
HAVING COUNT(*) >= 2;           -- users with 2+ real orders (groups)

Tester uses: HAVING COUNT(*) > 1 finds duplicates (emails, coupon uses, payment ids), and HAVING with SUM finds orders whose total doesn’t match their items.

Learn more: SQL for Testers

Open as a page to share

What they're looking for

The order of evaluation (WHERE, then GROUP BY, then HAVING), a working example that uses both, and a practical tester use such as finding duplicates.

Common mistakes

  • Saying they are interchangeable.
  • Trying to use COUNT or SUM in WHERE.
  • Putting plain row filters in HAVING, which works in some databases but is slower and harder to read.
69

How do you test authentication and authorization in an API?

WebMid-level

In shortWith test accounts on a test environment, check that missing, invalid, expired and edited tokens get 401 everywhere, that the wrong role gets 403, and that one user's token can never read or change another user's objects.

I split it into two questions: who is calling (authentication) and what may they do (authorization). I only do this on a test environment, with test accounts and the team’s OK.

Authentication: expect 401

  • No Authorization header, a malformed one (Bearer abc), an expired token and a token whose payload I edited (for example role changed to admin, old signature kept).
  • I check every protected endpoint, not a sample. One endpoint that skips the expiry check is enough to keep a stolen token alive.
  • If it’s a JWT, I decode it and check exp and the claims, remembering that decoding isn’t verifying.

Authorization: expect 403 or 404

  • Horizontal (IDOR): two users with the same role, Anna and Ben. With Anna’s token I request Ben’s order, address and invoice by id, with GET, PATCH and DELETE, and also ids hidden in query parameters or bodies. Expected: 404 or 403 and no data.
  • Vertical: a customer token on admin endpoints (GET /admin/users, POST /refunds). Expected: 403 and no side effect, which I confirm with a follow-up request.
  • Sneaky fields: a profile update with "role": "admin" must be ignored or rejected.

I like to write a small role × endpoint matrix (anonymous, own, other user’s, admin) so nothing is skipped, and save the requests in a Postman collection so they run on every release. Findings go to the team’s private security channel.

Learn more: API Testing in Depth

Open as a page to share

What they're looking for

A clear split between authentication (who are you, 401) and authorization (what may you do, 403/404), concrete horizontal (IDOR) and vertical tests across all methods, and an ethical approach.

Common mistakes

  • Mixing up 401 and 403.
  • Only testing GET and forgetting PATCH, PUT and DELETE on someone else's object.
  • Trusting that a hidden button means the endpoint is protected.
  • Suggesting these tests on production or without permission.
70

What do you check in an API response besides the status code?

WebJunior

In shortHeaders, the schema (fields, types, required values), the values and business rules, consistency with the database and the UI, the quality of error messages, and that nothing sensitive leaks.

A 200 only means the server didn’t complain. I check the response in layers:

  1. Status and headers. 201 plus a Location header after a create, 204 after a delete, Content-Type: application/json, and Cache-Control: no-store on personal data.
  2. Schema. All documented fields are there, spelled the same on every endpoint, with the right types: a price is a number, not "12.50". Required fields are never null. In Postman I can automate this with pm.response.to.have.jsonSchema(...).
  3. Values. The total equals the items plus the delivery fee, dates have the right format and time zone, and enum values are only the documented ones.
  4. Consistency. The data matches the database (a quick SQL query) and what the app shows. After an update or delete, I send a GET to prove the change was really saved.
  5. Error quality. Errors have one consistent shape, name the field and the rule, and are readable.
  6. Leaks. No password hashes, tokens, internal flags, other users’ data, stack traces, SQL or server paths.

Example: a profile update returned 200 with the new phone number, which looked fine, but the body also contained passwordHash and an internal role field. A status-only test would never catch that.

Learn more: API Testing in Depth

Open as a page to share

What they're looking for

Awareness that a 200 can still be wrong, a structured list of checks, and at least one concrete example of a leak or a schema problem.

Common mistakes

  • Stopping at "the status is 200".
  • Not reading error responses as carefully as success responses.
  • Not confirming a change with a follow-up GET.
71

How would you test a POST endpoint, for example one that creates an order?

WebMid-level

In shortStart with a valid request and confirm the created data with a GET, then break one thing at a time (missing, extra, wrong-type, empty or null fields, boundaries, invalid enums, malformed JSON, wrong Content-Type), test auth and duplicates, and check every response body.

I start from the docs (OpenAPI/Swagger): required fields, types, ranges and the documented status codes. Then:

Happy path

  • A valid body returns 201, a Location header and the new order. A follow-up GET /orders/{id} and, if I can, a database query show the same data. Server-calculated fields like total and status are right.

Negative and boundary, one change at a time

  • Remove each required field in turn → 400 naming that field.
  • Wrong types: "quantity": "2", 2.5, an object instead of an array.
  • Empty string, null and a missing field are three separate tests.
  • Boundaries: if quantity is 1–20, try 0, 1, 20, 21 and -1. Huge values and very long text.
  • Invalid enum values ("paymentMethod": "bitcoin"), unknown ids ("restaurantId": 999).
  • Malformed JSON → 400; Content-Type: text/plain → 415 (or 400).
  • Extra fields like "total": 0 or "status": "delivered" must be ignored or rejected, never applied.

Auth and duplicates

  • No token, expired token → 401. Wrong role → 403. Referencing another user’s address → rejected.
  • Send the same request twice. With the same Idempotency-Key there should be only one order.

Every response gets checked beyond the status: a 4xx with a clear message, no stack traces, and no order created when the request failed.

Learn more: API Testing in Depth

Open as a page to share

What they're looking for

A structured approach that starts from the docs, covers positive, negative and boundary cases, auth, idempotency and side effects, and checks the database or a follow-up GET.

Common mistakes

  • Only sending the happy path.
  • Changing several fields at once, so you can't tell which one caused the result.
  • Accepting a 500 for bad input.
  • Forgetting duplicate submissions and retries.
72

What is a JWT, and what would you test around tokens?

WebMid-level

In shortA JWT is a signed token with three base64url parts (header, payload, signature). Anyone can decode the payload, but only the server can verify the signature. I test expiry, tampering, claims and that every endpoint rejects bad tokens with 401.

A JWT (JSON Web Token) is a common format for access tokens. It looks like xxxxx.yyyyy.zzzzz:

  • Header: the signing algorithm, e.g. {"alg": "HS256", "typ": "JWT"}.
  • Payload: the claims, e.g. sub (user id), exp (expiry, in seconds since 1970), iat (issued at), plus custom ones like role.
  • Signature: created by the server with a secret or private key.

The header and payload are only encoded, not encrypted, so anyone holding the token can read them. Decoding is not verifying: only the server can check the signature.

What I test (on a test environment):

  • Claims: exp exists and the lifetime matches the requirement; the role is right; nothing secret is in the payload.
  • Expired token → 401 on every protected endpoint.
  • Tampered token: change role to admin and keep the old signature → 401. An unsigned "alg": "none" token must also be rejected.
  • Refresh: the app gets a new access token quietly when the old one expires; after logout the refresh token no longer works.
  • Handling: tokens don’t appear in URLs, logs or error messages, and I mask them in bug reports.

I decode test tokens with a local tool or the team’s approved decoder, never production tokens on a public website.

Learn more: API Testing in Depth

Open as a page to share

What they're looking for

Knowing that a JWT is encoded, not encrypted, that decoding is not verifying, what claims like sub and exp mean, and practical token tests including refresh and logout.

Common mistakes

  • Saying a JWT is encrypted.
  • Thinking that being able to decode a token proves it's valid.
  • Pasting real or production tokens into public online tools.
73

Client-side vs server-side validation: what's the difference, and why test both?

WebJunior

In shortClient-side validation runs in the app or browser and gives quick feedback; server-side validation runs on the server and is the only check you can trust, because the app's checks can be skipped. Test that both exist and agree.

Client-side validation runs in the app or the browser before anything is sent. It gives instant feedback: “Enter an email like name@example.com”, “Use at least 8 characters”. It’s there for the user’s convenience.

Server-side validation runs on the server when the request arrives. It repeats the same rules and adds checks only the server can do: is the email already registered, is the item in stock, is this the fifth sign up from the same IP in a minute? It’s there to protect the data and the business.

Why test both?

  • Client-side checks can be skipped: anyone can call the API with Postman or curl, change a request with a proxy tool or DevTools, or use an old app version without the newest rules.
  • The iOS app, the Android app and the website often have their own client rules, which drift apart. The server is the one place they all meet.
  • If only the client checks, bad data gets into the database and breaks other screens, reports or apps later. Sometimes it’s a security problem (XSS, SQL injection).

How I test it

  1. Note each rule the app enforces (lengths, formats, required fields, age).
  2. Capture a valid request in DevTools or a proxy tool.
  3. Send it again with each rule broken: too long, wrong format, missing field, an underage date of birth.
  4. Expect a validation error (often 400 or 422) with a clear message per field, and no data saved.

I also check the two layers agree: if the app accepts anna+shop@mail.com but the server rejects it, users get a confusing error after submitting.

Learn more: Forms and Validation

Open as a page to share

What they're looking for

That you know client-side checks are for user experience and can be bypassed, that the server must enforce every rule, and that you know how to test it (calling the API directly, editing requests).

Common mistakes

  • Saying client-side validation is enough because "users can't type invalid data".
  • Not knowing how to bypass the app to test the server.
  • Forgetting that iOS, Android and web may each have different client rules.
74

What makes a good error message in a form?

WebJunior

In shortIt's specific and says how to fix the problem, in plain language, next to the field, not shown by color alone, announced to screen readers, and it never clears what the user typed.

A good error message helps the user fix the problem in one try. I check these things:

  • Specific and actionable. “Enter a postcode like SW1A 1AA” instead of “Invalid input”. It says what’s wrong and how to fix it.
  • Plain language. No codes (“Error 422”), no jargon (“regex mismatch”), no blame (“illegal value”).
  • Next to the field. The message sits under the field, and the field itself is marked. On long forms, an error summary at the top lists all problems as links that move focus to each field.
  • Not color only. Red border plus text plus an icon, so people who can’t see red still notice it (WCAG 1.4.1 Use of Color).
  • Accessible. The field is marked invalid (aria-invalid), the message is linked to it (aria-describedby), and after a failed submit focus moves to the summary or the first invalid field.
  • Right timing. It appears when the user leaves the field or submits, not while they’re still typing, and disappears as soon as the value is fixed.
  • Input kept. Nothing the user typed is cleared because of an error.
  • Safe. It doesn’t reveal more than it should, for example whether an email has an account on a login or reset screen.

Server errors need the same care: “We couldn’t save your address right now. Your details are kept, please try again” is far better than “Something went wrong”.

Example rewrite: “Invalid date” → “Enter a real date of birth, like 27 3 1995”.

Learn more: Forms and Validation

Open as a page to share

What they're looking for

Concrete qualities (specific, actionable, placed next to the field, accessible, input kept) and an example of a bad message turned into a good one.

Common mistakes

  • Only talking about wording and forgetting placement, timing and accessibility.
  • Accepting "Something went wrong" or error codes as fine.
  • Forgetting that the user's input must survive the error.
75

What is Agile and Scrum, and what does a tester do during a sprint?

AgileJunior

In shortAgile is an approach of delivering software in small, frequent increments; Scrum organizes this into sprints. Testers are involved throughout the sprint, from refining stories to testing and regression.

Agile is a way of building software in small increments, releasing often and adapting to feedback instead of planning everything up front.

Scrum is the most popular Agile framework. Work is done in sprints (usually two weeks), with:

  • Roles: product owner (decides what to build), scrum master (helps the process), developers (everyone who builds, including testers).
  • Events: sprint planning, daily scrum, sprint review, retrospective, plus backlog refinement.
  • Artifacts: product backlog, sprint backlog, increment.

What a tester does in a sprint:

  • Refinement and planning: asks questions about user stories, helps write clear acceptance criteria, points out risks and edge cases, helps estimate testing effort.
  • Early in the sprint: prepares test scenarios and test data while developers code; tests stories as soon as they are ready, not all at the end.
  • During the sprint: reports bugs quickly and talks directly with developers, retests fixes, does exploratory testing.
  • Daily scrum: shares progress and blockers (“the filter story is blocked by a crash on Android”).
  • End of the sprint: regression testing, helps demo the stories in the review, suggests improvements in the retrospective.

The key idea is that quality is the whole team’s responsibility, and the tester helps the team build it in from the beginning.

Learn more: SDLC and STLC

Open as a page to share

What they're looking for

A basic understanding of Agile values and Scrum events, and that testing happens continuously inside the sprint with the tester collaborating from the start.

Common mistakes

  • Describing testing as a separate phase at the end of the sprint.
  • Not knowing the main Scrum events or roles.
76

What is a user story, and what are acceptance criteria?

AgileJunior

In shortA user story describes a feature from the user's point of view ("As a..., I want..., so that..."); acceptance criteria are the testable conditions that must be met for the story to be done.

A user story is a short description of a feature from the user’s perspective:

As a shopper, I want to save products to a wishlist so that I can buy them later.

It describes who, what and why, and is a starting point for a conversation, not a full specification.

Acceptance criteria (AC) are specific, testable conditions the story must meet to be accepted. They are often written as Given / When / Then:

  • Given I am logged in, when I tap the heart icon on a product, then it is added to my wishlist and the heart turns red.
  • Given a product is in my wishlist, when I tap the red heart, then it is removed.
  • Given I am logged out, when I tap the heart, then I am asked to log in.
  • The wishlist is kept after logging out and back in, and is the same on app and website.

How testers use them:

  • Each criterion becomes one or more test cases.
  • While reviewing them, testers spot gaps: What happens when an out-of-stock product is in the wishlist? Is there a maximum number of items? Does it work offline?
  • Good AC are clear, testable and measurable. “The wishlist loads fast” is vague; “the wishlist loads in under 2 seconds on 4G” is testable.

Learn more: User Stories and Acceptance Criteria

Open as a page to share

What they're looking for

The user story format, good testable acceptance criteria (often Given/When/Then), and how a tester uses them to design tests and spot gaps.

Common mistakes

  • Writing vague acceptance criteria like "it should work well".
  • Not mentioning that testers help write and review acceptance criteria.
77

How do you decide which tests to automate?

AgileMid-level

In shortAutomate stable, repetitive, high-value checks such as regression of critical flows, smoke tests and data-heavy cases; keep exploratory, usability, one-off and fast-changing tests manual.

Automation is an investment: it takes time to build and to maintain, so it should pay back.

Good candidates

  • Regression of critical flows that must work on every build: login, sign up, search, checkout, payments.
  • Smoke tests run after each deployment.
  • Repetitive, data-heavy checks: the same form with 50 data sets, many locales, many API combinations.
  • Tests that are boring or error-prone for humans, like comparing long price tables.
  • API tests, which are fast and stable compared with UI tests.

Keep manual

  • Exploratory testing and new features still changing every sprint.
  • Usability, look and feel, and accessibility judgment with a screen reader.
  • One-off checks or things that are very hard to automate reliably (real phone calls, some hardware features).

Questions I ask for each test: How often will it run? Is the feature stable? How bad is it if this breaks? How expensive is it to automate and keep green? Can it be tested at a lower level (unit or API) instead of the UI?

As a manual tester, I help by marking candidates in the test suite and writing clear, stable test cases that automation engineers can turn into scripts.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

Clear criteria (repetition, stability, risk, cost of maintenance), an understanding that automation has a cost, and that manual testing keeps its place.

Common mistakes

  • Saying "automate everything".
  • Automating unstable features that change every sprint.
  • Ignoring the maintenance cost of automated tests.
78

How do you keep a regression test suite useful over time?

AgileMid-level

In shortReview it regularly, remove or update outdated tests, add tests for new features and escaped bugs, tag tests by priority and area, and run a risk-based subset when time is short.

A regression suite slowly becomes outdated: features change, screens are redesigned, and old tests describe things that no longer exist. A messy suite wastes time and gets ignored.

Habits that keep it healthy

  • Update as you go: when a story changes behavior, update the related test cases in the same sprint.
  • Add tests for escaped bugs: every production bug gets a regression test so it can’t come back unnoticed.
  • Remove or merge obsolete and duplicate tests. Fewer good tests beat many confusing ones.
  • Tag tests by area (checkout, profile), priority (P1-P3) and platform (iOS, Android, web).
  • Review regularly, for example once a quarter, together with developers or the product owner.
  • Move stable, repetitive tests to automation and note it, so they aren’t also run by hand.

Choosing what to run

  • Smoke subset on every build.
  • Risk-based subset for a normal release: P1 tests plus the areas touched by changes.
  • Full regression before major releases or big refactors.

Example: after a redesign of the profile area, I archived 14 outdated cases, rewrote 6, and added 3 for new edge cases. The profile run went from 2 hours to 50 minutes and became more accurate.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

Awareness that suites grow stale and bloated, concrete maintenance habits, and the use of prioritization and tagging to run the right subset.

Common mistakes

  • Only ever adding tests and never removing any.
  • Running the full suite every time regardless of what changed.
  • Not adding a test after a bug escaped to production.
79

How do you work with developers during a sprint?

AgileJunior

In shortGet involved early in refinement and planning, share test scenarios before coding, test small pieces as soon as they're ready, report bugs quickly and clearly, and talk directly instead of only through tickets.

I see developers as teammates with the same goal. Here’s how a sprint usually looks for me:

Before coding

  • In refinement and planning, I ask questions about edge cases and acceptance criteria, and help estimate testing effort.
  • I write test scenarios early and share them with the developer, so they can check the obvious cases while coding.

During the sprint

  • Test small pieces as soon as they’re ready, like an API endpoint or one screen, instead of waiting for the whole feature.
  • Do quick pair testing or a demo with the developer on their branch.
  • Join the daily stand-up to raise blockers (“I can’t test payments, the sandbox is down”).

When I find bugs

  • For small issues during development, a quick message or showing them is often faster than a ticket.
  • For real bugs, a clear bug report with steps, evidence and environment.
  • Retest fixes quickly so stories don’t get stuck.

At the end

  • Regression on affected areas, and a short summary of what was tested and any known risks.
  • In the retrospective, suggest improvements, like “let’s add test data setup to the story”.

Example: sitting with a developer for 15 minutes on day 3 caught a validation issue that would otherwise have been a ticket ping-pong on day 9.

Learn more: SDLC and STLC

Open as a page to share

What they're looking for

A collaborative, continuous way of working across the sprint rather than "waiting for the build at the end", plus good communication habits.

Common mistakes

  • Describing testing as something that only starts after development is finished.
  • Communicating only through bug tickets.
  • Treating developers as opponents.
80

Your team only gives QA a build at the end of the sprint. How would you shift testing left in practice?

AgileSenior

In shortGet involved before code exists through refinement, three amigos and test ideas shared with developers, then test smaller pieces earlier on feature branches and APIs, and agree with the team that stories are smaller and finished one at a time. Start with one or two changes and show the results.

A “mini waterfall” inside a sprint is very common: developers code for eight days, QA tests for two, and bugs roll over. Shifting left is less about testers and more about how the team flows work.

1. Get in before the code

  • Join refinement and ask testing questions: “What if the card expires mid-checkout? What does the empty state look like?”
  • Hold short three amigos sessions (product, developer, tester) for risky stories, ending with clear acceptance criteria and examples.
  • Share my test ideas with the developer before they start coding. Many bugs are prevented because the developer reads the list.

2. Test smaller things, sooner

  • Test the API as soon as the endpoint exists, before the UI is ready.
  • Test feature branch builds or preview environments instead of waiting for the sprint build.
  • Pair with the developer for 20 minutes when a story is “almost done”.

3. Fix the flow, not just the testing

The real cause is often big stories and too much work in progress. I suggest splitting stories so they can be finished and tested within a few days, and limiting how many are open at once. “Stop starting, start finishing.”

4. Help developers test more

Unit and API tests for business rules, a shared checklist for common UI states, and a smoke test they can run before handing over.

5. Start small and measure

I’d propose one or two changes for the next sprint, for example three amigos for every story over a certain size and testing on feature branches. After a few sprints we look at simple signals: fewer stories rolling over, bugs found earlier, less end-of-sprint crunch.

End-of-sprint regression and exploratory testing still happen, but they become a final check instead of the first time anyone looks at the work.

Learn more: User Stories and Acceptance Criteria

Open as a page to share

What they're looking for

Concrete, incremental changes rather than theory, an understanding that the root problem is often large stories and work-in-progress, collaboration with developers, and measuring whether the change helped.

Common mistakes

  • Only saying "test earlier" without concrete steps.
  • Trying to change the whole process at once.
  • Thinking shift-left just means writing automated tests earlier.
  • Dropping end-of-sprint regression and exploratory testing entirely.
81

What would you check when testing a login screen?

Practical tasksJunior

In shortValid and invalid credentials, field validation, error messages, password masking, account lockout, forgot password, session handling, security basics, accessibility and platform behavior.

I would first ask a few questions: what login methods are supported (email, phone, Google/Apple, biometrics)? What are the password rules and lockout policy? Then I would group my checks:

Functional (positive)

  • Valid email and password logs in and opens the right screen.
  • “Remember me” / staying logged in works after closing the app.
  • Social and biometric login, if supported.

Negative and validation

  • Wrong password, unregistered email, empty fields.
  • Email with spaces before or after, uppercase letters.
  • Very long input, emojis, pasted values.
  • No internet or slow network: clear message, no endless spinner.

Security

  • Password is masked, with a working show/hide toggle.
  • Error message does not reveal which field was wrong (“Incorrect email or password”).
  • Account locks or slows down after several wrong attempts.
  • Logout really ends the session; the back button does not show private data.

UI and usability

  • Correct keyboard type (email keyboard), autofill and password managers work.
  • Tab/Next order between fields, Log in button state.
  • “Forgot password” link works end to end.

Accessibility and platform

  • Screen reader labels, large text, dark mode, rotation.
  • On web: Enter key submits, works in all supported browsers.

Learn more: Login and Sign Up

Open as a page to share

What they're looking for

A structured answer that groups checks into categories (functional, negative, UI, security, accessibility, mobile/web specifics) rather than a random list.

Common mistakes

  • Only testing a valid and an invalid password.
  • Forgetting security checks like lockout and error messages that reveal too much.
  • Not asking clarifying questions about the requirements.
82

How would you test a pen (or a lift / elevator)?

Practical tasksJunior

In shortClarify the requirements first, then cover functional, usability, performance, compatibility, safety and edge cases in a structured way.

The interviewer is not interested in pens. They want to see how you think. So start with questions, then work through categories.

1. Clarify requirements. Who is it for (kids, office, astronauts)? Ballpoint or fountain? What surfaces should it write on? Any price or lifetime targets?

2. Then structure the tests (example: a lift):

  • Functional: pressing a floor button takes you to that floor; doors open and close; the display shows the correct floor; up/down call buttons on each floor work; emergency button and phone connect to help.
  • Usability: buttons reachable from a wheelchair, Braille on buttons, audio floor announcements, clear labels.
  • Performance: time to arrive after a call; behavior at rush hour with calls from many floors; maximum load.
  • Safety: overload alarm and refusal to move; doors reopen when something blocks them; behavior during a power cut or fire alarm; it never moves with doors open.
  • Edge and negative cases: pressing all buttons at once; pressing the current floor; pressing a button many times; pressing “close door” while someone enters.
  • Compatibility / environment: works in heat, cold and humidity.

For a pen, the same structure applies: does it write (functional), is it comfortable (usability), how many pages until the ink runs out (performance), is the cap safe if swallowed by a child (safety), does it write upside down or on wet paper (edge cases).

Finish by saying how you would prioritize: safety first, then core functions.

Learn more: Types of Testing

Open as a page to share

What they're looking for

Structured thinking, starting with questions about requirements and users, then organizing ideas into categories instead of listing random checks.

Common mistakes

  • Jumping straight into a random list of ideas without asking questions.
  • Only covering the happy path ("it writes").
  • Forgetting safety and non-functional aspects.
83

How would you test a segmented control or a dropdown?

Practical tasksJunior

In shortCheck default selection, that options are mutually exclusive, that selection updates the content, that state persists, and cover long labels, accessibility, rotation and platform differences.

A segmented control (like “Day | Week | Month” in a fitness app) and a dropdown (like a “Country” selector) both let the user choose one option from several. I would check:

Selection behavior

  • The correct option is selected by default.
  • Exactly one option is selected at a time (options are mutually exclusive).
  • Tapping an option updates the content below (chart, list, price) correctly, and quickly.
  • Tapping the already selected option does nothing strange.
  • Fast repeated taps do not show data from the wrong option.

State persistence

  • The selection is kept after going to another screen and back, rotating the device, backgrounding the app and, if required, restarting it.

Content and layout

  • Long labels and translations (German!) are not cut off.
  • Large text sizes, small screens and dark mode.
  • Dropdown: long lists scroll, search works if present, the list closes when tapping outside, and the chosen value shows in the field.
  • Disabled options cannot be selected.

Accessibility

  • Screen reader announces the label, role and “selected” state.
  • Touch targets are big enough; keyboard navigation works on web (arrow keys, Enter, Esc for dropdowns).

Platform

  • Native iOS/Android look and behavior, and on web, all supported browsers.

Learn more: Segmented Control

Open as a page to share

What they're looking for

Knowledge of what the component is for and typical failure points (selection state, persistence, content sync, truncation, accessibility), organized clearly.

Common mistakes

  • Only checking that tapping an option highlights it.
  • Forgetting state after navigation, rotation or backgrounding.
  • Ignoring accessibility (screen reader announcements of selected state).
85

How would you test a shopping cart?

Practical tasksJunior

In shortTest adding, updating and removing items, price and total calculations (discounts, tax, shipping), stock limits, cart persistence across sessions and devices, and the handoff to checkout, plus edge cases like price changes and slow networks.

I’d first clarify: guest cart or only logged-in? Maximum quantities? How do discounts, tax and shipping work?

Basic actions

  • Add from product page and list, add the same item twice (quantity goes up, no duplicate line).
  • Change quantity with buttons and by typing; 0, negative, and above the maximum.
  • Remove items, remove the last item (empty cart state), undo if supported.
  • Variants: same product in different size or color as separate lines.

Calculations

  • Line totals, subtotal, discounts, tax, shipping and grand total are correct.
  • Rounding with prices like 9.99 x 3.
  • Coupon codes: valid, expired, invalid, applied twice, minimum order value.
  • Currency and locale formatting.

Persistence

  • Cart survives refresh, closing the app, logging out and in.
  • Guest cart merges correctly after login.
  • Same account on phone and web shows the same cart.

Edge cases

  • Item goes out of stock or changes price while in the cart: clear message.
  • Double tapping Add on a slow network.
  • Cart badge count matches the cart content.

Handoff: proceed to checkout with exactly the items and totals shown.

Learn more: Shopping Cart and Checkout

Open as a page to share

What they're looking for

A structured answer with a strong focus on calculations and data persistence, plus realistic edge cases that cause money-related bugs.

Common mistakes

  • Only testing "add item, item appears in cart".
  • Ignoring calculations, rounding and discounts.
  • Forgetting what happens when stock or price changes while the item is in the cart.
86

How would you test a date picker?

Practical tasksMid-level

In shortCheck valid and invalid dates, boundaries like min/max dates, leap years and month ends, typing vs picking, time zones and locale formats, ranges, and keyboard and screen reader access on each platform.

I’d ask first: what is the date for (birthday, booking, deadline)? Are there min and max dates? Can the user type the date? Is a time included?

Valid and invalid values

  • Today, past and future dates, according to the rules (no booking in the past, must be 18+).
  • Boundaries: exactly the min and max date, one day before and after.
  • Calendar edge cases: 29 February in leap and non-leap years, 31st of short months, 31 December to 1 January.
  • Typed input: wrong formats, letters, partial dates, pasting.

Ranges (check-in / check-out)

  • End before start is blocked; same-day ranges follow the rules.
  • Changing the start date updates or validates the end date.

Locale and time zone

  • Date format follows the locale (12/03 vs 03/12), first day of week (Sunday vs Monday).
  • A date selected late at night isn’t saved as the previous or next day on the server because of time zone conversion. Test with the device in a different time zone.
  • Daylight saving changes, if time is involved.

UI and platform

  • Native pickers differ: iOS wheels or calendar, Android calendar dialog, browser date inputs (Safari behaves differently).
  • Clear and cancel work; selected date is shown correctly after reopening.
  • Keyboard navigation, screen reader announces the date, large text.

Learn more: Date & Time Picker

Open as a page to share

What they're looking for

Strong boundary and edge-case thinking around dates (leap years, time zones, formats), plus UI, platform and accessibility checks.

Common mistakes

  • Only picking today's date.
  • Forgetting time zones and locale formats.
  • Ignoring that iOS, Android and web browsers show very different native pickers.
87

How would you test login with biometrics (Face ID or fingerprint) in a mobile app?

Practical tasksMid-level

In shortTest enrolling and using biometrics, failed and canceled scans, the fallback to passcode or password, changes to enrolled biometrics in device settings, permission and lockout, and that it is truly optional and secure.

I’d ask: how does the user enable biometric login? What is the fallback? What happens after several failures?

Setup

  • Offered after a normal login; can be enabled and disabled in app settings.
  • iOS asks for Face ID permission (with a clear reason); declining is handled.
  • Device without biometrics enrolled: option hidden or explains what to do.

Using it

  • Successful scan logs in quickly to the right account.
  • Failed scan (wrong finger, covered face): retry allowed.
  • Too many failures: the system locks biometrics and asks for device passcode, or the app falls back to its own password.
  • Cancel the prompt: user can log in with password instead.

Changes on the device

  • New fingerprint or face added in system settings: the app should require the password again before trusting biometrics (a security expectation).
  • Biometrics turned off in settings, permission revoked, device passcode removed.

Security and session

  • Logout, password change on another device, or account blocked: biometrics no longer log in.
  • No sensitive data visible in the app switcher before authentication.

Platform

  • Face ID vs Touch ID on iPhones; fingerprint, face unlock and “weak vs strong” biometrics on Android.
  • Real devices needed; simulators can only fake a match or no-match.

Learn more: Biometric Login

Open as a page to share

What they're looking for

Coverage of setup, success, failure, fallback, device settings changes and security, plus knowing that real devices are needed for most of it.

Common mistakes

  • Only testing a successful scan.
  • Forgetting the fallback when biometrics fail or are unavailable.
  • Not testing what happens when a new fingerprint or face is added on the device.
88

How would you test a registration form?

Practical tasksJunior

In shortClarify the rules first, then group tests into happy path, field validation, real-world data, validation behavior, whole-form behavior (double submit, server errors, Back), server-side checks, security and accessibility.

I’d start with questions: which fields are required, what are the rules for each one (length, format, allowed characters), which countries and languages are supported, and what happens after sign up (confirmation email, automatic login, an existing email)?

Then I’d group my tests:

Happy path

  • Sign up with valid data, open the confirmation email, log in with the new account.
  • Check every value was saved exactly as entered: on the profile, in emails, in the admin panel or database.

Each field

  • Empty, spaces only, valid and invalid classes, and the boundaries: minimum, maximum and one beyond.
  • Required vs optional matches the spec.

Real-world data

  • Names like O'Brien, Đorđe, Anne-Marie or a single name.
  • Emails with + and subdomains, phone numbers with spaces and a country code, postcodes from every supported country.
  • Age rules on the exact birthday, spaces before and after, pasted text, emoji.

Validation behavior

  • Errors appear on blur or submit (not while typing), say how to fix the problem, sit next to the field, and clear once fixed.
  • After a failed submit, focus goes to an error summary or the first invalid field, and nothing typed is lost.

Whole form

  • Double tap or double Enter on submit: one account. Email already registered. Server error, no connection, session timeout: clear message, input kept. Back and refresh after submitting.

Server-side

  • Send invalid data straight to the API with Postman or DevTools. The server must reject it, not only the app.

Security, accessibility and platforms

  • No personal data in the URL, password masked, rate limiting on sign up, marketing consent unticked by default.
  • Screen reader labels and error announcements, keyboard only, large text, contrast.
  • The right keyboards and AutoFill on iOS and Android, password managers in browsers.

Learn more: Forms and Validation

Open as a page to share

What they're looking for

A structured answer that starts with questions about the requirements and groups checks into clear categories, including server-side validation, real-world data and what happens when submitting fails.

Common mistakes

  • Only testing one valid and one invalid email.
  • Forgetting that the server must validate too, not only the app.
  • Never checking that the entered data was actually saved correctly.
  • Ignoring double submit, server errors and data loss.
89

How do you use SQL as a manual tester?

Practical tasksJunior

In shortMostly read-only. I use SELECT queries to check that the app saved the right data, find or confirm test data and preconditions, and investigate bugs so I can say which layer is broken.

I use SQL to look behind the screen. The UI shows a view of the data; the database shows what was really stored.

What I use it for

  • Verifying results. After placing an order in the app, I run SELECT * FROM orders WHERE id = 1007 and check the total, status and coupon, then the related rows in order_items. The screen can say “Success” while the saved data is wrong.
  • Finding test data. “A user with a canceled order and no city saved” is one query instead of an hour of clicking.
  • Checking preconditions. Before a test, I confirm the data it needs really exists.
  • Investigating bugs. If the stored price is right but the screen shows the wrong one, it’s a front-end bug. If the stored price is already wrong, it’s a back-end bug. That makes my bug report much more precise, and I paste the query and result into it.
  • Data-quality checks. Duplicates (GROUP BY email HAVING COUNT(*) > 1), orphan rows (a LEFT JOIN with IS NULL) and totals that don’t match their items.

Safety

I work read-only on shared databases and never run UPDATE or DELETE on staging or production without the team’s approval. If I need to create test data, I do it on my own test database, write the SELECT with the same WHERE first, and use a transaction where possible.

Learn more: SQL for Testers

Open as a page to share

What they're looking for

Concrete, everyday uses of SQL in testing, an understanding that testers read rather than change shared data, and a sense of how database checks improve bug reports.

Common mistakes

  • Saying SQL is only for developers or automation engineers.
  • Describing UPDATE or DELETE on shared or production databases as normal tester work.
  • Listing SQL keywords without saying what you would actually check.
90

Write a query that finds duplicate email addresses in a users table.

Practical tasksJunior

In shortSELECT LOWER(email), COUNT(*) FROM users GROUP BY LOWER(email) HAVING COUNT(*) > 1. Group by the value that should be unique and keep the groups with more than one row.

Group by the value that should be unique, count each group, and keep only groups with more than one row:

SELECT LOWER(TRIM(email)) AS email, COUNT(*) AS accounts
FROM users
GROUP BY LOWER(TRIM(email))
HAVING COUNT(*) > 1;
  • GROUP BY makes one row per email.
  • HAVING filters the groups after counting. WHERE COUNT(*) > 1 would fail, because WHERE runs before anything is counted.
  • LOWER and TRIM catch duplicates that differ only in capitals or spaces. Email providers treat the address part before the @ as case-insensitive in practice, so the app should too.

To see the actual accounts behind each duplicate:

SELECT id, email, signed_up
FROM users
WHERE LOWER(TRIM(email)) IN (
  SELECT LOWER(TRIM(email)) FROM users
  GROUP BY LOWER(TRIM(email)) HAVING COUNT(*) > 1
)
ORDER BY LOWER(email), signed_up;

As a tester I’d report it as a sign-up bug (uniqueness is checked case-sensitively), include the query and the ids, and mention the impact, for example the same person getting two welcome coupons.

Learn more: SQL for Testers

Open as a page to share

What they're looking for

Correct use of GROUP BY with HAVING COUNT(*) > 1, awareness that duplicates can hide behind capitalization or spaces, and a next step to see the actual accounts.

Common mistakes

  • Putting COUNT(*) in WHERE instead of HAVING.
  • Using DISTINCT, which hides duplicates instead of finding them.
  • Ignoring case and whitespace differences, so Mia.Novak@mail.test and mia.novak@mail.test aren't caught.
91

How would you verify in the database that an order was saved correctly?

Practical tasksMid-level

In shortFind the new order by its id or by my test user and time, compare every stored field with what the app showed, check the related rows such as order items and payments, and check that the numbers agree and nothing was duplicated.

I’d treat the database as the second half of the expected result.

  1. Find the record. Use the order number from the confirmation screen: SELECT * FROM orders WHERE id = 1007;. Without it: WHERE user_id = <my test user> ORDER BY created_at DESC LIMIT 5.
  2. Compare the fields the app showed. Total, status, restaurant, delivery address, coupon.
  3. Check the fields it didn’t show. Foreign keys point to the right user and restaurant, coupon_id is set when I used a coupon, timestamps are in the expected time zone, nothing important is unexpectedly NULL.
  4. Check related tables. SELECT * FROM order_items WHERE order_id = 1007; Right dishes, quantities and prices. Then payments, coupon usage, stock or loyalty points, whatever the feature touches.
  5. Check that numbers agree. The order total equals SUM(quantity * unit_price) minus discounts, rounded to cents.
  6. Check for duplicates and side effects. Exactly one order was created, even after a double tap or a network retry, and nothing else changed unexpectedly.

I do all of this read-only. If something is wrong, I put the queries and their results into the bug report so developers can reproduce it, and I say which layer is broken: if the database is right but the screen is wrong, it’s a front-end bug; if the stored data is already wrong, it’s the back end.

Learn more: SQL for Testers

Open as a page to share

What they're looking for

A structured approach that goes beyond "SELECT the row" to related tables, totals, duplicates, timestamps and side effects, done safely with read-only access.

Common mistakes

  • Only checking that a row exists.
  • Forgetting related tables like order items, payments or coupon usage.
  • Not checking for duplicate orders after a double tap or a retry.
  • Changing data to "fix" what you find instead of reporting it.
92

How do you know which build contains a fix?

Practical tasksJunior

In shortI check the ticket (a fixed-in build or fix version field, or the linked branch, commits and PR), the release notes or CI page for the build, and the version and build number on my device. Only when they match do I retest. I also check whether the fix is in the app or the backend, and whether it's behind a feature flag.

I match three things before I retest.

1. The ticket. Many teams fill a “Fixed in build” or “Fix version” field. If Jira is connected to the code host, the ticket’s Development panel shows the branch, commits and pull request, sometimes the builds and deployments too.

2. The build. The release notes for a build, or its page in the CI tool, list the PRs or tickets it contains. TestFlight’s “What to Test” and Firebase App Distribution notes often do the same.

3. My device. The app’s About screen, TestFlight or App Tester shows version and build, e.g. 2.1.0 (412). For a website, the version may be in the footer, a /version endpoint or the console.

If the fix is in 412 and I have 411, I don’t retest yet: I install 412 or ask when it lands.

Three traps I watch for:

  • A higher number isn’t proof. A hotfix build from an old release branch can be newer and still lack the fix.
  • App or backend? A server fix may be on staging but not production, or affect old app versions too.
  • Feature flags. The code can be in the build but switched off for my account.

When I verify, I write it down precisely: “Verified on 2.1.0 (412), staging, iPhone 15, flag reorder_current_prices ON.”

Learn more: Git and CI for Testers

Open as a page to share

What they're looking for

A concrete routine using several sources, the habit of matching build numbers before retesting, and awareness of the traps (higher build without the fix, backend vs app, feature flags).

Common mistakes

  • Retesting on whatever build is installed and reopening the bug.
  • Reporting "latest" instead of a build number.
  • Assuming a higher build number contains every fix.
  • Treating Resolved as verified.
93

How would you test usability without access to real users?

Practical tasksMid-level

In shortDo a heuristic evaluation against Nielsen's 10 heuristics, compare with platform guidelines, run quick hallway tests with colleagues new to the feature, and use real-world signals like support tickets, reviews and analytics. Report findings with evidence and impact.

Formal studies are great, but most of the time I can still find a lot:

  1. Heuristic evaluation. I walk through realistic tasks and check each screen against Nielsen’s 10 usability heuristics: is there feedback after actions (visibility of system status)? Is there a way back or undo (user control and freedom)? Are destructive actions confirmed (error prevention)? Do error messages say how to fix the problem?
  2. Platform guidelines. Apple’s Human Interface Guidelines and Google’s Material Design describe expected patterns. Breaking them hurts consistency.
  3. Hallway tests. I ask a colleague who hasn’t seen the feature to try one task while I watch quietly, ideally thinking aloud. Five minutes, often eye-opening.
  4. Real-world signals. Support tickets, app store reviews and analytics (where people drop out of a flow) show where real users struggle.
  5. My own first impression. I note what confused me the first time, before I get used to the feature.

These methods predict problems; they don’t prove them. So in reports I’m clear about the evidence: “2 of 3 colleagues couldn’t find X” or “breaks heuristic 5, one tap deletes the account”. When possible, I recommend a small test with about five real users per round for the riskiest flows.

Learn more: Usability Testing Basics

Open as a page to share

What they're looking for

Practical, low-cost methods (heuristics, guidelines, hallway tests, data), awareness that these predict rather than prove problems, and evidence-based reporting.

Common mistakes

  • Saying usability can't be tested without a UX lab.
  • Reporting personal taste as usability problems.
  • Not knowing any heuristics or guidelines by name.
94

Tell me about yourself.

BehavioralJunior

In shortGive a 60 to 90 second answer in three parts. Present (who you are and what you're doing toward QA), past (one relevant strength with a concrete example) and future (what you want and why this role).

Use present, past, future, and aim for about 60 to 90 seconds.

  • Present: who you are now and what you’re doing toward testing.
  • Past: one or two things from your background that make you a good tester, with a concrete example.
  • Future: what you’re looking for and why this role or company.

Example answer (career changer):

I’m a customer support specialist at a travel booking company, and for the last six months I’ve been training to become a manual tester. I finished a testing course and a practice project where I tested a food delivery app end to end: a test plan, test cases, bug reports and a release recommendation.

In support, a big part of my day is reproducing problems customers report and writing clear tickets for developers. Last year I noticed that several failed-booking complaints came from older Android phones. I collected the details, and the team found a bug in the payment screen. That’s when I realized I enjoy finding the cause more than closing the ticket.

Now I’m looking for a junior QA role in a product team. Your app is used by people on the go, so mobile quality really matters, and I like that your testers work inside the development teams.

Tips

  • Practice from three bullet points, not a script, so it sounds natural.
  • Choose the past example on purpose: it’s the thread they’re most likely to ask about next.
  • End with the role, then stop. A short pause is fine.

Learn more: Tell Me About Yourself and Why QA

Open as a page to share

What they're looking for

Clear, concise communication, a career story that makes sense, and a link between your background and testing. It also gives them threads to ask about next.

Common mistakes

  • Reciting your whole CV or life story in chronological order.
  • Talking for five minutes, or giving a two-sentence answer.
  • Opening with an apology such as "I don't really have experience, but...".
  • Sounding memorized word for word.
95

Why do you want to be a tester?

BehavioralJunior

In shortTell a short, true story about what drew you to testing, say what you enjoy about the work itself (investigating, thinking like a user, making things reliable), and show what you've already done about it.

A strong answer has three parts:

  1. A true moment or pattern that drew you to testing.
  2. What you enjoy about the work itself: investigating, narrowing a vague problem down to exact steps, thinking like the user, helping the team ship with confidence.
  3. What you’ve done about it: a course, a practice project, bugs filed in an open-source project, a beta program.

Example answer:

In retail I was always the one who noticed when the till prices didn’t match the shelf labels, and I’d track down why: a wrong product code, an old promotion. When I learned that testing is basically that for software, I took a course and tested a practice food delivery app end to end. The part I enjoy most is turning “something’s wrong with checkout” into exact steps a developer can fix, and knowing that real people won’t hit that problem.

What to avoid

AnswerWhy it hurts
“QA is easier than programming.”Suggests you don’t respect or understand the role.
“I want to move to development in a year.”Fine to grow, but leading with leaving is a red flag.
“I like technology.”Says nothing about testing.

It’s perfectly fine to mention you’re curious about automation or other directions later. Frame it as growing within quality, not escaping it.

Learn more: Tell Me About Yourself and Why QA

Open as a page to share

What they're looking for

That you understand what testers actually do and chose QA on purpose, with real motivation and evidence that you've acted on it, not that you see it as an easy way into IT.

Common mistakes

  • Saying QA is an easy way into IT or a stepping stone to development.
  • Generic answers like "I like computers" or "I'm detail-oriented".
  • Describing testing as only "finding bugs", without the user or the team.
96

What do you do when a developer says "it's not a bug" or "it works on my machine"?

BehavioralJunior

In shortStay calm and factual, re-check and gather evidence, compare environments, refer to requirements, and involve the product owner if you still disagree.

First, I remember that we are on the same team with the same goal: a good product. So I stay calm and treat it as a puzzle, not a fight.

If they say “it works on my machine”:

  1. Re-check it myself on a fresh build to make sure it is still reproducible.
  2. Compare environments: device, OS, browser, app build, environment (QA vs local), account, test data, network, language settings. Often the difference is right there.
  3. Add evidence: screen recording, exact steps, logs, console errors, the API response.
  4. Offer to show them on my device, or reproduce it together. Five minutes side by side often solves it.

If they say “it’s not a bug, it’s expected”:

  1. Check the source of truth: requirements, acceptance criteria, designs.
  2. If the spec supports me, I point to it politely. If the spec is silent or unclear, it is a question for the product owner, not something the developer and I should decide alone.
  3. If it is truly expected but confusing for users, I may suggest it as an improvement instead.

Example: a developer could not reproduce a crash on the checkout screen. We compared and found I was using an account with an expired saved card, while he used a fresh account. Once I shared the test account, he fixed it in an hour.

And if I was wrong, I simply say so and update the ticket.

Learn more: Bug Life Cycle

Open as a page to share

What they're looking for

Professional, collaborative behavior, evidence-based communication, and a clear path for resolving disagreements without ego.

Common mistakes

  • Getting defensive or turning it into a personal argument.
  • Immediately closing the bug without investigating.
  • Escalating to a manager before talking to the developer.
97

What do you do if there isn't enough time to test everything before a release?

BehavioralMid-level

In shortUse risk-based testing. Prioritize by business impact and likelihood of failure, test critical flows and recent changes first, and clearly communicate what was not tested.

This happens all the time, so I use risk-based testing: focus effort where a failure would hurt most and is most likely.

1. Assess risk for each area using two questions:

  • Impact: how bad is it if this breaks? (money, data, legal, many users)
  • Likelihood: how likely is it to break? (new or changed code, complex logic, history of bugs, many integrations)

2. Prioritize:

High likelihoodLow likelihood
High impactTest first, in depthTest the main paths
Low impactQuick checkSkip or test last

In a shopping app, that usually means: login, search, cart, checkout and payment first, especially if checkout was changed in this release. A rarely used “edit avatar” screen can wait.

3. Use efficient techniques: a smoke test, then exploratory sessions on risky areas, then the most important regression tests (and automated ones, if available).

4. Communicate clearly. I tell the team and product owner what was tested, what was not, and what risk remains. The release decision belongs to the team or product owner, but they should make it with full information.

5. Afterwards, suggest improvements: earlier involvement, more automation for regression, or a feature flag so risky features can be turned off quickly.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

A risk-based prioritization approach, concrete criteria for deciding what to test first, and transparent communication of remaining risk to stakeholders.

Common mistakes

  • Trying to rush through everything superficially.
  • Silently skipping tests without telling anyone.
  • Saying "I would just work overtime" as the only plan.
98

Tell me about a bug you're proud of finding.

BehavioralJunior

In shortUse the STAR structure (Situation, Task, Action, Result) to tell a short story about a real bug, focusing on how you found and investigated it and the impact of fixing it.

Use STAR to keep the answer short and clear (about 1-2 minutes):

  • Situation: the project and context.
  • Task: what you were responsible for.
  • Action: what you did to find and investigate the bug. This is the most important part.
  • Result: the impact, and what you or the team learned.

Example answer:

Situation: I was testing a food delivery app before a big release with a new checkout.

Task: I had to test the payment flow on iOS and Android.

Action: All the scripted tests passed, so I did some exploratory testing around interruptions. I started a payment, and while the spinner was showing, I switched to my banking app to approve it and then came back. On Android the app showed an error, so I tapped Pay again. The order was charged twice. I reproduced it three times, captured logcat and the network requests, and saw that the app sent the payment request again when returning to the foreground.

Result: The developer fixed it the same day and added a check against duplicate payments. It would have hit many users, since most of them approve payments in their banking app. Since then, I always include interruption tests in payment flows.

If you’re a beginner, a bug from a course project, a personal app or crowdtesting is perfectly fine. Just make it real.

Learn more: How to Write a Bug Report

Open as a page to share

What they're looking for

A specific, real example told in a clear structure, showing curiosity, investigation skills, clear communication and impact, not just luck.

Common mistakes

  • Choosing a trivial bug like a typo with no story behind it.
  • Talking only about the bug and not about what you did.
  • Inventing a story you can't answer follow-up questions about.
99

How do you handle a release that has known bugs?

BehavioralMid-level

In shortMake sure every open bug is clearly documented with its risk and impact, give the product owner the information to decide, agree on workarounds and follow-ups, and monitor after release. The tester informs the decision; the business makes it.

Almost every release ships with some known bugs. My job is to make sure the decision is made knowingly.

1. Make the risk visible. I list the open bugs with severity, how many users are affected, platforms, and whether there’s a workaround. For example: “On Android 10 only (3% of users), the profile photo upload fails. Workaround: upload from the web.”

2. Give a clear recommendation. I say what I think, with facts: “I’m comfortable releasing with these four minor bugs. I would not release with the payment rounding bug, because it affects every order.”

3. Let the right person decide. The product owner or release manager makes the go/no-go call. If they accept a risk I flagged, that’s their call, and I make sure it’s documented.

4. Reduce the impact.

  • Feature flags to turn off the broken part.
  • Release notes or support team informed about known issues and workarounds.
  • Fixes planned for the next sprint or a hotfix.

5. Watch after release. Check crash reports, store reviews and support tickets, and verify the fixes when they arrive.

If a critical bug is open, such as data loss or a security issue, I clearly push back and escalate, calmly and with evidence.

Learn more: Severity vs Priority

Open as a page to share

What they're looking for

Understanding that releasing with known minor bugs is normal, that the tester's role is to make risk visible rather than to block alone, and a mature, factual communication style.

Common mistakes

  • Saying you would never allow a release with any bugs.
  • Saying it's not your problem once the bugs are reported.
  • Not documenting what was accepted and why.
100

Tell me about a time you disagreed with a teammate. How did you handle it?

BehavioralJunior

In shortUse a short STAR story about a real work disagreement. Show that you listened, used facts instead of opinions, looked for a solution together, involved the right person if needed, and kept a good relationship afterwards.

Interviewers ask this to see how you disagree, not whether you win. Use STAR (Situation, Task, Action, Result) and keep it under two minutes.

Example answer:

Situation: In a food delivery app, I found that the “Reorder” button added items even if they were no longer on the restaurant’s menu. The developer said it was fine, because checkout would show an error later.

Task: I thought users would be confused and lose trust, and I needed to raise that without turning it into an argument.

Action: First I asked him to explain his reasoning, and I learned the menu API was slow, so checking availability on Reorder would add a delay. Then I showed him a short recording of the user experience: three items added, then an error at payment. I suggested we ask the product owner, since it was really a product decision. We brought both views to her in five minutes, with the trade-off clearly stated.

Result: She chose a middle ground: check availability in the background and show a message on the cart. The developer and I worked well together after that, and I learned to ask about technical constraints before pushing my view.

What makes this work

  • You listened first and understood the other side.
  • You used evidence, not opinions.
  • You moved the decision to the right person.
  • You ended with a result and a lesson.

If you’re new to testing, a disagreement from a school project, a previous job or volunteer work is fine. Just make it real.

Learn more: Bug Life Cycle

Open as a page to share

What they're looking for

A real, specific example, respectful and fact-based communication, willingness to listen and change your mind, a constructive outcome, and what you learned.

Common mistakes

  • Saying you never disagree with anyone.
  • Telling a story where you were completely right and the other person was simply wrong.
  • Picking a personal conflict with no work outcome.
  • Criticizing a former colleague or employer.
101

Testing can be repetitive. How do you handle repetitive work and stay focused?

BehavioralJunior

In shortI accept that some repetition is part of the job, but I keep it effective by varying my approach, using checklists, taking short breaks, and looking for patterns. I also suggest automating truly repetitive checks so my time goes to exploring.

Some repetition is part of testing, like regression runs before every release or checking the same flow on several devices. The risk isn’t boredom itself, it’s missing things because you’re on autopilot.

How I stay sharp

  • Use checklists. They keep me from skipping steps when I’ve done something ten times.
  • Vary the details: different accounts, data, devices or order of steps each run. The goal stays the same, but I see the product from new angles, and that’s how I often find new bugs.
  • Stay curious: I ask “what changed since last time?” and look at those areas more closely.
  • Short breaks between long runs, and I don’t run a big regression late in the day if I can avoid it.
  • Batch similar work, for example all the iPad checks together, to reduce switching.

Make it better for the team

  • If I run the same checks every sprint, I suggest them for automation and help write the scenarios.
  • I remove or merge outdated test cases, so the suite is shorter.
  • I keep test data ready to save setup time.

Example: our release smoke test took me about two hours on three devices. I listed the most stable steps and worked with a developer to automate them. Now I spend that time on exploratory testing of new features, which is where most bugs are found anyway.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

Honest acceptance that repetition exists, practical habits to avoid missing things when tired or bored, curiosity even in routine work, and a proactive attitude toward improving or automating it.

Common mistakes

  • Saying you never find anything boring.
  • Admitting you rush through repetitive tests.
  • Implying repetitive work is beneath you.
102

Tell me about a mistake you made at work and what you learned from it.

BehavioralJunior

In shortPick a real, moderate mistake, own it without excuses, explain what you did to fix it right away, and focus on the concrete change you made afterwards so it doesn't happen again.

Everyone makes mistakes, and interviewers know it. They want to see ownership and learning. Use STAR and spend most of the time on what you did and changed.

Example answer:

Situation: I was testing a fitness app release that included a new workout timer.

Task: I had to test the timer and run the regression checklist on iOS and Android.

Action: I tested the timer carefully on both platforms, but only with the app in the foreground. After release, users reported that the timer stopped when they locked the screen, which is what most people do during a workout. When I saw the reports, I told my lead right away that I had missed that scenario, reproduced it within minutes, and wrote a clear bug report so the developer could start immediately. I tested the hotfix the same day, including locking the screen, switching apps and receiving a call.

Result: The fix was out in two days. Since then, I always include background, lock screen and interruption checks for any feature that runs over time, and I added them to our regression checklist so the whole team covers them.

Tips

  • Choose something real but not disastrous.
  • Own it: “I missed”, not “it was missed”.
  • The lesson should be a concrete habit or change, not just “I’ll be more careful”.

Learn more: Interruptions (Calls, SMS, Alarms)

Open as a page to share

What they're looking for

Honesty and ownership, a calm reaction, quick action to limit the damage, and a specific lesson that changed how you work.

Common mistakes

  • Saying you've never made a mistake.
  • Choosing a "mistake" that is really a strength, like "I work too hard".
  • Blaming others or the situation.
  • Picking a mistake so serious it raises doubts, with no lesson learned.
103

How do you learn a new product or domain quickly when you join a project?

BehavioralJunior

In shortUse the product like a real user, read whatever exists (docs, tickets, support questions), talk to the people who know it, build a simple map of features and risks, and start testing small things early. Asking good questions is part of the learning.

I mix using, reading and asking, and I start contributing early.

1. Use the product like a customer

I sign up, complete the main flows, and try the main job of the app: order food, transfer money, book a trip. I note anything confusing; a fresh pair of eyes notices things the team stopped seeing.

2. Read what exists

  • User stories and recent tickets, especially bugs: they show where the product breaks.
  • Support tickets and app store reviews: they show what users struggle with.
  • Any docs, designs, API documentation and the glossary of domain terms.

3. Talk to people

Short chats with a developer, the product owner and someone from support. Good questions: “What are the most important flows? What breaks most often? What would be the worst bug for us?”

4. Build a simple map

A list or mind map of features, user types, integrations and risky areas. It becomes my guide for testing and grows over time.

5. Start testing small things

I pick a small story or do a focused exploratory session in a low-risk area. Testing is one of the fastest ways to learn how a product really works.

For a new domain like banking or insurance, I also learn the key terms and rules (for example, what a pending transaction is), because many bugs only become visible once you know how things should work.

Learn more: Testing Without Documentation

Open as a page to share

What they're looking for

A proactive, structured learning approach, curiosity, comfort with asking questions, and the ability to become useful quickly rather than waiting to "know everything".

Common mistakes

  • Waiting for formal training before doing anything.
  • Being afraid to ask questions.
  • Reading documents for days without touching the product.
104

How do you handle it when priorities change in the middle of a sprint or your testing is interrupted by urgent work?

BehavioralMid-level

In shortI clarify the new priority and what it replaces, save the state of my current work so I can come back to it, tell the team what will now be delayed, and make sure nothing half-tested is mistaken for finished.

Changing priorities are normal, especially around releases and production issues. What matters is that nothing gets lost and everyone knows the impact.

1. Clarify the change

“Should I stop the checkout testing completely, or finish the critical part first?” I make sure I know what’s more important now and what’s being pushed back, and who decided.

2. Save my state

Before switching, I take two minutes to note what I tested, what’s left, open questions and any suspicious behavior. I update the ticket so it clearly shows “partly tested”, not “done”.

3. Communicate what moves

I tell the team or the product owner: “I’m switching to the production issue. The new filter feature won’t be tested today, so it may not make tomorrow’s build.” That way the delay is a known decision, not a surprise.

4. Focus on the new task

I give the urgent work my full attention instead of switching back and forth all day.

5. Come back and review

When I return, I re-read my notes and check whether anything changed in the meantime, like a new build or a changed requirement.

Example: in the middle of testing a new loyalty program, a payment bug hit production. I noted where I was, moved the ticket back to “In testing” with a comment, and helped reproduce and verify the hotfix. The next morning, my notes let me continue in minutes, and the PM already knew the loyalty feature would be a day late.

Learn more: Working with Jira

Open as a page to share

What they're looking for

Flexibility without chaos, clarifying trade-offs with the person who set the priority, good handover and note-taking habits, and transparent communication about what is now at risk.

Common mistakes

  • Silently dropping the old work, so it looks tested when it isn't.
  • Trying to do everything at once and finishing nothing.
  • Complaining instead of clarifying the trade-off.
105

What are your salary expectations?

BehavioralJunior

In shortResearch a realistic range for junior testers where you live before the interview. Early in the process, politely ask for the range budgeted for the role; if they insist, give your researched range. Be honest and never invent numbers.

There’s no universal right number: junior QA salaries vary a lot by country, city, company and industry. What matters is that you’ve done your research and can answer calmly.

1. Prepare before any call

  • Look at job ads that publish salary ranges. In some countries and US states employers must share a range in the ad or before the interview.
  • Check salary surveys or comparison sites for your country, and official statistics where available.
  • Ask testers in local communities, or recruiters, who usually know the market.
  • Decide your realistic range and your minimum, and whether you mean gross or net, monthly or yearly.

2. Early in the process, ask for their range

I’d like to understand the role a bit better first. Could you share the range you’ve budgeted for this position?

3. If they insist, give your researched range

Based on what I’ve seen for junior QA roles in [city], I’m looking at something between [X] and [Y], depending on the full package and the growth opportunities.

4. Be honest

  • Never invent a current salary or a competing offer.
  • In some places employers aren’t allowed to ask about salary history. You can still politely decline: “I’d rather focus on what’s fair for this role.”
  • If an offer is lower than your research suggests, you can ask once, politely, with reasons.

Learn more: Tell Me About Yourself and Why QA

Open as a page to share

What they're looking for

That your expectations are realistic for the role and market, and that you can talk about money calmly and honestly.

Common mistakes

  • Not having researched anything and naming a random number.
  • Naming a number far above or far below the market out of nerves.
  • Inventing a current salary or a competing offer.
  • Confusing gross and net, or monthly and yearly.
106

Why should we hire you when you have no testing experience?

BehavioralJunior

In shortAgree calmly, then show evidence. Point to the testing work you've done (a practice project, bug reports, a portfolio), the transferable skills from your past roles, and how quickly you learn. No apologies.

Use four steps:

  1. Agree honestly. Don’t argue with the facts.
  2. Reframe with real testing work you’ve done, and offer to show it.
  3. Connect transferable experience from past roles.
  4. Show how you learn, with a fact rather than an adjective.

Example answer:

That’s right, I haven’t worked as a tester yet. But I’ve done the work of testing on a complete practice project: I planned the release by risk, wrote test cases, filed bug reports with steps and evidence, and wrote a go/no-go recommendation. It’s all in my portfolio, and I’d be happy to walk you through one bug report.

In my five years in customer support I reproduced customer problems and wrote tickets developers could act on every day, so the communication side of testing isn’t new to me.

I learned all of this in six months while working full-time, and I’d bring the same approach to learning your product.

Why it works

  • It’s honest, so there’s nothing to catch in follow-up questions.
  • It replaces the missing job title with evidence they can check.
  • It ends with an offer to show work, which moves the conversation to your strengths.

Learn more: A QA CV and Portfolio Without Experience

Open as a page to share

What they're looking for

Confidence without arrogance, honest self-assessment, concrete evidence of testing skill, and a sense that you'll learn fast and communicate well.

Common mistakes

  • Apologizing or saying you "only" did a course.
  • Arguing that you actually have lots of experience, or overstating practice work.
  • Answering with adjectives ("I'm a fast learner, very motivated") and no evidence.
107

Do you have any questions for us?

BehavioralJunior

In shortAlways say yes and ask two or three genuine questions about the work, the team and the next steps, for example how testers and developers work together, what a great first three months look like, and how releases are tested.

Always have two or three questions ready, and adapt them to who you’re talking to. The answers also help you decide if you want the job.

About the work

  • What does a typical week look like for a tester here?
  • How do testers and developers work together? When does QA first see a feature?
  • Is testing mostly manual, automated or both? Is there a path toward automation for someone interested?
  • How are releases tested, and who decides whether something ships?

About the team and growth

  • How many testers are on the team, and who would I learn from?
  • What would a great first three months look like in this role?
  • What’s the biggest quality challenge the team has right now?

About the process

  • What are the next steps, and when can I expect to hear back?

Match the question to the person

InterviewerGood topics
RecruiterProcess, timeline, team structure, salary range
Tester or QA leadTest process, tools, releases, learning
Developer or product ownerCollaboration, how bugs are handled, what they value in a tester
ManagerExpectations, growth, how success is measured

Benefits and vacation are fair questions, best asked with the recruiter or at the offer stage.

Learn more: How QA Hiring Works

Open as a page to share

What they're looking for

Real interest in the role and in how quality works in the team, plus the judgment to ask about things that matter for doing the job well.

Common mistakes

  • Saying "No, I think you covered everything."
  • Asking something the job ad or website already answers.
  • Leading with vacation days or perks in the first technical interview.
108

You join a company building a new product from scratch. How do you create the test strategy?

Strategy and riskSenior

In shortStart from the product's risks and the team's constraints, not from a template. Agree on quality goals, what each test level covers, the manual/automation split, environments, devices and release criteria, then keep it short and revisit it as the product grows.

I don’t start by writing. I start by listening, because a strategy is only useful if it fits this product, this team and this stage.

1. Understand the product and its risks (first 1-2 weeks)

  • Who are the users, and what would hurt them most? Losing money, losing data, a broken sign-up, a privacy leak?
  • What are the business goals for the first release: speed to market, a pilot with one big customer, an app store launch?
  • Is there regulation? Payments, health data, accessibility laws in the target markets.
  • Which parts are complex or new for the team, such as a third-party payment provider or offline sync?

2. Make the key decisions with the team

  • Quality goals: what “good enough to release” means here, in plain words.
  • Test levels: what developers cover with unit and API tests, what I cover with exploratory and end-to-end testing, and where we need contract or integration tests.
  • Manual vs automation: in an early product the UI changes constantly, so I’d invest early in API checks and a small smoke suite, and keep the rest exploratory until flows stabilize.
  • Environments and test data: at least one stable test environment, a way to create accounts and orders quickly, and production-like data that is safe to use.
  • Platforms: an initial device and browser policy based on the target market, to be replaced with real analytics after launch.
  • Bugs and releases: how bugs are triaged, which severities block a release, who makes the go/no-go call.

3. Keep it short and alive

I write it as one or two wiki pages, review it with the developers and product owner, and put a date on it to revisit after the first release, because a pre-launch strategy and a strategy for a product with 100,000 users are different things.

Example: on a new fintech app, the biggest risks were the card top-up flow and identity verification. We agreed that every change there needed API tests plus a manual end-to-end pass on real devices, while profile and settings screens only got exploratory testing. That one decision shaped most of our effort.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

A risk-driven approach that starts with understanding the business and users, clear decisions about who tests what and at which level, realistic trade-offs for an early-stage product, and a strategy that is agreed with the team rather than written alone.

Common mistakes

  • Copying a 40-page template before understanding the product.
  • Treating the strategy as a QA-only document instead of a team agreement.
  • Planning heavy UI automation for screens that will change every week.
  • Never revisiting it after the first version.
109

Walk me through how you actually run risk-based testing when you have a fraction of the time you need.

Strategy and riskSenior

In shortI identify risks together with product and developers, score them by impact and likelihood, map test depth to the score, test in risk order, and report coverage in terms of risk so the team knows exactly what remains uncovered.

Risk-based testing is easy to say and harder to do well. Here is how I run it.

1. List the risks with the people who know them (30-60 minutes)

I run a short session with a developer and the product owner. Developers know where the code is fragile; the product owner knows what would hurt the business. We list risk items as concrete statements, for example “a user is charged but the order is not created”, not just “checkout”.

2. Score impact and likelihood

  • Impact: money, data loss, legal exposure, number of users affected, reputation.
  • Likelihood: what changed in this release, code complexity, new integrations, how many bugs this area had before, and production incidents.

A simple 1-3 scale for each is enough. The point is the conversation, not precise numbers.

3. Map the score to test depth, not just order

RiskWhat I do
HighScripted checks plus exploratory sessions, real devices, negative and edge cases
MediumMain paths and the riskiest edges
LowA quick smoke check, or nothing, stated openly

4. Re-evaluate as I go. If I find three bugs in an area I rated “medium”, its likelihood just went up, and I shift time there.

5. Report in terms of risk. “All high risks are covered and pass. Two medium risks were only partly tested: currency formatting in Arabic and the iPad layout. Low risks not tested: settings and help pages.”

That last step is what makes it risk-based testing instead of just running fewer tests. People can only accept a risk they can see.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

A repeatable process rather than a slogan, involving other people in judging risk, using change and incident data for likelihood, adjusting depth (not just order), and reporting residual risk clearly.

Common mistakes

  • Rating risk alone, from gut feeling only.
  • Using risk only to order tests, while still trying to run everything at the same depth.
  • Not re-evaluating risk when new information (like a bug cluster) appears.
  • Reporting "80% of tests passed" instead of what risk is left.
110

How do you decide what NOT to test, and how do you get the team to agree with it?

Strategy and riskSenior

In shortI make the out-of-scope list explicit, explain the reasoning in terms of risk and cost, and get the product owner to confirm it in writing. Skipping something openly is a decision; skipping it silently is a gamble.

Every test plan leaves things out. The skill is doing it on purpose and out loud.

What I usually consider leaving out

  • Areas that didn’t change and have no shared code with what did change, and have a clean history.
  • Things already covered well at another level, such as validation rules covered by API or unit tests.
  • Low-impact, low-usage features: if analytics show 0.5% of users open a screen and a failure would be cosmetic, it gets a smoke check at most.
  • Platform combinations outside the agreed device and browser matrix.
  • Third-party systems we don’t own, beyond checking our integration with them.

How I get agreement

  1. Write it down in the test plan under “Out of scope”, with one line of reasoning per item.
  2. Frame it as a trade-off, not a request: “If we test the old export screen, we lose half a day on the new checkout. I recommend skipping export because it hasn’t changed since March.”
  3. Ask the product owner to confirm. A quick “agreed” on the ticket or in the planning meeting is enough. It becomes the team’s decision, not mine.
  4. Name the trigger to revisit: “If the export code is touched, it moves back into scope.”

Example: for a redesign of an e-commerce home page, I proposed not testing the legacy gift card flow on old Android versions, which had a tiny share of users and no code changes. The PM agreed, and we spent the time on the new product carousel, where we found a crash on small screens.

If something I chose not to test breaks later, the written decision makes the retro about improving our risk judgment, not about blame.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

Comfort with deliberately leaving things untested, clear criteria for it, and the communication skill to make it a shared, documented decision that can be revisited.

Common mistakes

  • Claiming you test everything.
  • Quietly skipping areas without telling anyone.
  • Asking for approval with no reasoning, so stakeholders say "test everything".
  • Never revisiting the list when the situation changes.
111

You have a limited budget and need to choose a device and OS matrix for a mobile app. How do you decide?

Strategy and riskSenior

In shortStart from the app's own analytics, fill gaps with public market share data for the target markets, then add devices for specific risks such as the oldest supported OS, small screens and low memory. Tier the devices, combine a few real phones with a cloud device farm, and review the matrix regularly.

You can’t buy every phone, so the goal is maximum risk coverage per dollar.

1. Data first

  • The app’s own analytics (for example Firebase, App Store Connect, Google Play Console): top devices, OS versions, screen sizes, and how that differs by market.
  • If the app is new, public market share for the target countries (for example StatCounter) as a starting point. A banking app launching in one country should not use a global average.
  • Crash and review data: devices that already cause trouble.

2. Add risk-based picks that analytics alone would miss

  • The oldest supported OS version on each platform, and the newest (plus the public beta before a major release).
  • A small screen and a large screen or tablet if supported.
  • A low-end Android with little RAM, because memory pressure and slow CPUs reveal bugs flagships hide.
  • Key manufacturers with custom Android skins, such as Samsung or Xiaomi, because of battery and background restrictions.
  • Hardware the app relies on: NFC for payments, a specific camera setup, biometrics.

3. Tier it

TierDevicesUsed for
14-6 real devices covering most usersEvery release, full regression of critical flows
2Wider set, often in a cloud device farmSmoke and key flows before major releases
3Emulators and simulatorsLayouts, early checks, many screen sizes

4. Spend wisely. A few mid-range and older real phones are often better value than one new flagship. A cloud farm such as BrowserStack or Firebase Test Lab covers breadth without buying hardware.

5. Review it every quarter or after each major OS release, and write the policy down so “why don’t we test on X?” has a clear answer.

Learn more: Device Fragmentation

Open as a page to share

What they're looking for

A data-driven, tiered matrix with clear reasoning, a mix of real devices, emulators and cloud farms, budget awareness, and a habit of reviewing the matrix as usage changes.

Common mistakes

  • Choosing devices based on what the team happens to own.
  • Only buying the latest flagship phones.
  • Treating global market share as more important than your own users' data.
  • Building the matrix once and never updating it.
112

How would you approach testing a big migration or redesign, for example moving to a new backend or rebuilding the app?

Strategy and riskSenior

In shortTreat "it still works like before" as the main requirement. Inventory existing behavior, compare old and new side by side, test data migration and upgrade paths carefully, plan a gradual rollout with a way back, and watch production closely after the switch.

The hardest part of a migration is that most of the requirements are unwritten: the old system is the spec, including behavior nobody remembers adding.

1. Inventory what exists

  • Map current features and flows, including edge cases: discount rules, rounding, time zones, deep links, emails, push notifications, integrations.
  • Use analytics and support tickets to see what users actually do, and talk to support about “weird” behavior customers rely on.
  • Decide with the product owner which differences are intended (the redesign) and which would be regressions.

2. Compare old and new

  • Run the same scenarios in both systems and compare results: prices, totals, search results, generated documents.
  • For backend migrations, compare API responses for the same inputs. Developers can often automate this comparison, and I focus on reviewing the differences.

3. Test the data and the upgrade path

  • Existing accounts with real-shaped data: very old accounts, long names, special characters, users with thousands of orders.
  • Upgrade from the old app version to the new one: are users still logged in, are settings, drafts and offline data kept?
  • What happens to users who don’t update the app but hit the new backend?

4. Plan the rollout with a way back

  • Prefer a gradual switch: a feature flag, a percentage of traffic, or one market first.
  • Ask early: how do we roll back, and what happens to data written in the new system if we do?
  • Agree on what to monitor in the first days: error rates, failed payments, support tickets.

Example: in a checkout migration, comparing order totals between the old and new system revealed that the new one rounded tax per line instead of per order. It was a few cents per order, but it would have broken invoices for business customers.

Learn more: Install, Update and Uninstall

Open as a page to share

What they're looking for

Awareness that migrations hide undocumented behavior, a plan for data and upgrade testing, comparison testing against the old system, and a rollout and rollback plan rather than a single big-bang release.

Common mistakes

  • Testing only the new screens and assuming old behavior carries over.
  • Ignoring existing user data, sessions and saved settings.
  • Not asking how to roll back if the switch goes wrong.
  • Treating it as a normal sprint of feature testing.
113

How do you test a feature when the requirements are vague or missing?

Strategy and riskSenior

In shortFind other sources of truth, write my assumptions down and get them confirmed, explore the feature to learn how it behaves, and report questions separately from bugs. I also push the team to fix the requirements problem early next time.

Vague requirements are normal, especially in fast-moving teams. Waiting for a perfect spec isn’t an option, but guessing silently isn’t either.

1. Find other sources of truth (oracles)

  • Designs, the ticket’s comments, Slack threads, the API documentation.
  • Comparable products: how the existing web version, a competitor or the platform convention behaves.
  • Consistency with the rest of our own app.
  • The people: a 10-minute call with the product owner and developer clears up more than a day of guessing.

2. Write my assumptions down and get them confirmed

I list them in the ticket: “I assume a promo code can’t be combined with gift cards. I assume the limit is per account, not per device.” Then I ask the product owner to confirm or correct them. This turns hidden assumptions into acceptance criteria.

3. Explore to learn, in short sessions

Time-boxed exploratory sessions with a charter, for example “explore the referral flow with new and existing users to discover the rules for rewards”. I note what the feature does, and that becomes lightweight documentation.

4. Separate bugs from questions

Clear failures (crashes, data loss, inconsistencies with confirmed rules) are bugs. “Should it do X or Y?” is a question for the product owner, not a bug report. Mixing them creates noise and arguments.

5. Fix the cause, not only the feature

As a senior, I raise it in the retro and suggest something concrete: testers joining refinement, acceptance criteria as a “definition of ready” item, or a short “three amigos” talk before work starts.

Learn more: Testing Without Documentation

Open as a page to share

What they're looking for

Initiative instead of waiting, use of test oracles beyond the spec, making assumptions explicit and confirmed, separating bugs from open questions, and improving the process for the future.

Common mistakes

  • Refusing to test until there's a full specification.
  • Testing based on your own assumptions without telling anyone.
  • Logging every unclear behavior as a bug.
  • Fixing the symptom without addressing why requirements keep being vague.
114

Which quality metrics do you find useful, and which can do more harm than good?

Strategy and riskSenior

In shortMetrics are useful when they inform decisions and track trends, like escaped defects, defect removal efficiency (DRE), crash-free users and lead time. They become harmful when they turn into targets for individuals, like bug counts per tester or test pass rate, because people then optimize the number instead of quality (Goodhart's law).

I like metrics that help the team make a decision or spot a trend, and I’m careful with any metric that becomes a target for people.

Goodhart’s law is the key idea, often phrased as “when a measure becomes a target, it ceases to be a good measure.” If testers are rewarded for bug counts, you get many tiny duplicate bugs. If the team is judged on pass rate, failing tests get skipped or rewritten until they pass.

Metrics I find useful (as trends, with context)

  • Escaped defects: bugs found in production, ideally grouped by severity and by why they escaped. This is the closest to what users experience.
  • DRE (defect removal efficiency; ISTQB uses a similar measure called defect detection percentage): bugs found before release ÷ (bugs found before release + bugs found after release), for a defined period. Useful as a trend, but it depends on how you count, and it can look great simply because production bugs aren’t reported.
  • Crash-free users or sessions and app store ratings for mobile apps.
  • Lead time and the four DORA metrics (deployment frequency, lead time for changes, change failure rate, and time to restore service). They measure the delivery system as a whole, not testers.
  • Time from bug report to fix for high-severity bugs.

Metrics that are risky on their own

  • Number of bugs found per tester: rewards quantity, punishes testers on stable areas.
  • Test pass rate: 98% passing says nothing if the 2% failing are all in checkout, or if the tests don’t cover the risky parts.
  • Number of test cases or “test coverage %” without saying coverage of what.
  • Bugs per developer: destroys trust and makes people argue about bug reports.

How I use them: few metrics, shown as trends, discussed by the team, and always with a story: “Escaped bugs went up this quarter; four of six came from the new payment provider, which we can’t test in staging. Here’s what I propose.”

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

A nuanced view, accurate definitions, awareness of Goodhart's law and of how metrics get gamed, a preference for trends and outcome metrics over activity counts, and always pairing numbers with context.

Common mistakes

  • Listing metrics without saying what decision each one supports.
  • Using bug counts to compare testers or developers.
  • Presenting pass rate as a measure of quality.
  • Getting definitions wrong, for example for DRE.
115

When does test automation pay off, and how do you as a manual tester work with automation engineers?

Strategy and riskSenior

In shortAutomation pays off for stable, frequently run, high-risk checks, especially at the API level. I help choose what to automate first, write clear scenarios to turn into scripts, treat flaky tests as bugs, and make sure automation frees time for exploratory testing instead of replacing it.

Automation is an investment: it pays off when the time saved by running a check many times is larger than the cost of building it and keeping it working.

What I’d automate first

  1. A small smoke suite of the critical paths (login, search, checkout), run on every build.
  2. API checks for business rules: they’re faster and far more stable than UI tests.
  3. Data-heavy, repetitive checks: many locales, price combinations, validation rules.
  4. Regression for escaped bugs that would be expensive to see again.

New features that change every sprint, visual and usability judgment, and one-off checks stay manual.

How I work with automation engineers

  • I bring the “what” and “why”: prioritized scenarios with clear steps, data and expected results, plus the risk behind each one.
  • They bring the “how”: the right level (unit, API, UI), framework design, stable selectors. I ask developers to add accessibility labels or test IDs where needed.
  • We review together which manual cases can be retired once automated, so nothing is run twice.
  • I review failures with them: is it a product bug, a test bug or an environment issue?

Flaky tests

A flaky test is a test that passes and fails without any change in the code. It’s worse than no test, because people learn to ignore red builds. Our rule was: quarantine it right away, open a ticket, and fix or delete it within the sprint. Sometimes the “flakiness” is a real race condition in the app, so I investigate before we blame the test.

Keeping exploratory testing

The best outcome of automation is that I spend less time on repetitive checks and more time exploring the risky, new and weird parts. I make that explicit in planning, so the saved time doesn’t silently disappear.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

A cost-benefit view of automation (build plus maintenance vs runs saved), sensible first candidates, a clear position on flaky tests, and a collaborative relationship in which manual testing keeps its value.

Common mistakes

  • Seeing automation as a threat, or as a replacement for all manual testing.
  • Starting with long, fragile end-to-end UI tests.
  • Ignoring flaky tests until nobody trusts the suite.
  • Automating a test case without first questioning whether it's still valuable.
116

How do you make accessibility and security part of the process instead of an afterthought?

Strategy and riskSenior

In shortBuild them into the existing workflow, from acceptance criteria and design reviews to everyday test checklists, definition of done and the release checklist, with specialists for deeper audits. Small, regular checks by everyone beat one big audit before launch.

Both topics fail in the same way: they’re “important”, but nobody owns them until a complaint, an audit or an incident arrives. My approach is to put them into the steps the team already follows.

Accessibility

  • Target: WCAG 2.2 level AA is the usual target, and it’s what many laws and contracts refer to.
  • Refinement: add accessibility to acceptance criteria. “All controls have labels for screen readers; error messages are announced.”
  • Design reviews: check contrast (4.5:1 for normal text, 3:1 for large text and UI parts), touch target sizes, focus order and text scaling before code is written.
  • Testing: a short accessibility checklist on every story: keyboard-only on web, VoiceOver and TalkBack on key flows, 200% text size, plus an automated scanner (such as axe or Lighthouse) to catch the easy issues. Scanners find only part of the problems, so manual checks stay.
  • Definition of done: a story isn’t done if it breaks the checklist.

Security

  • Know the common risks: the OWASP Top 10 is an awareness list of the most critical web application security risks, and OWASP MASVS describes security requirements for mobile apps. I use them to guide test ideas, not as a certification.
  • Everyday checks a tester can do: access control (can I see another user’s order by changing an ID?), session handling after logout, sensitive data in logs, URLs or screenshots, input validation, rate limiting on login and OTP.
  • Threat questions in refinement: “What if someone calls this API directly? What if they replay this request?”
  • Specialists for depth: dependency scanning in the pipeline, and penetration tests by security professionals before major launches.

Making it stick

Short training for the whole team, a champion in each team, and showing real examples of what we found. One demo of using the app with a screen reader convinces more people than any document.

Learn more: Accessibility Basics (WCAG) and Security Basics for Testers

Open as a page to share

What they're looking for

Concrete ways to embed both topics into each stage of development, accurate references (WCAG, OWASP), realistic limits of what a manual tester can cover, and how to win support from the team and management.

Common mistakes

  • Treating accessibility or security as a one-time audit at the end.
  • Claiming automated scanners alone are enough.
  • Presenting yourself as a security expert or penetration tester when you aren't.
  • Getting the standards wrong, for example calling OWASP Top 10 a certification.
117

How do you mentor a junior tester?

LeadershipSenior

In shortStart from where they are, give them real work with a safety net, pair with them often, review their bug reports and test ideas with specific feedback, and gradually give them more ownership. The goal is independent thinking, not copies of my checklists.

1. Start with a conversation. What do they already know, how do they like to learn, what are they nervous about? A career changer from customer support has great user empathy; a CS graduate may know the tech but not how to look for trouble.

2. Learn by doing, with a safety net

  • First weeks: pair testing on real stories. I think out loud: “This field takes a date, so I’m curious about time zones and February 29.”
  • Then: they test a low-risk story alone, and we review it together.
  • Later: they own a feature area, and I’m available for questions.

3. Review their work, specifically and kindly

  • Bug reports: “Your steps are clear. The title could say where and what, like ‘Cart: total not updated after removing coupon’.”
  • Test ideas: before they start, they spend 10 minutes listing ideas, and I ask “what else could go wrong?” rather than handing them my list.
  • Praise good things just as specifically as I point out gaps.

4. Teach judgment, not only rules

Why does this bug matter more than that one? Why test this device and not that one? I share the reasoning behind decisions and involve them in triage and planning, so they see how trade-offs are made.

5. Make it safe to ask and to be wrong. I tell them about mistakes I’ve made, like a bug I missed and what I learned. Juniors who are afraid to ask lose days being stuck.

6. Grow their independence. Short weekly check-ins, a few learning goals (for example API testing with Postman, or using adb), and visible credit when they find something good, like naming them in the sprint review.

Success for me is when they start asking questions I hadn’t thought of.

Learn more: Exploratory Testing

Open as a page to share

What they're looking for

A structured but personal approach, learning by doing, specific and kind feedback, building judgment (not just rules), psychological safety, and gradually increasing responsibility.

Common mistakes

  • Handing over a pile of documents and leaving them alone.
  • Fixing their work yourself instead of explaining.
  • Only teaching rules and templates, never the reasoning behind them.
  • Giving feedback only when something goes wrong.
118

A developer or product manager keeps rejecting your bugs. How do you handle it?

LeadershipSenior

In shortTreat it as a pattern to understand, not a fight. Look at which bugs get rejected and why, improve evidence and clarity on my side, agree on shared definitions of a bug and of severity, and move disagreements about expected behavior to whoever owns the requirements.

When it happens once, it’s a disagreement. When it keeps happening, it’s a signal about our process or communication, and I want to understand it.

1. Look at the data, including my own part

I go through the last 15-20 rejected bugs and group them:

  • Couldn’t reproduce: my steps, data or environment details may be missing.
  • “Works as designed”: the requirements are unclear, or I’m testing against my own expectations.
  • “Not important”: we disagree on severity or priority.
  • Duplicates: I need to search better before reporting.

Sometimes I find that a third of them were weak reports. I fix that first, and it builds credibility.

2. Talk privately, with curiosity

“I’ve noticed a lot of my bugs get closed lately. I’d like to understand how you see them, so I report what’s useful to you.” Often there’s context I’m missing: deadline pressure, a tech-debt plan, or a PM who sees cosmetic bugs as noise.

3. Agree on shared rules

  • What counts as a bug vs an improvement vs a question.
  • What each severity means, with examples from our product.
  • That “works as designed” needs a reference, and unclear expected behavior goes to the product owner, not decided between developer and tester.
  • A short triage meeting for disputed bugs.

4. Make the impact visible

For bugs I still believe in, I describe user impact, add evidence such as support tickets or analytics, and suggest a different priority instead of insisting on “must fix now”. A rejected bug that later shows up in customer complaints makes the point better than any argument.

5. Escalate only if the pattern continues and real risk is being ignored, and then about the process, not the person.

Learn more: How to Write a Bug Report

Open as a page to share

What they're looking for

Self-reflection first, data on which bugs are rejected and why, a private and constructive conversation, agreed triage rules, and maturity about accepting that some reports were indeed not bugs.

Common mistakes

  • Assuming the other person is simply difficult.
  • Escalating to managers before talking one to one.
  • Reopening rejected bugs again and again without new information.
  • Taking rejections personally.
119

QA is seen as the bottleneck in your team. What would you change?

LeadershipSenior

In shortFind out where work actually waits, then make quality a team responsibility, involve testing earlier, split work smaller, automate repetitive checks, help developers test, and focus manual effort by risk. A bottleneck is usually a flow problem, not a "testers are slow" problem.

I take it seriously and don’t get defensive. Even if the cause isn’t the testers, the experience of waiting is real.

1. Find where work actually waits

I look at the board or the ticket history: how long stories wait in “Ready for test”, how long they’re in testing, how often they bounce back, and when in the sprint they arrive. Usually the pattern is clear: most stories arrive in the last two days, many come back with basic bugs, and environments are unstable.

2. Changes on the team side

  • Smaller stories, handed over continuously instead of in a big batch.
  • Limit work in progress: developers help finish and test stories before starting new ones.
  • Quality is a team job: developers run a shared checklist and the smoke tests before handing over; anyone can help test.
  • Stable test environments and test data, which often waste more time than testing itself.

3. Changes on the QA side

  • Earlier involvement: acceptance criteria and test ideas before coding, so fewer bugs are created.
  • Risk-based depth: not every story needs the same amount of testing. A copy change gets a quick check; a payment change gets the full treatment.
  • Automation for repetitive regression, so manual time goes to new and risky work.
  • Less ceremony: lightweight test notes or checklists instead of detailed scripts nobody reads.

4. Measure and talk about it

We pick one or two signals, for example time in “Ready for test” and the number of stories rolling over, and review them in retros.

Example: in one team, half of the “QA delay” was stories waiting for a deployment to the test environment. Automating deployments to a preview environment saved more time than any change to how we tested.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

A diagnostic, data-based approach, systems thinking (work in progress, batch size, handoffs), team ownership of quality, concrete changes on both the QA and the team side, and no defensiveness.

Common mistakes

  • Getting defensive or blaming developers for late handovers.
  • Proposing only "hire more testers".
  • Lowering quality by quietly testing less.
  • Making many changes at once without measuring anything.
120

You join a team that has no documentation and no test process. What do you do in your first 30 to 90 days?

LeadershipSenior

In shortLearn first, then fix the biggest risks, then build a lightweight process with the team. Map the product and its risks, start testing and reporting bugs right away, create a smoke checklist and simple bug workflow, and grow it based on what actually hurts.

I’d split it into three phases. The exact timing depends on the team, but the order matters.

Days 1-30: learn and be useful

  • Talk to people: developers, product, support, sales. Ask: “What breaks most? What are you afraid of before a release? What do customers complain about?”
  • Use the product like a customer and build a feature map: main flows, integrations, platforms.
  • Look at data: support tickets, crash reports, app store reviews, the bug backlog if one exists.
  • Start testing immediately on current work and report bugs clearly. Good bug reports in week one earn trust faster than any plan.

Days 30-60: cover the biggest risks

  • A smoke checklist for the critical flows, run before every release.
  • A simple bug workflow agreed with the team: where bugs go, which fields matter, what each severity means.
  • Test notes for the riskiest areas, written as I explore. Lightweight docs that grow with use.
  • A basic device and browser list based on analytics.

Days 60-90: build the process with the team

  • Join refinement and add acceptance criteria to stories.
  • Turn the smoke checklist into a prioritized regression suite, and identify the first candidates for automation.
  • Agree on release criteria and who makes the go/no-go call.
  • Write a one-page test strategy and review it with the team.

How I introduce change: one improvement at a time, always tied to a problem the team already feels (“we had two broken releases last month; a 20-minute smoke check would have caught both”), and I ask for their input instead of announcing rules.

Learn more: Testing Without Documentation

Open as a page to share

What they're looking for

A phased plan, delivering value early instead of writing documents for weeks, building relationships, introducing the minimum useful process with the team's buy-in, and prioritizing by risk.

Common mistakes

  • Arriving with a heavy process from a previous company and imposing it.
  • Spending the first month only writing documentation.
  • Criticizing how things were done before.
  • Trying to document and test everything at once.
121

How do you build a regression suite that people actually run, instead of one that's ignored?

LeadershipSenior

In shortKeep it small, prioritized and tied to real risk. Build it from critical flows and escaped bugs, write short checks that anyone can follow, tag tests so the team can pick a subset that fits the time available, automate the stable core, and prune it regularly.

Regression suites usually die for the same reasons: they’re too long, out of date, and nobody knows which parts matter. So I design against those problems from the start.

1. Build it from risk, not from history

  • Critical user journeys first: sign up, login, search, checkout, the app’s main job.
  • Tests for escaped bugs and areas with a history of breaking.
  • Business rules where a failure costs money or trust.

Not every test case from every story belongs here.

2. Make tests easy to run

  • Short checks with a clear expected result, more like a good checklist than a 20-step script.
  • Test data ready to use: accounts, cards, coupons listed in the suite.
  • Tags: area, priority (P1-P3), platform, and “automated” where applicable.

3. Offer subsets that fit real time

SuiteTimeWhen
Smoke~15-30 minEvery build
Risk-basedA few hoursNormal release: P1 plus areas touched by changes
Full1-2 daysMajor releases, big refactors

The numbers are an example; what matters is that the team has an option that fits the time they really have.

4. Share ownership

Developers and other testers can run it, and anyone can propose changes. I review it with the team every quarter.

5. Automate the stable core, then remove those cases from the manual run so nothing is done twice.

6. Prune constantly. When a feature changes, its tests change in the same sprint. Tests that never find anything and cover low-risk areas get merged or removed.

Learn more: Regression and Smoke Suites

Open as a page to share

What they're looking for

Understanding why suites get ignored (too big, outdated, unclear), design choices that make a suite usable, subsets matched to time and change, shared ownership, and continuous pruning.

Common mistakes

  • Converting every test case ever written into the regression suite.
  • Writing steps so detailed that nobody wants to read them, or so vague that nobody can follow them.
  • Having only one "full regression" option that takes days.
  • Owning the suite alone, so it dies when you're on vacation.
122

How do you present testing status to non-technical stakeholders?

LeadershipSenior

In shortLead with the answer they need, such as whether we're on track and what the risks are, in business language. Use a short summary with a clear status, the few issues that matter and their impact, what's not tested, and what I need from them. Keep the detail available, not upfront.

Non-technical stakeholders don’t need to know how many test cases passed. They need to know: Can we release? What could go wrong? Do you need anything from me?

The format I use (fits on one screen)

  1. Overall status in one line: “On track for Thursday, with one risk.”
  2. What’s ready: the features that are tested and working, in their language. “Customers can now pay with Apple Pay and Google Pay.”
  3. Issues that matter, each with impact and plan: “Some Android users can’t save a new address. About 3% of users, a fix is expected tomorrow. If it slips, we can release without the new address screen.”
  4. Not tested or limited, and why: “We couldn’t test with the real bank in Germany; we’ll monitor it closely after launch.”
  5. What I need: a decision, a resource, or nothing.

Habits that help

  • Translate: not “a race condition in the sync service”, but “if you edit on two devices at once, one change can be lost”.
  • Use a simple status color per feature or risk, with one sentence explaining any amber or red.
  • Be honest early. Bad news on Monday is a planning problem; bad news on release day is a crisis.
  • Keep the details linked (bug list, test report) for anyone who wants to dig in.
  • Same format every time, so people learn where to look.

Numbers can help when they tell a story, like “open critical bugs: 3 last week, 0 now”, but I always put the meaning next to the number.

Learn more: Writing a Test Plan

Open as a page to share

What they're looking for

Audience awareness, translating technical findings into business impact, honesty about risk and uncertainty, a consistent and simple format, and asking for decisions when needed.

Common mistakes

  • Leading with test case counts and pass percentages.
  • Using jargon like "regression", "P2" or "flaky" without explanation.
  • Hiding bad news or making everything sound green.
  • Giving status without saying what decision or help is needed.

Coming next

Ready for test automation?

We're preparing an Automation track that takes you from manual test cases to automated tests. Join the list for early access and new interview questions.

No spam. Unsubscribe with one click. Your email is stored by Kit, our newsletter service.

Esc

Type to search the whole site.