// Interview Prep/Industry Questions/Gaming & Gambling QA

🎲 Gaming & Gambling QA

9 questions · full model answers. Server-authoritative trust, provably-fair RNG, anti-cheat, and gambling regulation — testing where fairness must be provable and compliance gates must fail closed.

// What they weigh

What a Gaming & Gambling QA interviewer is actually probing for — beyond generic QA.

  • 01

    Provable fairness over determinism alone

    Interviewers want certified RTP against a distribution, not just repeatable results. Strong candidates distinguish a provably-fair hash chain from a simple seeded RNG, and know that a regulatory audit needs the outcome distribution, not just reproducibility.

  • 02

    Adversarial / server-authoritative mindset

    In both gaming and gambling, the client is untrusted. Every game-state delta, bet amount, and currency transaction must be validated server-side. Interviewers screen for candidates who default to calling the API directly rather than trusting the UI.

  • 03

    Regulatory hard-fails per jurisdiction

    Geo gates, age gates, self-exclusion, and responsible-gaming limits are legally mandated. Strong candidates treat these as correctness conditions — they must fail closed under load, on re-registration, and on location spoof — not as optional UX hints.

// Junior · 1

What does 'server-authoritative' mean in a multiplayer game, and why does it matter for QA?

Junior

The server is the single source of truth for all game state; the client renders what the server says happened, never self-reports an outcome. For QA it means every state-changing action must be validated server-side, not just in the UI.

// What interviewers look for

That the candidate understands the trust boundary: the client is untrusted and any state it self-reports must be rejected or verified. Strong answers connect this to concrete test cases — client-only state, forged deltas, and rollback under desync.

Common pitfall

Describing it as a performance or latency pattern rather than a security and correctness boundary. Missing that the implication for QA is testing server rejection of invalid client input, not just happy-path rendering.

Model answer

Server-authoritative means the server owns the canonical state of the game — positions, health, scores, inventory — and the client only renders what the server confirms happened. The client can predict and display locally for responsiveness, but if the server disagrees, the server wins. For QA, the practical implication is that every outcome I care about must be tested at the server layer, not just observed in the UI. I'd test that the server rejects impossible state transitions: a client reporting a health value above its maximum, a position delta that would require teleportation given the elapsed time, an item pickup when the client was out of range. I'd assert that when the client and server desync — network partition, clock drift — the server's version wins on reconnect and the client is corrected, not the server. The anti-pattern I'm guarding against is a server that accepts whatever the client sends, which turns every player into a potential cheater. I'd cover this at the API level, not just through the game client, because the attack surface is the server endpoint.

server-authoritativemultiplayergame statesecurity

// Mid-level · 4

How would you test that a slot machine's RNG is fair — both in terms of certified return-to-player (RTP) and provably-fair hash verification?

Mid-level

Run a statistically large sample of spins and assert the outcome distribution matches the certified RTP within tolerance, then separately verify the provably-fair hash chain — seed, nonce, and outcome hash — can be independently reproduced by a player.

// What interviewers look for

Two distinct concerns: distribution correctness (does the sample match the stated RTP?) and transparency (can a player verify their own outcome independently?). Strong candidates do not confuse these, and they know testing the exact value of any single spin is the wrong frame — the RTP is a long-run distributional claim.

Common pitfall

Testing a single spin value or a small sample, which will always fail statistically. Or conflating RTP (a distributional property) with provably-fair (a cryptographic transparency property) — they answer different questions and need separate test approaches.

Model answer

I separate the two properties because they're different claims about different things. RTP is a distributional claim: over a large sample, the payout percentage should converge to the certified rate. I'd run a statistically large batch — say a million simulated spins — and assert the resulting payout rate falls within the agreed statistical tolerance band around the certified RTP (e.g. ±0.1%). I'd parametrise over volatility classes too, since low-volatility and high-volatility slots reach convergence at different sample sizes. I'd specifically verify the distribution of win categories — small wins, medium wins, jackpots — against the paytable, not just the aggregate percentage. The provably-fair side is a cryptographic transparency test: I verify that the seed committed before each spin, the client nonce, and the server salt combine via the published hash function to produce the stated outcome, and that any player can reproduce this independently with their session data. I'd test that a manipulated seed or nonce produces a hash mismatch, not a silently different outcome. These two tests answer different regulator questions: the distribution test proves the game is calibrated correctly; the hash test proves individual outcomes weren't tampered with after the fact.

RNGRTPprovably-fairslotsfairnessgambling

A player submits a position delta that would require moving 200 m/s when the maximum speed is 10 m/s. How do you test the server rejects this?

Mid-level

Call the movement API directly with an impossible delta and assert the server returns a rejection, rolls back the position to the last known valid state, and flags the session for review — without trusting any client-reported speed.

