Browse the Knowledge Hub74 resources
Test cases
Settings test cases, for the save that did not happen
Twenty eight cases covering partial saves reported as success, optimistic updates the server rejected, two tabs overwriting each other, mass assignment through a profile form, re-authentication for sensitive changes, session invalidation on password change, avatar content inspection and metadata stripping, timezone and locale propagation and profile visibility.
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
Save a single field and confirm it persisted
TypeFunctionalPriorityHigh- Test data
- Change the display name, save, then reload from a different session
- Expected result
- Value is stored exactly as entered and returned on reload. The confirmation appears only after the server confirms, not on submit.
Report a partial save honestly
TypeStatePriorityHigh- Test data
- A settings form where one field fails validation on the server while others succeed
- Expected result
- Interface states which fields saved and which did not. A blanket success message over a partial write is the defect this set exists to catch.
Roll back an optimistic update that the server rejected
TypeStatePriorityHigh- Test data
- Apply a change locally, then force the server to refuse it
- Expected result
- Displayed value reverts and the user is told. Leaving the new value on screen means they believe a setting is active when it is not.
Warn before discarding unsaved changes
TypeStatePriorityMedium- Test data
- Edit several fields, then navigate away and use the browser back button
- Expected result
- A warning appears in both cases, and it does not fire when nothing was actually changed.
Handle two tabs editing the same profile
TypeBoundaryPriorityHigh- Test data
- Open settings in two tabs, change different fields, save the older one last
- Expected result
- The first change is not silently overwritten. Either both survive or the stale save is refused with a conflict.
Refuse an update to another user profile
TypeSecurityPriorityHigh- Test data
- Submit a profile update with another user identifier in the payload and in the path
- Expected result
- Refused on both. The target is taken from the authenticated session rather than from anything the client supplied.
Ignore fields the user must not control
TypeSecurityPriorityHigh- Test data
- Include role, plan, verified status, credit balance and account identifier in the update payload
- Expected result
- Each is ignored or rejected. Mass assignment through a profile form is one of the quietest privilege escalations available.
Require re-authentication for a sensitive change
TypeSecurityPriorityHigh- Test data
- Change email, change password and disable two factor authentication on a long lived session
- Expected result
- Each requires the current password or a second factor, so an unattended session cannot be used to take over the account.
Invalidate other sessions after a password change
TypeSecurityPriorityHigh- Test data
- Sign in on three devices, change the password on one
- Expected result
- Other sessions end per the documented policy and the user is told. A password change that leaves sessions alive does not evict an intruder.
Notify the account of a security relevant change
TypeSecurityPriorityHigh- Test data
- Change password, change email and add a new sign in method
- Expected result
- A notification goes to the previous address as well as the new one, because that message is how a takeover gets noticed.
Validate a new password against the same rules as signup
TypeNegativePriorityHigh- Test data
- A short password, a common one, the current password reused, and one matching the email
- Expected result
- Each refused with the same rules the registration form applies, since a weaker change path undermines the original policy.
Preserve unicode and awkward names
TypeNegativePriorityHigh- Test data
- Diacritics, an apostrophe, a hyphen, a single word name, right to left script and a name at maximum length
- Expected result
- Stored and redisplayed unchanged in the interface, in notifications, in exports and anywhere the name is rendered by another user.
Render a display name safely wherever it appears
TypeSecurityPriorityHigh- Test data
- A name containing script markup and an event handler, then viewed in comments, mentions, admin views and email
- Expected result
- Escaped as text in every location. Encoding at input in one place rather than at render everywhere is how one surface ends up vulnerable.
Enforce limits on every text field
TypeBoundaryPriorityMedium- Test data
- A bio at the maximum length, one character over, and one containing only whitespace
- Expected result
- Limit is enforced on the server as well as the client, counted in characters rather than bytes, and whitespace only is treated as empty.
Upload and replace an avatar safely
TypeSecurityPriorityHigh- Test data
- A permitted image at the maximum size, one byte over, an SVG, and a script renamed to an image extension
- Expected result
- Refused on content inspection rather than extension, and the stored image is served in a way that cannot execute in the application origin.
Strip metadata from an uploaded avatar
TypeSecurityPriorityHigh- Test data
- A photograph containing GPS coordinates and device details
- Expected result
- Location metadata is removed from the stored derivative, since a profile photograph otherwise publishes where the person was standing.
Remove an avatar and fall back cleanly
TypeStatePriorityMedium- Test data
- Delete a custom avatar, then view the profile in every surface that shows it
- Expected result
- Placeholder appears everywhere including cached and edge served views, and the old image is no longer retrievable by its previous URL.
Apply a timezone change consistently
TypeBoundaryPriorityHigh- Test data
- Change timezone, then view timestamps, scheduled items and a report covering a day boundary
- Expected result
- Timestamps shift, calendar dates such as a birthday do not, and scheduled items are handled by a documented rule rather than moving unexpectedly.
Apply a language or locale change everywhere
TypeFunctionalPriorityHigh- Test data
- Change locale, then check the interface, notifications, exports and generated documents
- Expected result
- Every surface follows the selection, and number and date formats change with it rather than only the interface strings.
Persist accessibility and display preferences
TypeStatePriorityMedium- Test data
- Set theme, reduced motion and text size, then sign in on another device
- Expected result
- Preferences follow the account where the policy says so, and an explicit choice is never overridden by a system default on the next device.
Control profile visibility
TypeSecurityPriorityHigh- Test data
- Set a field to private, then request the profile as another user, as an anonymous visitor and through search
- Expected result
- Hidden on all three paths and absent from the response payload rather than merely not rendered.
Change the account identifier or username safely
TypeStatePriorityHigh- Test data
- Change a username that appears in URLs, then request the old one
- Expected result
- Documented behaviour applied, the old handle is not immediately claimable by someone impersonating the user, and existing links do not break silently.
Manage linked sign in methods
TypeSecurityPriorityHigh- Test data
- Link a second provider, then unlink the only remaining sign in method on an account with no password
- Expected result
- Linking requires re-authentication and unlinking the last method is refused, because completing it locks the user out permanently.
Show active sessions and revoke one
TypeSecurityPriorityHigh- Test data
- Three active sessions, one revoked from another device
- Expected result
- List reflects genuinely active sessions with device and last used time, and the revoked session is refused immediately including its refresh token.
Handle a settings save when the backend is unavailable
TypeStatePriorityHigh- Test data
- Make the save request time out, then fail outright
- Expected result
- Clear recoverable message with the entered values retained, and the timed out case resolves to one definite state rather than an ambiguous success.
Keep the danger zone deliberate
TypeNegativePriorityHigh- Test data
- Trigger account deletion, plan downgrade and data reset
- Expected result
- Each requires explicit confirmation naming the consequence, is separated from routine controls, and cannot be triggered by a single misplaced click.
Remain usable on a narrow viewport
TypeCompatibilityPriorityMedium- Test data
- The full settings screen on a small viewport with the soft keyboard open
- Expected result
- The focused field stays visible, tabs or sections remain reachable, and no save control is hidden behind the keyboard.
Complete every settings task with a keyboard and a screen reader
TypeAccessibilityPriorityHigh- Test data
- Keyboard only navigation through tabs, toggles, the avatar control and the confirmation dialogues
- Expected result
- Toggle state is announced, save results and errors are announced rather than only shown, and dialogues trap and restore focus correctly.
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. Anything that reports a save which did not happen, lets one user change another profile, or exposes personal data through a profile surface is High. Cosmetic settings are Medium.
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.
Fail one field, save the rest
Changing a name and seeing it stick is the whole of most settings testing. These four conditions are where settings lie to the user.
Make one field fail on the server
A blanket success message over a partial write is the defect here. The user believes six things changed, five did, and nobody finds out until it matters.
Reject the change after the interface accepted it
Optimistic updates have to roll back. Leaving the new value on screen means the user is convinced a setting is active when the server never took it.
Send fields you should not own
Put role, plan, verified status and balance into the profile payload. A settings form is the quietest place in the product to attempt a privilege escalation.
Change the password, then use the other devices
If those sessions still work, the change did not evict anyone. That is the exact moment a user changes their password for, and it silently failed.
Why settings defects erode trust
A settings screen is a promise that what the user typed is now true, and the fastest way to break that promise is a success message the server did not earn. Optimistic interfaces make this the default failure: the value updates locally, the request fails or partially fails, and nothing corrects the display. The user leaves believing a notification preference is off, a timezone is set or a visibility flag is private, and behaves accordingly. Testing it means forcing a single field to fail server side and checking that the interface says which one, rather than reporting the whole form as saved.
The security cases on this screen are disproportionate to how mundane it looks. A profile update endpoint that accepts a role, plan or verified flag from the client is a privilege escalation wearing an ordinary form. Changing email or password without re-authentication turns any unattended session into an account takeover. And a password change that does not invalidate other sessions fails at precisely the moment it is needed, because the user is usually changing it in response to a suspected compromise.
Free text on a profile is rendered by other people, which makes it an output encoding problem rather than an input validation one. A display name containing markup will often be escaped correctly on the profile page and rendered raw in a mention, an admin view, an export or an email, because encoding was applied where the value was entered rather than everywhere it appears. The avatar is the same shape of problem in binary form: accepted on extension rather than content, and served from the application origin where an SVG can execute.
Finally, the settings that look cosmetic have reach. A timezone change has to move timestamps without moving calendar dates such as a birthday, and it has to reach scheduled items by a documented rule rather than shifting them unexpectedly. A locale change has to reach notifications, exports and generated documents, not only the interface. And a visibility flag has to remove the field from the response payload rather than merely hiding it, because a value that is present but not displayed is still readable.
Suggest an improvementTesting account management flows?
QAble tests account surfaces end to end, including save integrity, re-authentication rules, session invalidation, upload handling and how preferences propagate.
Usability 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 VR and AR experiences
Test cases28 cases on the frame rate comfort floor, tracking loss, guardian boundaries, involuntary camera movement, AR anchor drift and spatial data privacy.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 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 settings behaviour proven, not assumed?
QAble covers functional, state and security paths with ISTQB-certified engineers. Start with a free QA audit of your product.