View all services
Talk to QA Advisor
Browse the Knowledge Hub74 resources
/Test Cases/VR and AR experience test cases

Test cases

VR and AR test cases, where a dropped frame is a safety issue

Twenty eight cases covering the frame rate comfort floor, tracking loss and recovery, controller disconnection, guardian boundaries, headset removal, locomotion comfort options, involuntary camera movement, AR plane detection and anchor drift, spatial data privacy, thermal throttling and an always reachable exit.

28cases/8coverage types/7comfort cases/FreeCSV download

All 28 test cases, ready to copy

Free to use and adapt, no sign-up. Download as CSV or Markdown, or copy it straight into your own tooling.

Last updated

28 worked examples

XR-01

Hold the target frame rate throughout

TypePerformancePriorityHigh
Test data
The heaviest scene with maximum objects and effects, measured over several minutes
Expected result
Frame rate stays at the platform target with no sustained drops. Below the comfort floor this is a nausea and safety issue rather than a smoothness complaint.
XR-02

Avoid dropped frames during scene transitions

TypePerformancePriorityHigh
Test data
Loading a new scene, streaming assets, and a heavy effect triggering
Expected result
Transitions maintain frame rate or use a comfort mechanism such as a fade, rather than stuttering while the user head is still being tracked.
XR-03

Recover from tracking loss

TypeStatePriorityHigh
Test data
Cover the sensors, move into darkness, and into a featureless white space
Expected result
A clear message appears, the scene freezes safely rather than drifting, and tracking recovers without requiring a restart or losing session progress.
XR-04

Handle controller disconnection and reconnection

TypeStatePriorityHigh
Test data
Power off a controller mid interaction, then power it back on
Expected result
Interaction pauses with an explanation, no input is fired by the disconnect, and reconnection restores control without losing what was in progress.
XR-05

Support hand tracking and controllers interchangeably

TypeCompatibilityPriorityHigh
Test data
Switch between hands and controllers mid session
Expected result
Both are supported for every interaction, the transition is seamless, and no action is reachable only with an input method the user has put down.
XR-06

Respect the guardian or play boundary

TypeSecurityPriorityHigh
Test data
Approach and cross the configured boundary during an activity
Expected result
Boundary is surfaced by the system and the experience does not require the user to reach beyond it, since content placed outside the boundary invites collisions.
XR-07

Handle the headset being removed and replaced

TypeStatePriorityHigh
Test data
Remove the headset mid session, wait, then put it back on
Expected result
Session pauses on removal, audio stops, and resuming returns to the same state rather than restarting or continuing unattended.
XR-08

Place content at a comfortable distance and height

TypeFunctionalPriorityHigh
Test data
Interface elements viewed by a seated user, a standing user and a very short or tall one
Expected result
Content is readable without straining, sits within a comfortable field of view, and recentres to the user rather than assuming a fixed height.
XR-09

Offer a recentre control that works

TypeFunctionalPriorityHigh
Test data
Recentre after turning around and after moving to a different part of the room
Expected result
View and interface realign to the user current position and facing, and the control is reachable without needing to see the original orientation.
XR-10

Provide comfort options for locomotion

TypeAccessibilityPriorityHigh
Test data
Smooth locomotion, teleport, snap turn and vignetting settings
Expected result
Alternatives to smooth movement exist and are the default where the platform recommends it, since smooth locomotion causes nausea for a large minority.
XR-11

Avoid movement the user did not initiate

TypeAccessibilityPriorityHigh
Test data
Cutscenes, forced camera movement and acceleration effects
Expected result
Camera control is not taken from the user, or the effect is optional, since involuntary motion is the fastest route to discomfort in a headset.
XR-12

Keep the horizon stable

TypeFunctionalPriorityHigh
Test data
Any effect that tilts, rolls or shakes the view
Expected result
Horizon stays level relative to the user, since rotating the world around a stationary head is one of the strongest triggers for simulator sickness.
XR-13

Support both seated and standing play

TypeCompatibilityPriorityHigh
Test data
The full experience completed seated and standing
Expected result
Both are usable, or the requirement is stated before the session begins rather than discovered when content cannot be reached from a chair.
XR-14

Make text legible at headset resolution