// What interviewers look for

Server-side validation of physics constraints, not just client-side clamping. The candidate should test via the API directly, assert the correct error/rejection, and check that the server's state is not corrupted by the forged input.

Common pitfall

Testing that the game client won't let you move that fast (client-side clamp), which misses the actual attack vector — a player sending a crafted API request that bypasses the client entirely.

Model answer

The attack surface is the server endpoint, not the game client, so I test via the API directly with a valid auth token but a crafted movement payload. I'd send a series of position updates: one at exactly the speed limit (allowed), one a fraction above (boundary — depending on inclusive/exclusive rule), and one at an impossible delta like 20x the limit. For each I assert the server's response — a reject code and a rollback to the last valid position, not a 200 or a silent clamp. I'd verify the server's authoritative position after the rejected call matches the pre-call state, so the forged delta had zero effect on canonical state. I'd test a sequence of small-but-compounding deltas that individually pass but cumulatively imply an impossible speed over a short window — teleport-in-steps is a common bypass attempt. I'd also assert the session is flagged for review on repeated violations, because anti-cheat is not just about per-request rejection but about pattern detection. Throughout I'm testing the server logic, not the client renderer — the client is explicitly not trusted.

anti-cheatserver validationphysicssecuritygaming

How do you test responsible-gaming deposit and loss limits — including server-side enforcement, boundary values, regulated daily reset, and direct-API bypass attempts?

Mid-level

Seed accounts at each boundary state and assert limits are enforced at the API layer, not just the UI — including the boundary triple (under, at, over), the regulated reset timezone, and a direct API call that skips the front-end.

// What interviewers look for

Server-side enforcement (API-level bypass test), boundary discipline across all limit types, and awareness that regulatory resets have a specific timezone rule that must be tested. This is structurally like transaction-limit testing in fintech but with the added complexity of regulated reset windows.

Common pitfall

Testing only the UI block and not calling the deposit or bet API directly. Missing the timezone/reset boundary — 'daily' in a regulated jurisdiction resets at a specific time, not necessarily the player's local midnight, and off-by-one-hour errors around DST are real bugs.

Model answer

Responsible-gaming limits are a regulatory requirement, so enforcement must be at the server, not the UI. My starting point is calling the deposit or bet API directly with a valid auth token and bypassing the front-end entirely — if that succeeds over the limit, the UI protection is cosmetic. For each limit type — deposit, loss, wager, time — I test the boundary triple: one unit below the limit (allowed), exactly at the limit (allowed per the inclusive rule), and one unit over (rejected with a limit-exceeded code, never a 200 or 500). For cumulative limits I seed prior transactions so the next one crosses the threshold, and I assert the correct window: a daily deposit limit should reset at the regulated timezone's midnight, not UTC or the server's local time, so I test deposits that straddle the reset with a controlled clock. DST transitions are a specific trap — the reset window changes length by an hour twice a year, and a limit-tracking bug there is a regulatory breach. I'd also test the cool-off and self-exclusion states as separate conditions: a player in cool-off can view but not transact; a self-excluded player is fully blocked. All test accounts use synthetic identities only.

responsible gaminglimitscompliancegamblingboundary testing

How would you test that a matchmaking system produces fair pairings — across skill rating, region, and latency — and handles edge cases like very small or empty pools correctly?

Mid-level

Seed player pools at each rating boundary and assert the matchmaker places players within the allowed skill delta and latency threshold, then test degenerate pools — empty pool, single player, all one skill tier — to verify the system degrades gracefully rather than pairing arbitrarily.

// What interviewers look for

Distinct from server-authoritative testing (gg-iv-01) and disconnect handling (gg-iv-06): this is about the fairness of pairing decisions, not game-state correctness. Strong candidates test the skill-delta tolerance, the latency constraint, and the pool-exhaustion edge cases separately.

Common pitfall

Testing only that players get matched (liveness) and not whether the match is fair (correctness of the pairing constraint). Or testing only full pools and missing the edge cases where small or empty pools cause the matchmaker to pair players it should queue or decline.

Model answer

