UX Testing

UX testing is the tester's own inspection of a product's user experience: you walk each user flow as a customer would and judge, at every step, whether navigation, forms and messages get them to their goal without confusion. The reference is stated expectations, such as the approved design and WCAG 2.2, not your taste.

Example: "order a meal" in a food-delivery app is a six-screen flow. A UX pass checks that each screen says where you are, that "Continue" leads where its label promises, and that a declined card produces a message saying what to do next, not "Something went wrong".

Why it matters

A product can pass every functional test and still lose users: the flow completes and the message is technically correct, yet people abandon the cart because the next step is unclear. Nothing crashed, so these failures are rarely reported.

UX testing turns a vague "it feels awkward" into findings a team can act on, each tied to a step and a violated expectation. ISO/IEC 25010:2023 places these qualities under interaction capability, with sub-characteristics such as operability, user error protection and self-descriptiveness, so a UX finding backed by a stated expectation is a quality defect like any other.

What UX testing checks

Usability testing observes participants; UX testing, as QA teams practise it, is the inspection you do yourself, every sprint, without them. It is not an ISTQB term; the nearest ISTQB technique is checklist-based testing, an experience-based technique: a fixed checklist applied while walking a flow, a narrower and repeatable form of heuristic evaluation.

Your test oracle, the source of the expected result, has four parts: the approved design, the product's own conventions (the same button behaves the same everywhere), recognised heuristics such as Nielsen Norman Group's ten, and WCAG 2.2, whose criteria on forms, navigation and errors are precise enough to cite. A finding backed by one of them is a defect; one backed only by preference is a suggestion.

  • User flows: the screens from a goal to its confirmation, with the ways out and back in.
  • Navigation: where the user is, where they can go, how they return.
  • Forms: labels, hints, defaults, validation timing and the data after an error.
  • Messages: errors, confirmations and empty states that say what happened and what to do next.

User flows and navigation

Write the flow as steps, each with a screen and an action: "Cart → Address → Delivery time → Payment → Review → Confirmation". Walk the happy path once, then every exit and return: Back from each step, refresh, reopening the app, a session expiring on Payment, an email link landing mid-flow. A good flow lets the user back out of any step without losing work (heuristic 3, user control and freedom).

At each step, ask three questions. Where am I: page title, highlighted menu item, step indicator ("Step 2 of 5"). Where can I go: buttons and links that name their action ("Continue to payment", not "OK"). How do I get back: a Back control that keeps the step's data. WCAG 2.2 gives citable criteria: 2.4.2 Page Titled (a title describing the page's topic or purpose), 2.4.4 Link Purpose (link text, with its context, says where it leads) and 3.2.3 Consistent Navigation (repeated menus keep the same relative order).

Flow: Order a meal (mobile web)

Step  Screen         Action          Exits to test
1     Cart           Continue        Back, refresh
2     Address        Save address    Back (cart kept?), refresh (form kept?)
3     Delivery time  Pick a slot     slot taken while choosing
4     Payment        Pay             card declined, session expired, Back
5     Review         Confirm order   double tap on Confirm
6     Confirmation   -               refresh (order repeated?), link from the email

Try it: User Story → Test Scenarios Try it: Test Scenario Generator

Forms and error messages

Forms are where many UX defects live, because there the product asks the user to do work. Check each form in three passes. Empty: visible labels, required fields marked in words, format hints such as DD/MM/YYYY before typing, sensible defaults and a fitting mobile keyboard, all preventing errors (heuristic 5, error prevention). Realistic valid data: a full Arabic name, a phone number with spaces, pasted values. Invalid data, as in the lesson on positive and negative testing.

On the invalid pass, watch timing and aftermath. Validation firing while the user still types is a finding; the usual expectation is validation on leaving the field or on submit, with focus moved to the first error. Typed values must survive the error, and the message belongs next to its field. WCAG 3.3.1 requires the field in error to be identified and the error described in text; 3.3.3, a known correction to be suggested; 3.3.7 Redundant Entry, information already given in the same process to be auto-populated or selectable, with exceptions such as re-entry for security. A payment step that makes the user retype the delivery address is a citable defect.