TypeAccessibilityPriorityHigh
Test data
Body text, labels and numeric values read at typical viewing distance
Expected result
Text is large enough and high enough contrast to read without leaning in, since headset resolution is far lower than a monitor at equivalent apparent size.
XR-15

Detect surfaces reliably in AR

TypeFunctionalPriorityHigh
Test data
Plane detection on a patterned floor, a plain surface, a reflective one and a transparent one
Expected result
Detection succeeds or reports failure with guidance, rather than placing content on a plane that does not exist and appearing to work.
XR-16

Keep AR content anchored as the user moves

TypeStatePriorityHigh
Test data
Place an object, walk away and return, then leave the room and come back
Expected result
Object stays where it was placed within the stated drift tolerance, and any relocalisation is handled rather than the object jumping across the room.
XR-17

Handle poor lighting in AR

TypeNegativePriorityHigh
Test data
A dim room, a very bright room and rapidly changing light
Expected result
Degradation is explained with guidance to improve conditions, rather than tracking silently failing and content drifting with no indication why.
XR-18

Handle occlusion and scale correctly in AR

TypeFunctionalPriorityMedium
Test data
Content partially behind a real object, and an object of known real world size
Expected result
Occlusion behaves per the documented capability and scale matches the real world, since an object rendered at the wrong size breaks the entire illusion.
XR-19

Request camera and spatial permissions correctly

TypeSecurityPriorityHigh
Test data
Deny camera and spatial mapping permissions, then use an AR feature
Expected result
Feature degrades with an explanation and a route to settings, and spatial data is not retained or transmitted beyond what the user consented to.
XR-20

Protect the passthrough and spatial data captured

TypeSecurityPriorityHigh
Test data
Inspect what room data is stored and transmitted during a session
Expected result
Room geometry and camera frames stay on device unless consent is explicit, since spatial mapping is a detailed record of a private space.
XR-21

Manage thermal throttling over a long session

TypePerformancePriorityHigh
Test data
A continuous session long enough for the device to heat up
Expected result
Frame rate is maintained through graceful quality reduction rather than throttling into a stuttering experience the user cannot escape comfortably.
XR-22

Handle battery depletion mid session

TypeStatePriorityHigh
Test data
Run the device down to a low battery state during an activity
Expected result
Warning appears in the headset with enough time to reach a safe stopping point, and progress is saved before shutdown.
XR-23

Provide an always reachable exit

TypeAccessibilityPriorityHigh
Test data
Attempt to leave from every scene including loading states and cutscenes
Expected result
A way out exists everywhere. A user who feels unwell must be able to stop immediately without removing the headset to find a control.
XR-24

Manage audio spatialisation and volume safely

TypeFunctionalPriorityMedium
Test data
Spatial audio with the user turning, and a sudden loud effect
Expected result
Audio direction matches the visual source, and no effect is loud enough to startle a user wearing headphones at a normal setting.
XR-25

Save progress against an interrupted session

TypeStatePriorityHigh
Test data
Remove the headset for long enough to suspend, and force a session end
Expected result
Progress is preserved and resumes at a sensible point rather than restarting an activity the user had nearly completed.
XR-26

Support the range of supported devices

TypeCompatibilityPriorityHigh
Test data
The lowest specification supported headset and the highest
Expected result
Frame rate target is met on the lowest through appropriate quality settings, and the experience is complete rather than missing content on weaker hardware.
XR-27

Handle multiple users in a shared space

TypeStatePriorityMedium
Test data
Two users in a shared session with one losing connection
Expected result
Disconnection is visible to the other participant, shared objects remain in a consistent state, and reconnection restores position rather than duplicating an avatar.
XR-28

Support accessibility preferences

TypeAccessibilityPriorityHigh
Test data
Seated mode, one handed operation, colour blind settings, subtitles and reduced motion
Expected result
Each is honoured, no interaction requires two hands or a full turn without an alternative, and spoken content is subtitled with a readable presentation.

What goes in each field

ID

Required

Stable identifier, prefixed by module.

Test case

Required

What is being verified, in one line.

Type

Functional, negative, boundary, security, state, performance, accessibility or compatibility. Use it to check coverage is spread rather than clustered on the happy path.

Priority