Matchmaking has two separate correctness concerns: constraint satisfaction (are pairs within the allowed skill and latency range?) and edge-pool behaviour (does the system degrade correctly when the pool is small?). For constraint satisfaction I'd seed pools of players with known ratings across the allowed delta boundaries — at exactly the limit, just within, and just outside — and assert that pairings only happen within the permitted skill delta. I'd parametrise over the tolerance widening that typically kicks in after a player has waited too long, asserting the widening step is applied correctly and not too aggressively. For latency I'd simulate players in different regions and assert the matchmaker respects the configured latency threshold, not just skill, so a low-ping pairing in the same region is preferred over a cross-region pairing with a better skill delta. For edge-pool cases I test: an empty pool (no match found, player queued gracefully); a single player in a pool (queued or matched to a bot per the product rule, not matched to themselves); a pool where all players are in the same narrow rating band (matches efficiently); and a pool where the skill spread exceeds the tolerance (highest-priority waiter gets widened pairing first, not arbitrary). I'd also verify that the matchmaker never produces self-matches or duplicate-player-in-match conditions, and that the queue position and estimated-wait metadata are accurate under each pool state. This is orthogonal to server-authoritative state validation — I'm testing the pairing algorithm, not the game state that follows.

matchmakingfairnessskill ratinglatencygamingedge cases

// Senior · 3

Walk through how you'd test self-exclusion and geo/age gating end-to-end — including cross-product coverage, fail-closed behaviour, re-registration attempts, and location spoofing.

Senior

Seed accounts in each exclusion/gate state and assert every product and channel blocks them, the gate fails closed under load and timeout, re-registration is detected and blocked, and location spoofing (VPN, header forgery) is rejected — with an audit entry for every decision.

// What interviewers look for

Cross-product completeness (self-exclusion in one product must block all), fail-closed under degraded conditions, and adversarial coverage (re-registration, spoof). Strong candidates also know every gate decision is auditable by the regulator.

Common pitfall

Testing self-exclusion only in the product where it was set, missing that a regulated exclusion is cross-product. Or testing the exclusion under normal load only — a system that skips the gate check when the exclusion service is slow or timing out will fail the regulator.

Model answer

Self-exclusion is a cross-product obligation, so I start by setting an exclusion in one product and asserting that every other product in the operator's portfolio also blocks that player — casino, sports book, and poker must all honor the exclusion, not just the one where it was set. Fail-closed under degraded conditions is the next concern: I stub the exclusion-check service to return a timeout or 503 and assert the gate defaults to blocked, not open — the system must not allow a bet or login when it cannot confirm exclusion status. Re-registration is a common bypass: I test that a player who self-excluded and creates a new account with different credentials but matching identity data (name, date of birth, address) is detected and blocked at the KYC stage. Location spoofing tests cover VPN IP, forwarded-header forgery, and GPS mock on mobile — I assert the server-side geo check rejects these rather than trusting client-reported location. Age gating uses synthetic identity documents with known ages — under threshold, exactly threshold, and over — and I verify the gate is enforced at account creation and at each transaction, not just once on signup. Every gate decision — allowed or blocked — must produce an audit log entry with the decision reason, actor, and timestamp, because the regulator may ask for evidence of any individual case.

self-exclusiongeo-gatingage verificationcompliancegamblingaudit

A player disconnects exactly when a bet is being settled or a match result is being written. How do you test that settlement is deterministic and exactly-once, and that reconnection restores the correct state?

Senior

Inject a disconnect at each phase of the settlement transaction — pre-commit, mid-commit, post-commit — and assert in each case that the outcome is exactly one settlement record and the player's balance is correct, with idempotent retry and correct state on reconnect.

// What interviewers look for

Exactly-once settlement semantics, not just retry handling. Strong candidates identify the pre/mid/post-commit fault points, assert idempotency of the settlement operation, and verify reconnection restores the server's canonical state rather than the client's last known state.

Common pitfall

Testing only the reconnection UX and asserting the player sees the correct screen — missing whether the settlement actually wrote once. Or assuming a retry is safe without asserting idempotency, which leads to double-settlement (player gets paid twice) or no-settlement (player gets nothing).

Model answer

Settlement under disconnect has three failure-point windows that need separate test cases: disconnect before the settlement transaction starts, disconnect mid-transaction (after the bet is consumed but before the balance is credited), and disconnect after the transaction commits but before the acknowledgement reaches the client. For each I assert exactly one settlement record in the database and the correct ending balance — the disconnect window should not produce double-settlement or lost settlement. The mechanism I'm testing for mid-transaction safety is idempotency: the settlement operation must be idempotent so a retry on reconnect produces the same record, not a duplicate. I'd assert this by replaying the settlement request with the same idempotency key and checking the balance and record count. On reconnect, I assert the client receives the server's canonical state — not a cached client-side prediction — so if the result was a loss the player cannot reconnect and see a misleading pending-win state. For game state specifically, I'd also verify that any in-progress game (e.g. live dealer round, spin animation) is either completed deterministically or cleanly rolled back — no half-committed states where the game thinks it's still running but the bet is already settled. This is a stronger guarantee than 'retry works'; it's proving that the settlement is a transactional unit with exactly-once semantics.

disconnectsettlementidempotencyexactly-oncegaminggambling

