Adressformular-Tests scheitern an vorhersehbaren Stellen. Die Felder sind einfach, also wird das Formular schnell gebaut – und dann verstümmelt es still und leise eine kanadische Postleitzahl, verschluckt eine deutsche führende Null oder verlangt ein Bundesland, nachdem der Nutzer Hongkong ausgewählt hat. Eine Checkliste ist hier mehr wert als exploratives Testen, weil die Fehlermenge bekannt und endlich ist.
Dies ist eine 40-Punkte-Checkliste, gruppiert in acht Bereiche, mit der konkreten Regel hinter jedem Punkt. Sie setzt ein Formular mit Adresszeile 1, Adresszeile 2, Stadt, Region, Postleitzahl und Land voraus, was die überwiegende Mehrheit der Checkout- und Signup-Flows abdeckt. Jeder Punkt lässt sich ohne Zugriff auf das Backend beobachten, und jeder entspricht einem Defekt, der irgendwo bereits ausgeliefert wurde.
1. Feldinventar und Beschränkungen
Schreiben Sie zunächst jedes Feld, seinen Zweck, sein Speicherlimit und ob es erforderlich ist, auf. Ohne diese Tabelle lässt sich die Hälfte der Defekte in dieser Checkliste nicht bewerten, denn „das Formular hat meine Adresse abgelehnt“ ist nicht umsetzbar, bis man weiß, welches Feld abgelehnt hat und warum.
Beschränkungen sollten pro Land gelten, nicht global. Eine einzige maximale Postleitzahllänge von 10 funktioniert für die meisten Länder und bricht für Irland bei 8 Zeichen mit Leerzeichen, und eine globale maximale Städtelänge von 30 schneidet viele echte Namen ab. Setzen Sie großzügige Limits und validieren Sie das Länder-Muster statt einer Länge, die für einen Markt gewählt wurde.
| Feld | Erforderlich wenn | Empfohlenes Maximum | Validieren als |
|---|---|---|---|
| Adresszeile 1 | Immer, außer bei reinen PO-Box-Formularen | 100 Zeichen | Freitext, nach Trim nicht leer |
| Adresszeile 2 | Nie | 100 Zeichen | Freitext, optional |
| Stadt | Immer | 85 Zeichen | Freitext, nicht nur eine Liste |
| Region | Wo das Land Regionen hat | 3 Zeichen für US und CA | Kontrollierte Liste pro Land |
| Postleitzahl | Wo das Land eine hat | 12 Zeichen | Länder-Muster |
| Land | Immer | 2-Buchstaben-Code plus Name | Feste Liste |
2. Länder- und Regionsabhängigkeit
Ein Länderwechsel muss die Region zurücksetzen, das Postleitzahlfeld neu beschriften, Tastatur und Muster ändern und jeden veralteten Validierungszustand löschen. Der klassische Bug ist eine kanadische Provinz, die nach dem Wechsel zu den Vereinigten Staaten ausgewählt bleibt, was ein scheinbar gültiges Formular mit einem unmöglichen Wertepaar absendet.
Hongkong und die Vereinigten Arabischen Emirate haben keine Postleitzahlen, also muss das Feld optional werden und das Label sollte das sagen. Japan kehrt die Adressreihenfolge um, und das Formular sollte die Felder entweder in der lokalen Reihenfolge präsentieren oder klarstellen, dass die westliche Reihenfolge erwartet wird. Testen Sie den Wechsel in beide Richtungen und testen Sie einen Länderwechsel, nachdem bereits ein Validierungsfehler angezeigt wurde.
| Länderwechsel | Erwartete Regionsliste | Erwartetes Postleitzahlverhalten |
|---|---|---|
| US zu CA | Provinzen und Territorien | A1A 1A1-Muster, Leerzeichen erlaubt |
| CA zu US | 50 Staaten plus DC und Territorien | 5 Ziffern oder ZIP+4 |
| Beliebig zu HK | Distrikte | Optional, leer erlaubt |
| Beliebig zu AE | Emirate | Optional, leer erlaubt |
| US zu GB | Counties oder Freitext | Outward- und Inward-Code |
| GB zu JP | Präfekturen | 3-4 Ziffern, Bindestrich erlaubt |
3. Validierungszeitpunkt und -zustand
Validieren Sie das Format bei Blur, validieren Sie Pflichtfelder beim Absenden und löschen Sie einen Fehler, sobald der Wert gültig wird. Bei jedem Tastendruck zu validieren bestraft einen Nutzer, der gerade eine Postleitzahl eintippt, und nur beim Absenden zu validieren bedeutet, dass der Nutzer sechs Fehler auf einmal ohne Hinweis entdeckt.
Deaktivieren Sie niemals den Absenden-Button als Ersatz für Validierung. Ein deaktivierter Button ohne Erklärung ist die häufigste Barrierefreiheits-Beschwerde bei Adressformularen, weil der Nutzer nicht erkennen kann, was fehlt, und ein Screenreader die Änderung möglicherweise nicht ansagt. Lassen Sie den Button aktiv, senden Sie ab und zeigen Sie eine Zusammenfassung mit Links zu jedem Feld.
| Ereignis | Was validieren | Was anzeigen |
|---|---|---|
| Bei Änderung | Konsistenz von Land und Region | Abhängige Felder zurücksetzen |
| Bei Blur | Format des Feldes, das den Fokus verloren hat | Inline-Fehler, falls ungültig |
| Bei Eingabe nach Fehler | Erneut prüfen und löschen, falls behoben | Fehler sofort entfernen |
| Beim Absenden | Alle Felder, einschließlich Pflichtfelder | Zusammenfassung plus Fokus auf ersten Fehler |
| Bei Serverantwort | Feldbezogene Serverfehler | Zurück auf dieselben Feld-IDs abbilden |
4. Fehlertexte und Fehlerplatzierung
Eine Fehlermeldung muss sagen, welches Feld falsch ist, welches Format akzeptiert wird und wie man es korrigiert. „Ungültige Adresse“ scheitert an allen drei Punkten. „Postleitzahl muss 5 Ziffern haben, zum Beispiel 97205“ besteht. Bei Ländern mit ungewöhnlichem Format geben Sie ein Beispiel statt eines Musters an, denn Nutzer lesen keine Regexes.
Platzieren Sie den Fehler neben dem Feld und bei langen Formularen zusätzlich in einer Zusammenfassung oben im Formular. Verknüpfen Sie ihn mit aria-describedby und setzen Sie aria-invalid am Eingabefeld. Verschieben Sie den Fokus beim Absenden auf das erste ungültige Feld oder auf die Zusammenfassung, wenn diese interaktiv ist. Testen Sie mit einem Screenreader, nicht nur visuell.
- Benennen Sie das Feld in der Meldung
- Geben Sie das erwartete Format mit einem Beispiel an
- Sagen Sie, was zu tun ist, nicht nur was falsch ist
- Geben Sie niemals dem Nutzer die Schuld; schreiben Sie „Geben Sie eine 5-stellige ZIP ein“
- Halten Sie die Meldung in der Sprache und Leserichtung der Seite
5. Eingabeverarbeitung: Einfügen, Autofill und Tastaturen
Beim Einfügen treten Formatierungsfehler zutage. Ein Nutzer fügt „K1A 0B1“ mit einem geschützten Leerzeichen ein oder eine vollständige Adresse in Zeile 1. Das Formular sollte trimmen, bekannte Trennzeichen normalisieren und interne Leerzeichen erhalten. Es sollte keine Bindestriche aus einem ZIP+4 oder aus einem niederländischen Code entfernen und keinen Stadtnamen in Großbuchstaben umwandeln, der legitim gemischt geschrieben ist.
Autofill hängt von den korrekten Token-Namen ab. Verwenden Sie address-line1, address-line2, address-level2 für Stadt, address-level1 für Region, postal-code und country, und verwenden Sie street-address nicht auf einem einzeiligen Feld wieder, es sei denn, es ist wirklich ein mehrzeiliger Straßenblock. Auf Mobilgeräten fehlt numerischen Tastaturen meist der Bindestrich, sodass ein ZIP+4 oder ein niederländischer Code, der mit inputmode="numeric" eingegeben wird, unmöglich zu vervollständigen ist. Verwenden Sie inputmode="text", wo das Muster Trennzeichen erlaubt.
| Feld | Autocomplete-Token | Mobile Tastatur |
|---|---|---|
| Adresszeile 1 | address-line1 | text |
| Adresszeile 2 | address-line2 | text |
| Stadt | address-level2 | text |
| Region | address-level1 | text oder eine Auswahl |
| Postleitzahl | postal-code | text, wenn ein Bindestrich erlaubt ist |
| Land | country | Auswahl |
6. Länge, Kürzung und Kodierung
Testen Sie die Grenze und ein Zeichen darüber hinaus für jedes Feld. Kürzung ist schlimmer als Ablehnung, weil der Nutzer ein erfolgreiches Absenden sieht und der gespeicherte Wert falsch ist. Wenn die Datenbankspalte 50 Zeichen hat und das Formular 100 erlaubt, tritt der Defekt nur bei langen Eingaben auf – genau das, was handgeschriebene Fixtures nie enthalten.
Testen Sie Nicht-ASCII-Zeichen: Akzente, den Apostroph in O Connell, den Bindestrich in einem französischen Straßennamen, das scharfe S in einer deutschen Straße und Rechts-nach-links-Schriften. Prüfen Sie, dass der Wert durch die API, die Datenbank, den CSV-Export und das gedruckte Label hin und zurück läuft. Kodierungsfehler treten oft erst beim Export auf – dem Schritt, den niemand testet.
- Grenze: Maximum minus eins, Maximum, Maximum plus eins
- Akzente: e-acute, u-umlaut, c-cedilla
- Interpunktion: Apostrophe, Bindestriche, Punkte in Straßenabkürzungen
- Leerraum: führend, abschließend, doppelt, geschützt
- Schriften: Arabisch und Hebräisch für Leserichtung, Japanisch für Breite
- Round Trip: Formular, API, Datenbank, Export, Label
7. Barrierefreiheit und Lokalisierung
Jedes Feld braucht ein sichtbares Label, das programmatisch mit dem Eingabefeld verknüpft ist. Platzhaltertext ist kein Label: Er verschwindet bei der Eingabe und wird inkonsistent angesagt. Gruppieren Sie die Adressfelder in einem Fieldset mit Legend und machen Sie die Auswahlfelder für Land und Region per Tastatur mit Type-ahead bedienbar.
Setzen Sie für Rechts-nach-links-Locales dir am Container und nicht an einzelnen Eingabefeldern, damit Interpunktion und Fehlersymbol an der richtigen Stelle bleiben. Prüfen Sie, dass übersetzte Labels bei 200 Prozent Zoom nicht überlaufen und dass die Fehlerzusammenfassung angesagt wird, wenn sie erscheint. Das sind günstige Prüfungen, die die Defekte abfangen, für die Accessibility-Audits Geld verlangen.
| Prüfung | Bestanden wenn |
|---|---|
| Label-Verknüpfung | Klick auf das Label fokussiert das Eingabefeld |
| Aria bei Fehler | aria-invalid true und aria-describedby verweist auf die Meldung |
| Fokusreihenfolge | Tab-Reihenfolge folgt der visuellen Reihenfolge |
| Zoom | Layout funktioniert bei 200 Prozent ohne Überlappung |
| RTL | Richtung am Container gesetzt, Symbole gespiegelt |
| Screenreader | Feldname, Wert und Fehler werden alle angesagt |
8. Das Regressionspaket
Verwandeln Sie die Checkliste in ein kleines automatisiertes Paket, das bei jeder Änderung läuft. Zwanzig Fälle decken die Fehlermenge ab: ein gültiger und ein ungültiger Fall für den Hauptmarkt, je ein Fall für Kanada, das Vereinigte Königreich, Deutschland, Japan, Brasilien, Hongkong und die VAE, plus Grenzlängen, eine Nicht-ASCII-Stadt, ein eingefügter Wert mit geschütztem Leerzeichen und ein Länderwechsel nach einem Fehler.
Halten Sie jeden Fall unabhängig und mit festen Startwerten. Prüfen Sie die Form des Ergebnisses statt eines Literalstrings und prüfen Sie bei den ungültigen Fällen den sichtbaren Fehlertext, denn Fehlertext-Regressionen sind echte Regressionen. Ein Paket dieser Größe läuft in Sekunden und fängt die Mehrheit der oben beschriebenen Defekte ab.
| Fallgruppe | Anzahl | Deckt ab |
|---|---|---|
| Hauptmarkt gültig und ungültig | 4 | Kernpfade und Fehlertexte |
| Strukturelle Ausreißer | 7 | CA, GB, DE, JP, BR, HK, AE |
| Grenzlängen | 4 | Kürzung und Ablehnung |
| Kodierung und Einfügen | 3 | Nicht-ASCII, NBSP, Einfügen vollständiger Adresse |
| Abhängigkeits-Resets | 2 | Länderwechsel, Neuladen mit veralteten Werten |
Fragen
- Etwa zwanzig decken die übliche Fehlermenge ab: gültige und ungültige Fälle des Hauptmarkts, strukturelle Ausreißer wie Kanada, Japan und Hongkong, Grenzlängen, Kodierung und Länderwechsel-Resets.
- Nein. Validieren Sie das Format bei Blur und Pflichtfelder beim Absenden und löschen Sie Fehler, sobald der Wert gültig wird. Validierung bei jedem Tastendruck bestraft Nutzer mitten in der Eingabe.
- Hongkong hat keine Postleitzahlen, also blockiert ein Pflicht-Postleitzahlfeld eine gültige Adresse. Dasselbe gilt für die Vereinigten Arabischen Emirate; bei beiden sollte das Feld optional sein.
- address-line1, address-line2, address-level2 für Stadt, address-level1 für Region, postal-code und country. Damit füllen Browser das Formular korrekt aus.
- Senden Sie einen Wert in maximaler Länge, ein Zeichen darunter und ein Zeichen darüber ab und lesen Sie dann den gespeicherten Wert zurück. Stille Kürzung nach erfolgreichem Absenden ist der Defekt, den es zu fangen gilt.
Wie viele Testfälle braucht ein Adressformular?+
Sollte die Validierung bei jedem Tastendruck laufen?+
Warum bricht Hongkong Adressformulare?+
Welche Autocomplete-Token sollte ein Adressformular verwenden?+
Wie teste ich Kürzung?+
Beispiele sind synthetisch. Verwenden Sie eine generierte Adresse nicht für Identitätsprüfungen, Kontoregistrierungen oder Lieferungen.