Risk based, with comfort and safety ranked as High rather than as usability. Anything that drops frame rate below the comfort floor, disorients the user, or leaves them unable to exit while wearing the device is High.

Test data

The specific values, including the invalid and boundary ones.

Expected result

Required

The precise observable outcome, including message text where the wording itself is the requirement.

How To Use This

Cover the sensors mid session

This is the one domain where a performance defect makes people physically unwell. These four conditions matter more than anything functional.

Measure frame rate in the heaviest scene

Below the platform comfort floor this stops being a smoothness complaint and becomes nausea. Sustained drops are a defect at the highest severity, not a polish item.

Take tracking away

Cover the sensors, or move into a featureless white space. The scene must freeze safely with a clear message rather than drifting while the user is still wearing it.

Try to leave from every scene

Including loading states and cutscenes. Someone who feels unwell has to be able to stop immediately, without removing the headset to hunt for a control.

Place an AR object, then leave the room

Come back and check it is still there. Relocalisation failures make anchored content jump across the room, which destroys the illusion the whole app depends on.

What Most Sets Miss

Why XR defects affect the body

Every other platform treats frame rate as a quality measure. In a headset it is a physiological one. Sustained drops below the platform comfort target cause nausea and disorientation, so a scene that stutters under load is a high severity defect rather than an optimisation task, and it needs measuring in the heaviest scene over several minutes rather than in a quick pass. Thermal throttling belongs in the same category, because a long session heats the device and the resulting slowdown arrives exactly when the user is most immersed and least able to disengage comfortably.

Involuntary motion is the second comfort category and it is a design problem more than a code one. Camera movement the user did not initiate, a horizon that tilts, acceleration effects, forced cutscene movement: each is a strong trigger for simulator sickness and each is easy to introduce without realising. Smooth locomotion needs an alternative, usually teleport and snap turn, and on most platforms the comfortable option should be the default rather than something the user discovers after feeling ill.

Tracking is the input, the camera and the interface all at once, so losing it removes the user ability to do anything while they are still wearing the device. Covering the sensors, moving into darkness or standing in a featureless white space all cause it, and the correct behaviour is to freeze safely with a clear message rather than letting the scene drift. Controller disconnection has the same shape: no phantom input at the moment of disconnect, and a clean resume when it comes back.

AR adds an environmental dependency that no test lab reproduces on its own. Plane detection behaves differently on a patterned floor, a plain surface, a reflective one and glass. Lighting changes tracking quality, and content anchored in one visit needs to be in the same place on the next. And spatial mapping is a detailed scan of somebody private space, so what is stored and what leaves the device is a privacy question that deserves the same scrutiny as any other personal data.

Suggest an improvement

Testing a VR or AR product?

QAble tests immersive applications on real headsets, including frame rate under load, tracking loss recovery, comfort settings, AR anchoring and spatial data handling.

VR and AR app testing services

More test case sets

View all

Test cases for a login page

Test cases
25 cases across functional, negative, boundary, security, session and accessibility paths, including account enumeration and lockout.

Test cases for a registration form

Test cases
28 cases covering validation, duplicate accounts, email verification, password rules and the enumeration leak most signup forms ship with.

Test cases for search functionality

Test cases
28 cases across relevance, partial and fuzzy matching, filters, pagination, empty states, injection attempts and performance under load.

Test cases for a shopping cart

Test cases
27 cases on quantity limits, price recalculation, stock changes, coupon stacking, guest to account merge and cart persistence.

Test cases for checkout and payment

Test cases
30 cases including 3D Secure, declines, timeouts, duplicate charges, idempotency, refunds and partial captures.

Test cases for file upload

Test cases
28 cases on size and type limits, spoofed content types, malicious filenames, progress, resume, virus scanning and storage limits.

Test cases for forgot password

Test cases
26 cases on reset token expiry, single use enforcement, session invalidation and the enumeration and rate limit gaps that are routine here.

Test cases for OTP verification

Test cases
26 cases on expiry, resend throttling, attempt limits, code reuse, delivery failure and the brute force window teams forget to close.

Test cases for user roles and permissions

Test cases
26 cases on horizontal and vertical privilege checks, direct object access, role changes mid-session and permission inheritance.

Test cases for form validation