Heuristic 9 asks for messages in plain language, without codes, that state the problem precisely and suggest a solution. For a field that gives four checkable parts, in plain words without blame: name the field, say specifically what is wrong, say how to fix it and, where a format is involved, give a working example. Error 4011: Invalid input has none; "Mobile number: this number has 8 digits. Enter 9 digits starting with 5, for example 512345678" has all four. Confirmations and empty states pass the same test.

A good error message names the field, says what is wrong, says how to fix it and gives an example, in plain words; Error 4011: Invalid input puts a code and a vague phrase in the first two places and has neither a fix nor an example.

Good message

Part 1:Mobile number: Part 2:this number has 8 digits. Part 3:Enter 9 digits starting with 5, Part 4:for example 512345678.

Weak message, as shipped

Part 1:Error 4011: Part 2:Invalid input.

  • 1–4Plain words throughout: no code, no blame
  1. 1Names the field or the placeWhere the problem is, in the words the label uses. The weak message puts an error code here, which tells the user nothing.WCAG 3.3.1
  2. 2Says what is wrong, specificallyThe user’s value measured against the rule: 8 digits where 9 are needed. Invalid input names no rule and no value.WCAG 3.3.1
  3. 3Says how to fix itThe rule as an instruction the user can act on, which WCAG 3.3.3 asks for when a correction is known.missing in the weak message
  4. 4Gives an exampleA value that would pass, so the user can copy its shape instead of guessing.missing in the weak message

Also check around the message: it sits next to the field, the typed value is still there, focus moved to the field, and the wording is the same on every form.

Text version
Field: mobile number. Rule: 9 digits starting with 5.

Weak:  Error 4011: Invalid input.
Good:  Mobile number: this number has 8 digits.
       Enter 9 digits starting with 5, for example 512345678.

Also check:  message sits next to the field        yes / no
             typed value is still in the field      yes / no
             focus moved to the field               yes / no
             same wording on every form             yes / no

Try it: Validation Test Generator Try it: Mock Error Payload Generator Try it: Fake Name Generator

The UX checklist, applied to a checkout

Turn these questions into a checklist with ids and one yes-or-no condition per item, as in the lesson on checklist-based testing. Run it per flow, not per page. Here it is on the meal-ordering flow, with what it found:

  • FLW-04, two orders from a double tap on Confirm: Critical, a functional defect found by a UX check.
  • FLW-02 and FRM-04, the cart empties on Back from Payment and the address form clears after an error: Major, the user loses work twice.
  • MSG-01, "Something went wrong" on a declined card: Major, the user cannot tell whether to retry, change card or call the bank; proposed text attached.
  • NAV-01, NAV-02, FRM-02, no step indicator, "OK" instead of "Continue to delivery time", a text keyboard for the card number: Minor each, grouped in one report.
UX checklist, run per flow                                 Result
FLW-01  Happy path completes without a dead end            pass
FLW-02  Back from every step returns with data intact      fail: Payment -> Cart empties
FLW-03  Refresh on any step keeps the entered data         pass
FLW-04  Double submit cannot create two orders             fail: orders 1042 and 1043
NAV-01  Every screen shows where the user is               fail: no step indicator
NAV-02  Every button names its action or destination       fail: "OK" on Address
NAV-03  Menus and controls in the same place everywhere    pass
FRM-01  Labels visible, required fields marked in words    pass
FRM-02  Hints before typing, mobile keyboard fits field    fail: text keyboard for card
FRM-03  No error shown while the user is still typing      pass
FRM-04  After an error, typed values are kept              fail: address form cleared
MSG-01  Error names the field, the problem and the fix     fail: "Something went wrong"
MSG-02  Confirmation says what happened and what is next   pass
MSG-03  Empty states say what to do                        n/a

Try it: AI QA Checklist Generator

Common mistakes

  • Reporting taste ("the button should be blue") as a defect. Every finding names the expectation it violates.
  • Walking only the happy path, when many UX defects appear only on Back, refresh, timeout or re-entry.
  • Testing forms with convenient data: short Latin names, the default country. Use realistic data in the product's languages.
  • Accepting "Something went wrong" because the server really failed. If the user cannot tell what to do next, the message is a defect.
  • Checking fields one by one without submitting the whole form, so you never see what happens to the data after an error.
  • Trusting your own ease: the flow felt simple because you know the product. Report what you observed against the checklist.

The QA perspective

