UX-design, brukertesting og universell utforming.
En teknisk perfekt applikasjon som er vanskelig å bruke, har lite verdi. Brukeropplevelse (UX - User Experience) handler om å skape produkter som er intuitive, effektive og behagelige å bruke.
I dette kapittelet skal vi se på UX-prinsipper, heuristisk evaluering, brukertesting og tilgjengelighet. Dette er essensielt for å vurdere brukervennligheten i egne og andres programmer.
1. Brukerkontroll og frihet
Brukere gjør feil. Gi dem alltid en utvei (angre/undo, avbryt, tilbake).
2. Konsistens
Like ting skal se like ut og fungere likt. Ikke overrask brukeren.
3. Synlighet av systemstatus
Hold brukeren informert (laster..., lagret!, feil oppstod).
4. Forebygging av feil
Design for å hindre feil før de skjer (validering, bekreftelser).
5. Gjenkjennelse fremfor hukommelse
Ikke krev at brukere husker informasjon mellom skjermer. Vis alternativer synlig.
6. Fleksibilitet og effektivitet
Støtt både nybegynnere (tydelige knapper) og eksperter (hurtigtaster).
7. Estetikk og minimalistisk design
Hver ekstra informasjonsbit konkurrerer med relevant informasjon.
8. Tilgjengelighet
Design for alle, inkludert brukere med funksjonsnedsettelser.
// Ingen feedback når data sendes
button.addEventListener('click', async () => {
await sendData();
// Brukeren vet ikke om noe skjedde
});God: Tydelig feedback
button.addEventListener('click', async () => {
button.disabled = true;
button.textContent = 'Sender...';
try {
await sendData();
button.textContent = 'Sendt!';
setTimeout(() => {
button.disabled = false;
button.textContent = 'Send';
}, 2000);
} catch (error) {
alert('Feil: ' + error.message);
button.disabled = false;
button.textContent = 'Send';
}
});Dårlig: Irreversible handlinger
<button onclick="slettAlt()">Slett</button>God: Bekreftelse før farlige handlinger
function slettMedBekreftelse() {
if (confirm('Er du sikker på at du vil slette alt? Dette kan ikke angres.')) {
slettAlt();
}
}Dårlig: Inkonsistent navigasjon
Tilbake-knapp øverst venstre på noen sider, nederst høyre på andre.
God: Konsistent plassering
Samme navigasjonsstruktur på alle sider.
Nielsens 10 heuristikker:
1. Synlighet av systemstatus
2. Match mellom system og virkelig verden
3. Brukerkontroll og frihet
4. Konsistens og standarder
5. Forebygging av feil
6. Gjenkjennelse fremfor hukommelse
7. Fleksibilitet og effektivitet
8. Estetikk og minimalistisk design
9. Hjelp brukere å kjenne igjen, diagnostisere og fikse feil
10. Hjelp og dokumentasjon
Prosess:
1. Evaluer hver side/funksjon mot heuristikkene
2. Noter brudd på heuristikker
3. Vurder alvorlighetsgrad (0-4)
4. Prioriter og fiks problemer
Fordeler:
- Rask og billig
- Finner mange problemer
- Kan gjøres tidlig i utviklingen
Ulemper:
- Finner ikke alle problemer ekte brukere har
- Krever erfarne evaluatorer
HTML:
<form>
<input type="text" name="user">
<input type="text" name="pass">
<button>OK</button>
</form>Problemer funnet:
1. Brudd på heuristikk #9 (Feilmeldinger):
- Ingen validering eller feilmeldinger
- Alvorlighet: 3/4 (stor)
- Forslag: Vis tydelige feilmeldinger
2. Brudd på heuristikk #2 (Match virkelighet):
- Input-felter mangler labels (hva skal skrives inn?)
- Knapp sier bare "OK" (ikke beskrivende)
- Alvorlighet: 3/4
- Forslag: Legg til labels og tydelig knapp-tekst
3. Brudd på heuristikk #5 (Forebygging):
- Passord-felt er type="text", ikke type="password"
- Alvorlighet: 4/4 (kritisk sikkerhetsproblem)
- Forslag: Bruk riktig input-type
Forbedret versjon:
<form id="loginForm">
<label for="brukernavn">Brukernavn:</label>
<input type="text" id="brukernavn" name="brukernavn" required>
<label for="passord">Passord:</label>
<input type="password" id="passord" name="passord" required>
<button type="submit">Logg inn</button>
<div id="feilmelding" style="color:red;"></div>
</form>Typer brukertesting:
1. Moderert testing
- En moderator er til stede
- Brukeren "tenker høyt" mens de utfører oppgaver
- Moderator kan stille oppfølgingsspørsmål
2. Umoderert testing
- Brukeren tester alene (ofte hjemmefra)
- Opptak av skjerm og lyd
- Billigere og når flere brukere
3. A/B-testing
- To versjoner av samme funksjon
- Måle hvilken som gir best resultat
- Datadrevet beslutning
Prosess for moderert test:
1. Definer mål: Hva vil du teste?
2. Lag oppgaver: "Finn og kjøp en laptop under 10 000 kr"
3. Rekrutter brukere: 5-8 brukere (Nielsen: 5 brukere finner 85% av problemer)
4. Gjennomfør test: Observer, ta notater
5. Analyser: Identifiser mønstre og problemer
6. Implementer forbedringer
Nøkkelspørsmål:
- Hvor lang tid tok oppgaven?
- Hvor mange feil gjorde brukeren?
- Hvor fornøyd var brukeren (subjektivt)?
- Fullførte de oppgaven?
Oppgave til bruker:
"Du skal kjøpe en bok til 299 kr. Legg den i handlekurven og fullfør kjøpet. Tenk høyt mens du gjør det."
Observasjoner:
Bruker 1 (Kari, 28 år):
- Fant "Legg i kurv"-knappen umiddelbart (00:05)
- Usikker på om produktet ble lagt til (manglende feedback)
- Lette etter handlekurv-ikon i 12 sekunder
- Klikket "Kjøp nå" ved et uhell, ville bare se kurven
- Kommentar: "Jeg vil bare se hva som ligger i kurven uten å kjøpe nå"
Bruker 2 (Ola, 45 år):
- Klikket "Legg i kurv" (00:08)
- Sa høyt: "Skjedde det noe? Jeg vet ikke om det fungerte"
- Scrollet ned for å lete etter kurv
- Ga opp etter 20 sekunder, klikket på logo for å starte på nytt
Identifiserte problemer:
1. Ingen visuell feedback når produkt legges i kurv (kritisk)
2. Handlekurv-ikon er vanskelig å finne
3. Forvirrende knapper ("Kjøp nå" vs "Se kurv")
Anbefalte forbedringer:
// Vis tydelig feedback når produkt legges til
function leggIKurv(produkt) {
// Legg til i kurv
handlekurv.push(produkt);
// Vis toast-melding
visMelding(`${produkt.navn} lagt i handlekurven!`);
// Oppdater antall i kurv-ikon
oppdaterKurvAntall();
// Animasjon på kurv-ikon
kurvIkon.classList.add('bounce');
}WCAG (Web Content Accessibility Guidelines) har fire prinsipper (POUR):
1. Perceivable (Oppfattbar)
- Alternativ tekst for bilder (alt-attributt)
- Undertekster for video
- Fargekontrast (minst 4.5:1 for normal tekst)
2. Operable (Anvendbar)
- Tastaturnavigasjon (alt tilgjengelig uten mus)
- Ingen tidsbegrensninger brukeren ikke kan kontrollere
- Unngå blinkende innhold (kan utløse epilepsi)
3. Understandable (Forståelig)
- Klart språk
- Forutsigbar navigasjon
- Hjelp ved feilinput
4. Robust
- Fungerer med hjelpemiddelteknologi (skjermlesere)
- Semantisk HTML
Lovkrav:
I Norge er offentlige nettsider lovpålagt å følge WCAG 2.1 nivå Å.
<div onclick="submit()">Send</div>
<img src="logo.png">
<span style="color: #777; background: #999;">Viktig melding</span>Problemer:
- <div> som knapp - ikke tastaturnavigasjon, ingen semantikk
- Bilde uten alt-tekst - skjermlesere vet ikke hva det er
- Dårlig fargekontrast - vanskelig å lese
God - Tilgjengelig:
<button type="submit" onclick="submit()">Send skjema</button>
<img src="logo.png" alt="Firmaets logo">
<p style="color: #000; background: #fff;" role="alert" aria-live="polite">
Viktig melding
</p>Tastaturnavigasjon:
<nav>
<a href="#hovedinnhold">Hopp til hovedinnhold</a>
</nav>
<main id="hovedinnhold" tabindex="-1">
<!-- Innhold -->
</main>ARIA-attributter (for skjermlesere):
<!-- Ekspanderbar seksjon -->
<button
aria-expanded="false"
aria-controls="innhold"
onclick="toggle()">
Vis mer
</button>
<div id="innhold" hidden>
Skjult innhold...
</div>
<!-- Loading-indikator -->
<div role="status" aria-live="polite">
<span aria-busy="true">Laster data...</span>
</div>Test tilgjengelighet:
- Prøv å navigere med bare TAB-tasten
- Slå av CSS - er innholdet fortsatt forståelig?
- Bruk skjermleser (NVDA for Windows, VoiceOver for Mac)
- Bruk verktøy som Lighthouse i Chrome DevTools
Nå skal du løse oppgaver om brukeropplevelse, heuristisk evaluering, brukertesting og tilgjengelighet.
Oppsummering
I dette kapittelet har du lært:
- Brukeropplevelse (UX): god vs. dårlig design.
- Heuristisk evaluering: vurdere mot anerkjente prinsipper.
- Brukertesting: teste løsningen med ekte brukere.
- Tilgjengelighet: kodeeksempler for universell utforming.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| UX | Brukeropplevelse |
| Heuristisk evaluering | Vurdering mot anerkjente designprinsipper |
| Brukertesting | Testing med ekte brukere |
Oppgaver
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.