Test cases
27 rules-based cases on required fields, length and numeric boundaries, client and server parity, hidden field tampering and error accessibility.

Test cases for a date picker

Test cases
26 cases on timezone shifts, ambiguous day and month order, impossible dates, min and max limits, leap years and keyboard operation.

Test cases for pagination

Test cases
24 cases on ordering stability, records changing mid-session, page size caps, deep offset cost, permission-filtered totals and state restore.

Test cases for push notifications

Test cases
26 cases on app states, deep link routing, token release on sign out, lock screen privacy, preferences, provider failures and platform differences.

Test cases for reports and data export

Test cases
25 cases on permission filtering in the file, spreadsheet formula injection, encoding, typed numbers and dates, row limits and audit logging.

Test cases for a chatbot

Test cases
28 cases on paraphrased intents, context, fallback loops, human handoff, policy grounding, prompt injection and data scoping.

Test cases for net banking transactions

Test cases
28 cases on duplicate debits from a retried request, concurrent transfers against one balance, daily limits across channels, beneficiary cooling periods, second factor binding and reconciliation.

Test cases for wallet and UPI payments

Test cases
28 cases on payments that time out with no response, idempotency on retry, racing balances, caps across devices, collect request fraud, mandates and refunds.

Test cases for insurance claim submission

Test cases
28 cases on coverage at the date of loss, waiting periods, deductibles and sub limits, exclusions and riders, duplicate claims and settlement reconciliation.

Test cases for patient records in an EHR

Test cases
28 cases on duplicate detection and merge, wrong patient entry, units of measure, allergy and interaction alerting, break glass access and audit of reads.

Test cases for CRM lead management

Test cases
28 cases on duplicate leads under concurrency, routing and the unrouted fallback, round robin races, territory visibility, conversion and bulk import.

Test cases for an ERP purchase order

Test cases
28 cases on approval thresholds, amendments that must reset approval, budget commitment races, over receipt tolerance, three-way match and duplicate invoices.

Test cases for OTT video playback

Test cases
28 cases on bitrate recovery after a dip, DRM renewal mid stream, concurrent stream limits and leaked slots, resume conflicts, ad cue points and offline expiry.

Test cases for game level progression

Test cases
28 cases on save corruption during a crash write, cloud save conflicts, offline queue replay, unlock gating, currency exploits and purchase restore.

Test cases for a REST API

Test cases
28 cases on status code correctness, cross tenant resource access, mass assignment, idempotent retries, cursor pagination, rate limits and contract drift.

Test cases for SSO and social login

Test cases
28 cases on linking an account on an unverified email, state and code replay, redirect allow lists, token signature and issuer, deprovisioning and session rotation.

Test cases for subscription and billing

Test cases
28 cases on mid cycle proration, duplicate and out of order webhooks, renewal double charges, dunning and grace, trials, coupons, metered usage and tax.

Test cases for data tables, filters and sorting

Test cases
28 cases on unstable sorts across pages, filters that must reset pagination, selection surviving a filter change, bulk action scope and export fidelity.

Test cases for session timeout and concurrent login

Test cases
28 cases on tokens that survive sign out, refresh token reuse, idle against absolute lifetime, multi tab expiry, session limits and remote revocation.

Test cases for a multi step form wizard

Test cases
28 cases on values lost to back navigation, refresh and session expiry, step skipping, server side revalidation, duplicate submission and conditional branches.

Test cases for email verification

Test cases
28 cases on token reuse and expiry, invalidating earlier links, account enumeration, header injection, safe address change and mail scanner prefetching.

Test cases for dashboards and analytics widgets

Test cases
28 cases on reconciling against source rows, widgets that disagree, timezone aggregation, zero baselines, no data shown as zero and permission leaks in aggregates.

Test cases for booking and reservation

Test cases
28 cases on concurrent bookings for the last slot, inventory holds that leak, payment without a booking, cancellation boundaries and channel sync.

Test cases for mobile app install and update

Test cases
28 cases on migration chains across skipped versions, crashes during post upgrade migration, forced update lockouts, deep links and clean reinstall.

Test cases for accessibility (WCAG 2.2 AA)

Test cases
28 cases on keyboard only completion, focus management, live region announcements, contrast, reflow at 320 pixels, target size and screen reader verification.