Run the UX pass twice: on the design or prototype, when a confusing step costs only a conversation, and on the built feature as part of the story's testing. Walk the flow on a phone and a desktop, in every language the product ships.

Record the screen, the step, what the user sees, the expectation violated and the severity: a lost order is Critical, lost data Major, a vague message Major or Minor depending on whether the user can recover. Ask the designer and the product owner for the intended path and the approved message wording, and rerun the checklist whenever a flow changes.

Practice exercise

Run a UX pass over a password-reset flow

Your task

Below is a web app's password-reset flow as a tester recorded it. Apply the UX checklist: list each finding with its checklist id, what the user sees, the expectation violated and a severity.

Then rewrite the worst message.

Material
Step 1  Login page: a link "Forgot?" under the password field.
Step 2  Reset page: one field with the placeholder "Email", no label; button "Submit".
        Typing the first letter shows "Invalid email" in red under the field.
        Submitting a valid email shows "Done." and stays on the page.
Step 3  Email "Reset your password" with a link that opens step 4.
Step 4  New password page: fields "Password" and "Repeat"; button "Submit".
        Mismatched values: "Error: PWD_MISMATCH" at the top, both fields cleared.
        Browser Back from this page returns to step 2 with the email field empty.
Step 5  After success: redirect to the login page with no message.
Steps
  1. Map the flow: screen, action and exits to test.
  2. At each step, ask: where am I, where can I go, how do I get back.
  3. Check each form: labels, hints, validation timing, data kept after an error.
  4. Check each message against the four parts of a good message.
  5. Record each finding with id, evidence, expectation and severity.
Show the model answer
Model answer

NAV-02: "Forgot?" does not name its action; expect "Forgot your password?". "Submit" on steps 2 and 4; expect "Send reset link" and "Save new password". Minor.

FRM-01: step 2 uses a placeholder instead of a label, so the name disappears while typing (related: WCAG 3.3.2 Labels or Instructions). Major. FRM-03: "Invalid email" fires on the first letter instead of on leaving the field. Minor.

MSG-02: "Done." says neither what happened nor what to do next; expect "If an account exists for this email, we have sent a reset link. Check your inbox and spam folder." Major. Step 5 gives no confirmation; expect "Your password has been changed. Sign in with your new password." Minor.

MSG-01, the worst: Error: PWD_MISMATCH names no field and suggests no fix (WCAG 3.3.1, 3.3.3), and sits at the top of the page. Major. Replacement: "Repeat password: the two passwords do not match. Type the same password in both fields." FRM-04: both fields clear silently; if that is deliberate, the message should say so. Minor. FLW-02: Back loses the email. Minor.

Frequently asked questions

Is UX testing the same as usability testing?

No. Usability testing observes real participants doing tasks and measures their success, time, errors and satisfaction. UX testing is the tester's own inspection of flows, navigation, forms and messages against a checklist and recognised expectations. Do the UX pass first; it removes the obvious obstacles so a usability session can reveal the subtle ones.

How do I report a UX finding without it being dismissed as opinion?

Name the expectation. "The declined-card message does not say what to do next, violating heuristic 9, help users recover from errors; proposed text attached" is a defect with a fix. "The message is unfriendly" is an opinion. Attach a screenshot and, for messages, the replacement wording.

Does UX testing replace accessibility testing?

No. They overlap on forms and navigation, and the WCAG criteria cited here belong to both, but accessibility testing also covers screen readers, keyboard operation, contrast and target size, which are taught in the accessibility module.

Can UX testing be automated?

Parts of it: automated checks can confirm that a flow completes, that a form keeps its values after an error and that each page has a title. Judging whether a message is clear or a step is confusing still needs a person, so keep the checklist as a manual regression step for flows that change.

References

Practise with Mutqan tools

Generate validation test cases for form fields: required, format, length, range, pattern and cross-field rules.

Test Design

Generate field-level validation error payloads for forms and APIs, in bulk, for UI error-state testing.

Mocking

Generate random first and last names in English, Arabic and Hindi with gender and format options.

Test Data

Generate high-level test scenarios covering functional, negative, security, usability and compatibility angles for a feature.

Test Design

Generate a tailored QA checklist (functional, UI, API, security, performance, accessibility, release) for any feature with Mutqan AI.

Test Generation AI

Go deeper

Your progress on this topic

Part of the QA Roadmap

Before this topic

Related topics in this module