How would you test that a virtual-currency economy is resistant to item/chip duplication and to currency laundering through player-to-player transfers?

Senior

Test the atomic credit/debit transaction under concurrent requests to rule out duplication, assert server-side balance validation rejects over-balance transfers, and probe collusion patterns — chip-dumping, carousel transfers — that laundering detection should flag.

// What interviewers look for

Two distinct risks: technical duplication (race conditions in the transaction) and economic abuse (intentional value transfer). Strong candidates test concurrency at the API level, assert exactly-one credit per transfer, and know that chip-dumping is a known money-laundering vector in regulated poker.

Common pitfall

Only testing the happy path (valid transfer succeeds, over-balance transfer fails). Missing the concurrent race — two simultaneous spend requests on the same balance — which is how duplication bugs manifest. Or treating laundering as a payments problem rather than a pattern-detection problem in the game economy.

Model answer

Virtual-currency integrity has two separate attack surfaces. The first is technical: a concurrent double-spend. I'd fire two simultaneous requests to spend or transfer the full balance from the same account and assert exactly one succeeds and one fails — not that both succeed (double-spend) and not that both fail (money destruction). The correct server-side mechanism is an atomic compare-and-swap or a database transaction with the right isolation level, and I test by controlling concurrency at the API layer, not through the game client. I'd also cover the zero-balance case: a transfer request when balance is exactly zero must be rejected, and a crafted negative-amount transfer (to move currency in reverse) must be validated and rejected server-side. The second surface is economic abuse. Chip-dumping — a player repeatedly losing intentionally to transfer chips to a confederate — should be detected and flagged; I'd test the detection rule by seeding the known collusion pattern (one account loses 10 straight hands to the same opponent beyond statistical chance) and asserting the system flags it for review. I'd also test carousel transfers: many small transfers between a ring of accounts that move value without triggering single-transfer limits. Every transfer must have a server-side audit entry, and over-threshold patterns must surface in the anomaly queue.

virtual currencyeconomyduplicationlaunderingconcurrencygambling

// Lead · 1

Design a release-gating test strategy for a regulated gambling product. What are the hard gates, how are they layered, and what blocks a release?

Lead

Hard gates block on RNG/RTP certification, all responsible-gaming and geo/exclusion gates fail-closed, bet-settlement is exactly-once, and audit-log completeness is verified — the deposit/withdrawal money rail defers to the Fintech gate strategy.

// What interviewers look for

A gambling-specific gate list (RTP, RG limits, self-exclusion, geo/age, settlement determinism, audit completeness) distinct from a generic pyramid. The money-rail is explicitly delegated to the Fintech strategy. Strong candidates name what blocks shipping, not just what is tested.

Common pitfall

A generic test-pyramid answer that doesn't name the gambling-specific regulatory gates. Or including the deposit/withdrawal money rail in the gambling strategy instead of cross-referencing the Fintech gate strategy, which leads to duplicated or inconsistently maintained gate definitions.

Model answer

The release question in a regulated gambling product is: 'can we prove the game is fair, the limits are enforced, and the regulator can audit every decision?' I'd define hard gates that unconditionally block shipping: first, the RNG and RTP certification gate — the outcome distribution must match the certified RTP within statistical tolerance across a large batch, and the provably-fair hash chain must be independently verifiable. Second, the responsible-gaming gate — all limit types (deposit, loss, wager, time) enforce at the API even under direct-API bypass, all resets happen at the regulated timezone boundary, and the cool-off and self-exclusion states block every product. Third, the geo, age, and self-exclusion fail-closed gate — these gates must default to blocked when the check service is degraded, VPN and location-spoof attempts are rejected, and cross-product exclusion is verified. Fourth, bet-settlement determinism — exactly-once settlement under disconnect at all fault-point windows, idempotency of the settlement operation, and balance correctness. Fifth, audit-log completeness — every gate decision, settlement, limit enforcement action, and exclusion check has an immutable log entry with actor, timestamp, and outcome. The deposit and withdrawal money rail is not in scope here; it inherits the Fintech gate strategy (reconciliation, idempotency, rounding, PCI) rather than being re-authored, so changes to the money layer don't need to be re-tested against the gambling gates independently. I'd layer for feedback speed: property tests for RTP distribution and rounding, contract tests for the RNG API and exclusion-check service, integration tests for limit enforcement and settlement, and a thin E2E covering the full bet → settle → balance → audit path. Every gate has an unambiguous pass/fail, and any red gate stops the release.

strategyrelease gatesRTPcomplianceresponsible gaminggamblingaudit

// Go deeper

These questions pair with the in-depth Gaming & Gambling QA QA guide — the risk areas, signature bugs, and test strategies the questions are drawn from.