Äquivalenzklassenbildung

Wie Äquivalenzklassenbildung die Anzahl der Tests reduziert und dabei aussagekräftige Abdeckung sowie repräsentative Daten erhält.

Aktualisiert:

Inhalt

Äquivalenzklassenbildung teilt Eingabedaten in Klassen ein, innerhalb derer sich das System gleich verhalten sollte. Statt Dutzende ähnlicher Werte zu prüfen, wählt QA einen oder zwei Repräsentanten je sinnvoller Klasse.

Die Grundidee

Behandelt das System einen ganzen Bereich identisch, bringt das Testen jedes Werts wenig zusätzlichen Nutzen. Stattdessen Klassen bestimmen: gültig, ungültig, leer, zu groß, verbotene Formate und so weiter.

Ein einfaches Beispiel

Ein Altersfeld akzeptiert Werte von 18 bis einschließlich 60. Es gibt mindestens drei Klassen: unter 18, 18–60 und über 60. Aus jeder Klasse einen repräsentativen Wert wählen, statt jede Zahl auszuprobieren.

Anwendung in der Praxis

  • →Zuerst Validierungsregeln und fachliche Bedeutung des Feldes oder Parameters verstehen.
  • →Klassen mit unterschiedlichem erwartetem Verhalten bestimmen.
  • →Einen Wert je Klasse auswählen und Grenzen separat betrachten.
  • →Gültige Werte ebenso prüfen wie leere, falsch typisierte, verbotene und logisch widersprüchliche Eingaben.

Häufige Fehler

  • →Klassen mechanisch definieren, ohne die Geschäftslogik zu verstehen.
  • →Vergessen, dass Äquivalenzklassen die Grenzwertanalyse nicht ersetzen.
  • →Werte als gleichwertig ansehen, obwohl das System sie unterschiedlich behandelt.
  • →Nur gültige Klassen verwenden und negative Eingaben ignorieren.

Äquivalenzklassenbildung ist besonders nützlich für Formulare, API-Parameter, Filter, Wertebereiche, Status und alle Eingaben, bei denen vollständiges Testen unpraktisch oder sinnlos ist. Ihre Stärke ist weniger Testaufwand bei erhaltener logischer Abdeckung.

Ausgearbeitetes Beispiel: zulässiges ganzzahliges Alter

Übungsregel: Eine Anwendung akzeptiert ein ganzzahliges Alter von 18 bis einschließlich 65. Ganzzahlen unter 18, von 18 bis 65 und über 65 bilden drei disjunkte Klassen für diese Regel. Zuerst je einen Repräsentanten auswählen, dann Grenzwertprüfungen ergänzen.

plain text
Äquivalenzklasse	Repräsentant	Erwartet
Ganzzahl unter 18	16	Ablehnen: außerhalb des zulässigen Altersbereichs
Ganzzahl von 18 bis 65	40	Akzeptieren
Ganzzahl über 65	70	Ablehnen: außerhalb des zulässigen Altersbereichs

Das Modell nimmt an, dass Werte innerhalb jeder Klasse ähnlich verarbeitet werden. Das ist eine Hypothese des Testentwurfs, kein Beweis, dass ein Wert jeden Fehler findet. Führt die Geschäftsregel für 60–65 Jahre ein anderes Ergebnis ein, die gültige Klasse entsprechend teilen. Unterschiedliche Ergebnisse nicht zusammenfassen, nur weil alle Eingaben denselben Datentyp haben.

Darstellungsfehler getrennt behandeln

Auch den Transportvertrag definieren. In dieser Übung muss das JSON-Feld age vorhanden sein und eine Ganzzahl enthalten; Zeichenketten, Bruchteile und null sind ungültig. Die folgenden Werte sind keine weiteren Repräsentanten der drei Ganzzahlklassen.

plain text
Anfragenutzlast	Erwartet
{}	Ablehnen: Pflichtfeld fehlt
{"age": null}	Ablehnen: Ganzzahl erforderlich
{"age": "40"}	Ablehnen: Ganzzahl erforderlich
{"age": 40.5}	Ablehnen: Ganzzahl erforderlich
{"age": 40}	Akzeptieren

Übung und Lösung

Decken 25, 40 und 55 die drei Ganzzahlklassen ab? Nein: Alle liegen in der gültigen Klasse. Ein Satz wie 16, 40 und 70 deckt alle drei ab; anschließend 17, 18, 19, 64, 65 und 66 ergänzen, um grenzspezifisches Verhalten zu untersuchen. Erwartete Ergebnisse folgen aus der angegebenen Regel, während HTTP-Statuscodes und Fehlerschemata einen separaten API-Vertrag benötigen.

Weiterlernen

Grenzwertanalyse

Entscheidungstabellen

Methodenreferenz: ISTQB-CTFL-Lehrplan, Abschnitte 4.2 und 5.5. Die obigen Beispiele sind eigenständige Schulungsszenarien.