Wireframes, prototypes and usability tests¶
Exercise wireframes-prototypes-tests-annex.pdf · PDF
A volunteer sits in front of four grey screens of NoteBox, a small notes app. The task: "You want your friend Anna to see your shopping list." The room stays silent. The volunteer opens the note and hovers over Save. Then stops. The share action is behind a button called Options. Would you have spotted that bad name yourself? You could not: you already know where Share is.
That was a usability test. It took three minutes and four grey screens, before anyone chose a colour or wrote a line of code. This page shows you how to do the same to your own app: sketch it cheaply, make it clickable, watch a real person try it, and have it inspected.
What you will learn
- Tell a wireframe, a user flow and a prototype apart, and say what each is for
- Draw the flow of one task and wireframe its screens in minutes, not hours
- Link wireframes into a clickable prototype with a flow starting point
- Run a think-aloud usability test: write a task, stay silent, record what happened
- Measure effectiveness, efficiency and satisfaction on a real person
- Run an accessibility audit by hand and with Lighthouse and axe, and say what the tools cannot see
- The trap: why a Lighthouse score of 100 does not mean "accessible"
The architect¶
Remember the building from the Accessibility page? This is the same building, one step earlier. Nobody pours concrete first. An architect draws a floor plan, builds a scale model, walks the future tenants through it, and has an inspector check it against the building code. Moving a wall on paper costs a minute. Moving it in concrete costs a month.
A wireframe is a sketch of one screen: boxes and real words, with no styling.
A user flow is the path through the screens for one task: the screens, and the actions between them.
A prototype is a set of screens linked so that someone can click through them.
| Word | For the architect | Cost to change |
|---|---|---|
| Wireframe | The floor plan of one room | A minute |
| User flow | The route from the door to the kitchen | A minute |
| Prototype | The scale model you can walk a finger through | Minutes |
| (The app, in code) | The building | Days |
flowchart LR
F["<b>User flow</b><br>the route"] --> W["<b>Wireframes</b><br>the floor plans"]
W --> P["<b>Prototype</b><br>the scale model"]
P --> T["<b>Test</b><br>tenants walk through"]
T -->|"move a wall: it costs a minute"| W
T -->|"when it works"| C["<b>Code</b><br>the building"]
Fidelity is how close a sketch is to the finished product. Low fidelity means grey boxes. High fidelity means your design system applied. You start low on purpose.
Careful: a wireframe is not an ugly first draft
It answers a different question. A wireframe asks is this the right screen? The visual design asks does it look right? Show colours too early and people discuss the colours.
Wireframes: four rules¶
- Grey boxes. No colour, one font, no images: just a box with the word "image".
- Real words. "Send invite", not "Button". "Email", not "Lorem ipsum". The words are the interface. If you do not know what the button says, you do not know what it does.
- The right control. The two questions still apply to a grey box.
- Five minutes per screen. If it takes longer, you are decorating.
Build them from a kit of ready pieces (title, field, list row, image placeholder, text lines, buttons, tab bar) with auto layout, and they are quick to rearrange. The handout's Figma file has one.
Look at a finished wireframe. What can you criticise? Structure, order, labels. What can you not criticise? Colours, fonts, icons. That is the point.
User flows: a task, not a tour¶
A flow starts from something a person wants: "I want Anna to see my list", not "the share feature". This is the notation:
| Shape | Means |
|---|---|
| Rounded | Start and end: what the user wants, and how they know it is done |
| Rectangle | A screen |
| Arrow with a label | The action that takes you to the next screen: "tap the note" |
| Diamond (optional) | A decision: "is the email valid?", with a yes and a no arrow |
Here is sharing a note in NoteBox:
flowchart LR
S(["<b>Start</b><br>I want Anna to see my list"]) --> A["<b>1 Notes</b><br>title, search, three rows"]
A -->|"tap the note"| B["<b>2 Note</b><br>title, text, Options, Save"]
B -->|"tap Options"| C["<b>3 Share</b><br>email, message, Send invite"]
C -->|"type the email,<br>tap Send invite"| D["<b>4 Notes</b><br>toast: Invite sent"]
D --> E(["<b>End</b><br>the toast confirms it"])
Count: four screens and four actions (tap, tap, type, tap). Efficiency is visible in a flow before anything is built, because every action costs the user something.
Notice the end. How does the user know it worked? A toast, a new row, a "Sent" screen. A flow with no end is a flow with no feedback.
Once the happy path works, draw the unhappy one:
flowchart LR
C["<b>3 Share</b>"] -->|"tap Send invite"| Q{"<b>Is the email<br>valid?</b>"}
Q -->|"yes"| D["<b>4 Notes</b><br>toast: Invite sent"]
Q -->|"no"| X["<b>3 Share</b><br>inline message<br>under the email"]
X -->|"fix the email"| Q
From your app to a prototype¶
Start from your app's command list, and pick the one task your app exists for.
| Step | Do |
|---|---|
| Task | Write it in one sentence, in the user's words, with no button names |
| Flow | Draw it: start, screens, labelled arrows, end |
| Wireframes | One per screen of the flow, three or four, from the kit, with auto layout only |
| Names | Rename every frame: MyApp · 1 Home |
Three things that often go wrong:
- You start with the login screen. Is logging in what your app is for? Wireframe the task, and assume the user is already in.
- One giant screen does everything. Count the arrows of the flow: each one that changes what you see is a screen.
- Colours and logos appear. Take them away, kindly. They come later.
Make it click¶
In Figma, open the Prototype tab (Shift+E). Then:
- Select a button and drag its dot to the destination frame. Choose On click and Navigate to.
- To go back, add an interaction with the action Back. You draw no arrow, because Back returns to wherever you came from.
- Select the first frame and set it as the Flow starting point. Without it, the prototype may start on the wrong screen.
- Play it with Shift+Space.
One rule catches people out: links only work between top-level frames of the same page. A screen dragged inside another frame cannot be a destination.
Careful: a prototype does not need every button
It needs exactly the path of the task, plus the one or two wrong turns people are likely to take. A dead button during a test is information: write down that they tapped it.
Testing with real users¶
A usability test is a session where a real person tries a real task while you watch.
A heuristic evaluation has experts guess what will go wrong. A usability test shows you. The two find different things, so do both.
The usual method is think-aloud, described by Clayton Lewis at IBM in 1982: the person says what they look at, what they expect and what surprises them. You get their reasoning, not only their taps.
Write a good task¶
The task must give a goal, not the route, and not ask for an opinion.
| Bad | Why | Good |
|---|---|---|
| "Tap Options and share the note." | It gives away the answer | "You want Anna to see your shopping list." |
| "Test the search." | It has no goal | "You wrote down a password last week. Find it." |
| "Do you like the home screen?" | It asks for an opinion | "You have five minutes before class. Add 'buy bread' to your list." |
Three rules for the designer¶
Do not help. Do not explain. Do not defend.
If they ask "where is it?", answer "what would you try?". The app will ship without you sitting next to it. And if you help, you have tested yourself.
| What you catch yourself saying | The rule you just broke |
|---|---|
| "No, the other button." | Do not help |
| "That is because later it will..." | Do not explain |
| "Well, it is only a wireframe." | Do not defend |
When a polite user says "it's fine, very clear", ignore the compliment. Did they hesitate anywhere? Write that down. And when someone gets lost, remember: the user did what the screen suggested, so change the screen.
What to write down¶
The three words of ISO 9241-11 become three things you can measure:
| Word | You record | In your notes |
|---|---|---|
| Effectiveness | Did they finish the task, without help? | Done: yes or no |
| Efficiency | How long did it take, and how many wrong turns? | Time, and where they stopped |
| Satisfaction | "From 1 to 5, how easy was that?", and their exact words | What they said |
It works best with three people, who rotate:
| Role | Job |
|---|---|
| Designer | Reads the task and starts the timer. Then stays silent |
| User | Tries the task on a prototype they have never seen, thinking aloud |
| Note-taker | Fills one row of the table: done, time, where they stopped, exact words |
Why someone new? "I tested it myself and it works" means nothing: you know where everything is, so you are the one person who cannot test it.
How many users?¶
Nielsen and Landauer (1993) found that, with their average figures, 5 users reveal about 85 % of the problems, and the sixth mostly repeats what you saw. So three rounds of five are better than one round of fifteen: you fix between rounds. For a class project, two or three users are already worth a lot. If three out of three miss the button, you do not need a fourth.
The inspector: an accessibility audit¶
The tenants have walked through. Now the inspector checks the building code.
An accessibility audit checks an interface against accessibility rules such as WCAG, by hand and with tools.
By hand, on the wireframe¶
Do not wait until the end: target sizes, labels and order are decided in the wireframe. Even in grey, check these:
| Check | What to look for |
|---|---|
| Targets | At least 24 × 24, and aim for 44 |
| Visible labels | Every field and icon button has its word |
| Nothing by colour alone | Each message has text or an icon as well |
| Tab order | Number the elements of one screen in the order Tab should visit them. Does it make sense? |
By machine, on a real page¶
These tools read real HTML, so they do not run on a Figma file. Your app meets them in Unit 3, but you can try them today on any web page.
| Tool | What it is | Good to know |
|---|---|---|
| Lighthouse | Google's open-source auditor, built into Chrome DevTools. It gives a score from 0 to 100 | Its accessibility checks are run by axe-core |
| axe | Deque's open-source rule engine (2015), with a browser extension | It lists each failure with the element and the WCAG criterion |
To run Lighthouse, open the page in Chrome or Chromium and press F12. Open the Lighthouse tab, tick only Accessibility, and press Analyze page load. Read the score, then open the findings. In Firefox there is no Lighthouse tab, but pagespeed.web.dev shows the same Accessibility category, and the browser's own Accessibility inspector has a Check for issues option.
What the machine cannot see¶
| A tool can check | Only a person can check |
|---|---|
| The contrast of text | Whether the alt text is true |
| Missing alt text | Whether the Tab order makes sense |
| Fields with no label | Whether the error message helps |
| Buttons with no name | Whether a keyboard user can finish the task |
| The page language |
A photo of a dog with alt="A cat" passes every tool. Deque measured its own tools on about 13,000 pages in 2021: automation caught about 57 % of the issues, counted by volume. Lighthouse's own report says that only a subset of accessibility issues can be detected automatically.
The trap: Lighthouse 100
A score of 100 means "no automatic failures". It never means "accessible". It is roughly half of the picture, and the other half needs a person.
From observations to fixes¶
A test gives you a pile of notes. You cannot fix everything, so you need an order. Rate each problem with Jakob Nielsen's severity scale:
| Severity | Means |
|---|---|
| 0 | Not a problem |
| 1 | Cosmetic |
| 2 | Minor |
| 3 | Major |
| 4 | Catastrophe: fix it before release |
Then write your top 3 fixes, each in the same format: screen · heuristic or criterion · severity · what you saw · what you will change. For the volunteer at the start:
2 Note · heuristics 2 and 6 · severity 3 · stopped at Save, could not find how to share · replace Options with a visible Share button
Fix those three, then test again.
Do it for your project
Your file should end up with the task, the flow, at least three linked wireframes, a filled observation table, the audit checks and the top 3. Then apply your fixes and test once more with someone outside the class. Family counts.
Key takeaways¶
- A wireframe sketches one screen, a user flow shows the path of one task, and a prototype links screens so people can click. Start at low fidelity: changes cost minutes, not days.
- A wireframe uses grey boxes and real words. A flow starts from what a person wants, and has an end the user can see.
- A usability test puts a real person in front of a real task. With think-aloud, you hear their reasoning. Your rules: do not help, do not explain, do not defend.
- Record effectiveness, efficiency and satisfaction. About 5 users reveal around 85 % of the problems, so test in small rounds.
- An accessibility audit combines a manual check with tools such as Lighthouse and axe. A score of 100 means no automatic failures, never "accessible".
- Turn your notes into a short list of fixes, ordered by severity.
Quick check¶
1. What is the difference between a wireframe and a user flow?
- A wireframe sketches one screen; a user flow shows the path through screens for one task
- A wireframe is drawn on paper; a user flow is always drawn in a design tool like Figma
- A wireframe shows the final colours; a user flow shows the final fonts and the icons
- A wireframe is for developers; a user flow is for testers and for the final customers
A wireframe is the floor plan of one room. A user flow is the route from the door to the kitchen: the screens, and the actions between them. Neither is about final colours.
2. Why should you start with grey boxes instead of colours?
- Colours make people discuss the look before the structure is right
- Colours cannot be used in Figma until a prototype has been linked
- Colours make a prototype run much more slowly on a phone screen
- Colours are not allowed by WCAG in the first version of a design
A wireframe asks is this the right screen? The visual design asks does it look right? At low fidelity, feedback goes to structure, order and labels, and a change costs a minute.
3. Which of these is a good task for a usability test of a notes app?
- "Your dentist just gave you a date. Make sure you will not forget it."
- "Open the menu, tap New note, and then type the date of your dentist."
- "Tell me what you think of the colours and the look of the new note screen."
- "Please check that the New note button on the first screen works properly."
A good task gives a goal in the user's words, with no button names. Naming the steps gives away the answer, and asking what they think collects an opinion instead of behaviour.
4. During a test, the participant stops and asks you: “What do I press now?” What should you say?
- "What would you try?"
- "The button on the right."
- "It is only a wireframe."
- "It will be clearer later."
The rules are do not help, do not explain, do not defend. The app will ship without you beside it, so where they get stuck is exactly what you came to learn. Write it down and wait.
5. In a usability test, what does the time a person takes to finish the task measure?
- Efficiency
- Effectiveness
- Satisfaction
- Accessibility
Efficiency is the cost of reaching the goal: time and wrong turns. Effectiveness asks whether they finished without help, and satisfaction asks how it felt.
6. Why do Nielsen and Landauer's results favour three rounds of five users over one round of fifteen?
- Five users reveal most problems, and you can fix them between rounds
- Fifteen users in one room would start copying each other's answers
- ISO 9241-11 sets a limit of five users for each usability test
- Testing with more than five users gives results that are all false
With their average figures, 5 users reveal about 85 % of the problems, and the next ones mostly repeat them. Fixing and testing again finds new problems, which one big round cannot do.
7. Which of these can only a person check?
- Whether an image's alt text describes the image correctly
- Whether an image on the page has any alt text at all
- Whether a form field on the page has a label attached
- Whether the text on the page has enough colour contrast
A tool can see that alt text exists, but not that it is true. It can also check contrast and missing labels. That is why a Lighthouse score of 100 means "no automatic failures", not "accessible".
8. You are about to start coding an app for booking padel courts, and you have a flow and wireframes. Select the two cheapest useful steps to take first.
- Link the wireframes and watch someone new try one real task
- Check targets, labels and Tab order on the wireframes by hand
- Run Lighthouse on the Figma file to get an accessibility score
- Apply the final colours so testers can judge the finished look
A clickable prototype tested with a new person shows problems while they cost minutes to fix, and target sizes, labels and order are already decided in the wireframe. Lighthouse reads real HTML, so it cannot run on a Figma file, and colours make people discuss the look.
That closes Unit 1: you can now design screens that are usable, accessible and built from reusable pieces, and you know how to prove it with real people. In Unit 2 you will turn those designs into code with a visual editor.