Usability Testing — Heuristics and User Research

8 min read

A feature can be functionally correct and still fail its users. The form submits, the data saves, the confirmation appears — but users cannot find the submit button, cannot understand the error message, or cannot figure out how to undo an action they did not mean to take. Usability testing measures the gap between "it works" and "people can use it."

Two approaches to usability evaluation

Heuristic evaluation is an expert-led review. A small number of evaluators (typically 3–5) independently examine the application against a set of established usability principles, note violations, then combine their findings. It requires no users and no scheduling — a trained evaluator can complete a heuristic review of a core flow in a few hours. The output is a prioritised list of usability issues with severity ratings.

User research / usability testing brings real users into the process. Participants are given representative tasks to complete while a facilitator observes and takes notes without intervening. Even 5 participants can surface 80% of the most significant usability problems in a flow. Methods range from moderated in-person sessions to unmoderated remote testing via tools like UserTesting.com or Maze.

Both methods are valuable. Heuristic evaluation is fast and cheap; user testing reveals real friction points that experts miss because they already understand the system.

Nielsen's 10 heuristics

Jakob Nielsen's 10 Usability Heuristics are the most widely used framework for expert evaluation. They are technology-agnostic principles that apply to any interface — web, mobile, desktop, or hardware.

Nielsen's 10 Heuristics
  • – H1: Show system status (spinners, progress)
  • – H2: Use real-world language, not jargon
  • – H3: Undo, cancel, easy exits
  • – H4: Follow platform conventions
  • – H5: Prevent errors — confirm destructive actions
  • – H9: Clear error messages with solutions
  • H6: Show options — don't rely on memory –
  • H7: Shortcuts for frequent users –
  • H8: Minimal design — no irrelevant information –
  • H10: Help and documentation when stuck –

H1 — Visibility of system status. Users should always know what is happening. A button that processes a payment without any loading indicator leaves users wondering whether their click registered. A progress bar that disappears at 99% creates anxiety. Every action should have visible, timely feedback.

H2 — Match between system and the real world. Use the words, phrases, and concepts users know — not system internals. "Error 0x80004005" means nothing. "Your session expired — please log in again" means something.

H3 — User control and freedom. Users make mistakes. Every destructive or hard-to-reverse action should have an undo path. Modals should close with Escape. Forms should have a clear "cancel" option that does not silently wipe entered data.

H4 — Consistency and standards. Users learn patterns from every app they use. Deviating from platform conventions — a save icon that deletes, a left-pointing arrow that means "forward" — creates friction and errors.

H5 — Error prevention. The best error message is the one that never needs to appear. Confirm before permanent deletion. Disable submit until required fields are filled. Warn users who are navigating away from an unsaved form.

H6 — Recognition rather than recall. Do not make users remember information from one screen to apply it on another. Show available options, provide sensible defaults, surface recent activity.

H7 — Flexibility and efficiency of use. Power users should not be slowed by interfaces designed for novices. Keyboard shortcuts, batch actions, and saved preferences accelerate frequent workflows.

H8 — Aesthetic and minimalist design. Every element on a screen competes for attention. Remove anything that does not serve the current task. Information density is not the same as information richness.

H9 — Help users recognise, diagnose, and recover from errors. Error messages should state what went wrong, why, and what the user can do about it — in plain language. "Something went wrong" fails all three criteria.

H10 — Help and documentation. Even well-designed systems sometimes need help. Help content should be searchable, task-focused ("how do I export a report?"), and as close to the point of need as possible.

The System Usability Scale

The SUS (System Usability Scale) is a 10-question survey that produces a score from 0 to 100. It is fast, widely validated, and language-agnostic. A score of 68 represents average usability; above 80 is considered "good"; above 90 is excellent. SUS is often run at the end of a usability testing session to give a quantitative complement to qualitative observations.

QA's role in usability

Usability is primarily UX territory — design decisions, user research facilitation, and interaction pattern choices belong to UX teams. But QA engineers contribute in two ways:

First, notice usability problems during functional testing and file them. If you spend a minute trying to find the submit button, or if an error message gives you no useful information, that is a bug. Functional tests find functional bugs; experienced testers notice everything else too.

Second, validate that UX team recommendations are implemented correctly. If the UX team specified a confirm dialogue before permanent deletion and it is not there, that is a test failure.

⚠️ Common mistakes

  • Confusing heuristic evaluation with usability testing. An expert review finds violations of principles; it does not find the real-world friction points that only real users discover. Both methods find different things, and both are worth doing.
  • Treating usability as subjective. "I think it's clear" is not a usability test result. "5 out of 5 users attempted to click the image instead of the button" is. Ground usability feedback in observable user behaviour, not opinion.
  • Filing usability bugs with no severity. Usability issues range from cosmetic preferences to complete task-blocking failures. Rate them by impact on task completion, not by how annoyed the bug reporter was. A confusing error message that causes 20% of users to abandon checkout is a high-severity bug.

🎯 Practice task

Run a heuristic evaluation on one core flow of a product you test.

  1. Pick a single user journey of 5–8 steps (sign-up, checkout, account settings).
  2. Walk through the flow three times — once normally, once making deliberate mistakes, once as a first-time user.
  3. For each of the 10 heuristics, note any violations you observe. Write each violation as a one-line finding with the heuristic number, the screen, and the issue.
  4. Rate each violation: cosmetic (H), minor (M), major (Ma), or catastrophic (C) — based on how severely it would affect a real user completing the task.

This exercise produces a usability bug list from a 30-minute solo review. That list is the starting point for any usability improvement conversation.

// tip to track lessons you complete and pick up where you left off across devices.