QA Automation Engineer interview prep
A spaced-repetition deck of 326+ QA Automation Engineer interview questions — organised by topic and difficulty, and resurfaced right before you'd forget. Preview a few cards below, then choose access to study the whole track on an Anki-style SM-2 schedule.
7 days free on monthly or yearly · every feature included.
What's covered
Every topic in this track, grouped the way you'd study it.
Testing Theory
15 cardsTest Design Techniques
11 cardsBug Reports & Process
11 cardsHTTP, API & Client-Server
13 cardsWeb, Mobile & Security
9 cardsSelenium & Playwright
11 cardsAutomation Patterns & Frameworks
12 cardsPractice Cases & Puzzles
10 cardsPython
122 cardsDatabases
42 cardsDevOps & Infra
35 cardsBehavioral
35 cardsSample questions
A few cards from the deck — reveal each answer, then choose access to study the full set on a schedule.
What is the difference between verification and validation?
What is the difference between verification and validation?
Short answer: Verification answers "are we building the product right" — does it conform to the spec and requirements. Validation answers "are we building the right product" — does it solve the user's actual problem. Verification is about matching documents, validation is about matching expectations.
In depth:
- Verification — checking an artifact against its specification. Often static: requirements review, code inspection, cross-checking against the spec. Answers: "did we build it to the blueprint?".
- Validation — checking that the finished system meets the user's need. Usually dynamic: real execution, acceptance testing, a demo to the customer. Answers: "was this blueprint the right one?".
- Order — verification comes earlier and is cheaper, validation is closer to release.
| Criterion | Verification | Validation |
|---|---|---|
| Question | building it right? | building the right thing? |
| Reference | specification | user needs |
| Type | usually static | usually dynamic |
| Example | review, inspection | acceptance test, demo |
⚠️ Common mistake: rattling off examples ("a review is verification") without the two crisp formulations "are we building it right" / "are we building the right thing." That's exactly what the interviewer is listening for.
When is a lightweight checklist enough instead of full test cases?
When is a lightweight checklist enough instead of full test cases?
Short answer: A full test case with preconditions, steps, and expected result is needed where reproducibility and traceability matter: audit, compliance, complex multi-step flows. A lightweight checklist is enough for regression on stable features and exploratory sessions, where speed matters more.
In depth:
- Test case — a formal document anyone can replay step by step; expensive to write and maintain.
- Checklist — a list of what to verify, without detailed steps; fast to draft, flexible to use.
- Selection criterion — maintenance cost versus the need for rigor and auditability.
| Test case | Lightweight checklist | |
|---|---|---|
| Detail | steps + expected result | "what to check" items |
| When | audit, compliance, complex flows | regression on stable, exploratory |
| Cost | high | low |
| Reproducibility | exact | depends on the engineer |
⚠️ Common mistake: dragging heavy formal test cases into places where a checklist suffices and drowning in documentation upkeep instead of actual testing. The interviewer wants to hear you justify the choice under time pressure.
Describe the bug lifecycle: what statuses does a defect go through?
Describe the bug lifecycle: what statuses does a defect go through?
Short answer: New → Assigned → In Progress → Fixed → Retest → Closed. That's the main flow, but it has important branches: Reopened (the bug came back after the fix), Rejected (not a bug), Duplicate (already filed), Deferred (postponed). The key to the answer is naming not just the line but the branches, and who performs each transition.
In depth:
- New — the tester filed the bug.
- Assigned → In Progress — the lead assigns a developer, who picks it up.
- Fixed — the developer fixed it and handed it back for verification.
- Retest → Closed — the tester re-verifies on the new build and closes it.
- Branches — Reopened (tester), Rejected/Duplicate (developer or lead), Deferred (PM postpones it).
New ──► Assigned ──► In Progress ──► Fixed ──► Retest ──► Closed
(QA) (lead) (dev) (dev) (QA) (QA)
│ │ failed
▼ ▼
Rejected / Duplicate (dev, lead) Reopened ──► back into work
Deferred (postponed by PM)
⚠️ Common mistake: naming only the straight line New→Closed and forgetting the Reopened/Rejected/Duplicate/Deferred branches — those are exactly what show you've worked in a real tracker.
Describe client-server architecture. Why can't you rely on client-side validation alone?
Describe client-server architecture. Why can't you rely on client-side validation alone?
Short answer: The client (browser, mobile app) sends a request, the server processes it and returns a response — the request/response model over HTTP. You can't rely on client-side validation because the client is fully under the user's control: the form can be bypassed via curl, Postman, or DevTools and any data sent to the server. So the server must validate itself, and QA tests both layers independently.
In depth:
- Client — renders the UI, does first-pass validation for convenience (fast feedback, less traffic), holds the token.
- Server — the source of truth: checks permissions, validates the body, writes to the DB. It's the only layer you can trust.
- What QA does — doesn't just click the UI but hits the API directly, bypassing the client: sends empty/invalid fields, someone else's
id, injections — and checks the server rejected them (400/403) rather than saving them.
CLIENT SERVER
┌────────┐ request (HTTP) ┌─────────┐
│ UI │ ─────────────────► │ API │
│ ✔ UX │ │ ✔ manda-│
│ valid. │ ◄───────────────── │ tory │──► DB
└────────┘ response │ valid. │
▲ can be bypassed: └─────────┘
└── curl / Postman / DevTools
⚠️ Common mistake: assuming that because the Submit button is disabled on the form, invalid data never reaches the server. The UI is bypassed in a second — a robust system validates everything server-side.
What is cross-browser testing and how do you choose the browser matrix?
What is cross-browser testing and how do you choose the browser matrix?
Short answer: Cross-browser testing verifies that the app works consistently across different browsers, versions, and OSes. You build the matrix not from "all browsers" but from audience traffic analytics and risk: a full browser × OS × resolution sweep is infeasible, so you trim it with prioritization and a pairwise approach.
In depth:
- Start from data — analytics (GA, etc.) show the real browser/OS/device shares of your actual audience.
- Prioritize by coverage and risk — the combinations covering most users and critical flows (payment, sign-up) come first.
- Shrink the sweep — pairwise testing covers all pairs without the combinatorial explosion.
| Browser | Audience share | Priority |
|---|---|---|
| Chrome (Win) | 58% | P0 |
| Safari (iOS) | 22% | P0 |
| Chrome (Android) | 12% | P1 |
| Firefox / Edge | 6% | P2 |
| IE / others | 2% | not tested |
⚠️ Common mistake: being unable to justify the matrix ("I checked whatever was handy"). The interviewer wants the "audience data + risk + pairwise" reasoning, not a list of your favorite browsers.
What locators does Selenium support, and when is XPath better than CSS?
What locators does Selenium support, and when is XPath better than CSS?
Short answer: Selenium supports eight strategies: id, name, className, tagName, linkText, partialLinkText, cssSelector and xpath. CSS is faster and more readable, but XPath can do what CSS cannot: traverse up and backwards through the DOM (ancestor, parent, preceding-sibling) and locate an element by its text. That asymmetry is the whole point.
In depth:
- CSS selector — the default choice: terse syntax, runs faster (the browser optimizes its CSS engine), covers 90% of cases.
- XPath upward navigation — only XPath can go from a found element to its parent/ancestor:
//span[text()='Total']/ancestor::tr. - XPath by text —
//button[text()='Pay']orcontains(text(),'...'); CSS has no way to match on text content at all.
| Capability | CSS | XPath |
|---|---|---|
| Speed | higher | lower |
| Readability | higher | lower |
| Up the DOM | no | yes |
| Match by text | no | yes |
| Element index | :nth-child |
[2] |
⚠️ Common mistake: not knowing the asymmetry and answering "XPath is more powerful." It's only more powerful for upward and text-based navigation — for everything else CSS is the default.
Ready to make it stick?
Start your first session in under a minute. Your future self, mid-interview, will thank you.
Questions about this track
How should I prepare for a QA Automation Engineer interview?
Study the concepts you'll be asked to explain, not just the ones you can code. RecallDeck's QA Automation Engineer track gives you 326+ curated interview questions and resurfaces each one with an Anki-style SM-2 schedule right before you'd forget it — so the answers are still there under pressure on interview day.
What topics does the QA Automation Engineer track cover?
The QA Automation Engineer track is organised into the core areas QA Automation Engineer interviews actually test, grouped by topic and by difficulty (Concept, Junior, Middle, Senior). You can preview the full outline and sample questions above before signing in.
Is spaced repetition effective for QA Automation Engineer interview prep?
Yes. Actively recalling an answer and grading yourself honestly builds far more durable memory than re-reading notes. RecallDeck schedules each QA Automation Engineer card to reappear at the moment you're about to forget it, so your daily reviews shrink while your recall holds.
Can I try the QA Automation Engineer track before paying?
Yes. Monthly and yearly access include a seven-day trial of the complete QA Automation Engineer track, the full SM-2 scheduler, statistics, flexible pacing, and cram mode. You can cancel online before the first charge.