Browse the Knowledge Hub74 resources
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
RequiredStable identifier, prefixed by module.
Test case
RequiredWhat 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
RequiredThe precise observable outcome, including message text where the wording itself is the requirement.
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.
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 improvementTesting 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 servicesMore test case sets
View allTest cases for a login page
Test cases25 cases across functional, negative, boundary, security, session and accessibility paths, including account enumeration and lockout.Test cases for a registration form
Test cases28 cases covering validation, duplicate accounts, email verification, password rules and the enumeration leak most signup forms ship with.Test cases for search functionality
Test cases28 cases across relevance, partial and fuzzy matching, filters, pagination, empty states, injection attempts and performance under load.Test cases for a shopping cart
Test cases27 cases on quantity limits, price recalculation, stock changes, coupon stacking, guest to account merge and cart persistence.Test cases for checkout and payment
Test cases30 cases including 3D Secure, declines, timeouts, duplicate charges, idempotency, refunds and partial captures.Test cases for file upload
Test cases28 cases on size and type limits, spoofed content types, malicious filenames, progress, resume, virus scanning and storage limits.Test cases for forgot password
Test cases26 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 cases26 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 cases26 cases on horizontal and vertical privilege checks, direct object access, role changes mid-session and permission inheritance.Test cases for form validation
Test cases27 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 cases26 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 cases24 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 cases26 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 cases25 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 cases28 cases on paraphrased intents, context, fallback loops, human handoff, policy grounding, prompt injection and data scoping.Test cases for net banking transactions
Test cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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 cases28 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.