Test cases for performance and load

Test cases
28 cases on spikes with no ramp, recovery after peak, soak and leak detection, pool exhaustion, cold caches, retry storms and data correctness under load.

Test cases for the OWASP Top 10

Test cases
28 cases on broken access control, mass assignment, injection across every input surface, credential stuffing, session invalidation, SSRF and exposed secrets.

Test cases for cross browser compatibility

Test cases
28 cases on storage that throws in private mode, blocked third party cookies, engine date parsing, mobile viewport units, in app browsers and ad blockers.

Test cases for database and data integrity

Test cases
28 cases on uniqueness under concurrency, lost updates, counter races, orphaned rows, migration and backfill safety, replica lag and verified restores.

Test cases for localisation and multi language support

Test cases
28 cases on text expansion, concatenated sentences, plural rules, locale date parsing, decimal separators, right to left layout, collation and encoding.

Test cases for outbound webhooks

Test cases
28 cases on retry backoff and dead letter stores, one dead consumer degrading the pipeline, payload signing and replay windows, out of order delivery and endpoint SSRF.

Test cases for background jobs and queues

Test cases
28 cases on work outliving the visibility timeout, idempotent handlers, poison messages, priority starvation, scheduler overlap across instances and graceful drain.

Test cases for real time features and websockets

Test cases
28 cases on messages lost in the reconnect gap, half open connections, per channel authorisation, tokens expiring mid connection, backpressure and fanout across instances.

Test cases for file storage and media processing

Test cases
28 cases on signed URL scope and expiry, serving before scanning completes, content type sniffing, metadata stripping, orphaned objects and derivative failures.

Test cases for CSV import and bulk operations

Test cases
28 cases on reruns duplicating successes, delimiters inside quoted fields, byte order marks, leading zeros, ambiguous dates and bulk action scope.

Test cases for feature flags and progressive rollout

Test cases
28 cases on unreachable flag services, unstable bucketing, rollouts that reshuffle users, kill switch latency, server and client mismatch and stale flags.

Test cases for Android app lifecycle and permissions

Test cases
28 cases on state lost to process death, configuration changes, permanent permission denial, revocation while backgrounded, doze and battery restrictions.

Test cases for iOS app lifecycle and permissions

Test cases
28 cases on the keychain surviving uninstall, suspended termination, limited photo access, allow once location, app switcher snapshots and biometric invalidation.

Test cases for wearable app sync

Test cases
28 cases on data recorded away from the phone, duplicate records on resync, full buffers, clock drift, health permissions, battery budgets and unworn readings.

Test cases for IoT device pairing and telemetry

Test cases
28 cases on offline buffering and reconnect floods, fleet wide reconnection storms, shared credentials, wrong device clocks and stale queued commands.

Test cases for embedded firmware update

Test cases
28 cases on power loss mid write, automatic rollback and health confirmation, signature and anti rollback checks, staged rollouts and recovery mode.

Test cases for user profile and account settings

Test cases
28 cases on partial saves reported as success, optimistic updates the server rejected, mass assignment through a profile form, avatar content inspection and session invalidation.

Test cases for account deletion and data export

Test cases
28 cases on export links that must be authorised and expiring, deletion cascading to storage, caches, logs and processors, grace periods, legal holds and deadlines.

Test cases for consent and cookie management

Test cases
28 cases on cookies and tracking requests firing before consent, reject parity with accept, tag manager bypass, withdrawal, cached banners and server side forwarding.

Test cases for notification preferences and delivery

Test cases
28 cases on opt outs honoured on one channel and ignored on another, marketing sent as transactional, unsubscribe scope, imports resetting consent and digest timezones.

Test cases for admin impersonation and support access

Test cases
28 cases on actions attributed to the customer instead of the admin, credential exposure, chained and upward impersonation, session expiry and immutable access records.

Test cases for audit logs and activity history

Test cases
28 cases on forged entries through log injection, immutability and tamper detection, actor attribution across impersonation and jobs, retention and legal holds.

Want your experience proven comfortable, not assumed?

QAble covers functional, performance and comfort paths with ISTQB-certified engineers. Start with a free QA audit of your application.

Talk to QA Advisor