
Äquivalenzklassen-Zerlegung und Grenzwertanalyse
Data-Driven Testing nutzt Äquivalenzklassen-Zerlegung und Grenzwertanalyse, um Testfälle effizient zu reduzieren, ohne die Abdeckung zu gefährden. In diesem Beitrag zeigen wir, wie diese Methoden kombiniert werden, um präzisere Tests mit optimiertem Aufwand zu ermöglichen.
Data-Driven Testing (DDT) ist eine bewährte Methode im Softwaretest, um Testfälle mit verschiedenen Eingabedaten effizient durchzuführen. Die Methode der Äquivalenzklassen-Zerlegung oder Äquivalenzklassenmethode hilft dabei, die Testmenge sinnvoll zu reduzieren, ohne die Testabdeckung zu gefährden. In diesem Artikel beleuchten wir, wie diese Technik funktioniert und welchen Nutzen sie beim Data-Driven Testing bietet. Zusätzlich wird die Methode mit der Grenzwertanalyse kombiniert, um eine noch präzisere Testfallauswahl zu ermöglichen.
Grundlagen der Äquivalenzklassenmethode
Die Äquivalenzklassenmethode ist eine Technik zur Testfallableitung, die darauf abzielt, die Eingabedaten eines Systems in Gruppen oder Klassen einzuteilen, in denen die Werte als äquivalent betrachtet werden können. Äquivalent bedeutet, jeder Wert innerhalb einer Klasse soll sich im Testfallverhalten identisch verhalten, wodurch es ausreicht, mit nur einem Vertreter jeder Klasse zu testen.
Beispiel einer Äquivalenzklasseneinteilung
Angenommen, ein Formular akzeptiert Zahlen zwischen 1 und 100 als gültige Eingaben:
Eingabewerte | Äquivalenzklasse | Gültigkeit |
-10, 0 | ungültig | Nein |
1 – 100 | gültig | Ja |
101, 150 | ungültig | Nein |
Kombination mit der Grenzwertanalyse
Die Grenzwertanalyse ist eine ergänzende Technik zur Äquivalenzklassenmethode, die sich auf die Testung der Ränder der Äquivalenzklassen konzentriert. Da Fehler oft an den Grenzen eines gültigen Wertebereichs auftreten, sind diese Werte besonders kritisch für Tests.
Beispiel für Grenzwertanalyse
Für den obigen Zahlenbereich (1 – 100) könnten die relevanten Grenzwerte wie folgt definiert werden:
Eingabewerte | Klassifizierung | Erwartetes Ergebnis |
0 | Untere Grenze -1 | Fehler |
1 | Untere Grenze | Erfolg |
100 | Obere Grenze | Erfolg |
101 | Obere Grenze +1 | Fehler |
Die Kombination beider Methoden sorgt für eine präzisere Testabdeckung, indem sowohl repräsentative Werte aus jeder Äquivalenzklasse als auch kritische Grenzwerte getestet werden.
Anwendung im Data-Driven Testing
Data-Driven Testing basiert auf der Idee, eine Vielzahl von Testfällen mit unterschiedlichen Eingabewerten auszuführen. Die Äquivalenzklassenmethode hilft hier, die Menge an Testdaten zu optimieren.
Vorteile der Kombination von DDT mit Äquivalenzklassen und Grenzwertanalyse
- Reduzierung redundanter Tests: Statt alle möglichen Eingaben zu testen, werden nur repräsentative Werte aus jeder Äquivalenzklasse sowie kritische Grenzwerte gewählt.
- Effiziente Testdatenverwaltung: Die Testdaten sind strukturierter und einfacher zu verwalten.
- Höhere Testabdeckung mit weniger Testfällen: Kritische Testfälle werden abgedeckt, ohne unnötige Tests durchzuführen.
- Erhöhte Fehlererkennung: Tests an den Rändern einer Klasse decken potenzielle Grenzwertfehler auf.
- Automatisierungsfreundlich: Die Kombination mit DDT macht die Automatisierung einfacher und wartungsfreundlicher.
Visualisierung der Äquivalenzklassen und Grenzwertanalyse
Äquivalenzklassen als Diagramm
Ein Diagramm kann die Einteilung der Äquivalenzklassen und die relevanten Grenzwerte verdeutlichen:
- X-Achse: Eingabewerte
- Y-Achse: Gültigkeit
Testdatenmatrix für Data-Driven Testing mit Grenzwertanalyse
Testfall | Eingabewerte | Erwartetes Ergebnis |
TC1 | -10 | Fehler |
TC2 | 0 | Fehler |
TC3 | 1 | Erfolg |
TC4 | 50 | Erfolg |
TC5 | 100 | Erfolg |
TC6 | 101 | Fehler |
Beispiel 1: Altersprüfung für die Registrierung einer Online-Plattform
Angenommen, eine Online-Plattform erlaubt die Registrierung nur für Nutzer zwischen 18 und 65 Jahren. Die Software validiert das Alter auf Basis der vom Nutzer eingegebenen Zahl.
Äquivalenzklassenanalyse
Eingabewerte | Äquivalenzklasse | Gültigkeit |
0 – 17 | ungültig | Nein |
18 – 65 | gültig | Ja |
66 und höher | ungültig | Nein |
Grenzwertanalyse
Hier testen wir speziell die Werte an den Grenzen der Äquivalenzklassen:
Testfall | Eingabewert | Erwartetes Ergebnis |
TC1 | 17 | Fehler (zu jung) |
TC2 | 18 | Erfolg (gerade gültig) |
TC3 | 30 | Erfolg (Mitte der gültigen Klasse) |
TC4 | 65 | Erfolg (gerade noch gültig) |
TC5 | 66 | Fehler (zu alt) |
Erklärung der Teststrategie
- Durch die Kombination der Äquivalenzklassenmethode und Grenzwertanalyse minimieren wir die Testfälle, während wir trotzdem eine maximale Fehlerabdeckung sicherstellen.
- Anstatt alle Altersstufen zwischen 18 und 65 zu testen, wählen wir nur repräsentative Werte.
- Die Grenzwerte 17, 18, 65, 66 sind kritisch, da hier häufig Fehler in der Implementierung auftreten.
Dieses Beispiel zeigt, wie diese einfachen Methoden in der Praxis dazu beitragen, die Qualität einer Anwendung effizient zu prüfen.
Im obigen Beispiel wird die einfachste Zerlegung in Äquivalenzklassen gezeigt: Eine Klasse mit gültigen und eine Klasse mit ungültigen Repräsentanten. Das zweite Beispiel kombiniert mehrere Datentypen mit mehreren Äquivalenzklassen.
Beispiel 2: Flugticketpreise basierend auf Alter und Buchungsklasse
Ein Flugbuchungssystem berechnet den Ticketpreis abhängig vom Alter des Passagiers und der Buchungsklasse. Die Preise und Buchungsbedingungen sind wie folgt:
- Kinder (0-11 Jahre) erhalten 50% Rabatt, dürfen aber nur mit einem Erwachsenen reisen.
- Jugendliche (12-17 Jahre) zahlen den vollen Preis.
- Erwachsene (18-64 Jahre) zahlen den vollen Preis.
- Senioren (65+ Jahre) erhalten 20% Rabatt.
- In der Economy-Klasse gelten normale Preise.
- In der Business-Klasse gibt es einen Zuschlag von 50% auf den Basispreis.
- In der First Class gibt es einen Zuschlag von 100% auf den Basispreis.
Äquivalenzklassenanalyse
Hier teilen wir die möglichen Eingaben in Äquivalenzklassen für zwei Datentypen auf:
Alter des Passagiers | Äquivalenzklasse | Erlaubte Buchung | Rabatt/Zuschlag |
0 – 11 Jahre | Kinder | Nur mit Erwachsenem | -50% |
12 – 17 Jahre | Jugendliche | Ja | Kein Rabatt |
18 – 64 Jahre | Erwachsene | Ja | Kein Rabatt |
65+ Jahre | Senioren | Ja | -20% |
Buchungsklasse | Äquivalenzklasse | Preisregel |
Economy | Standard | Normalpreis |
Business | Premium | +50% |
First Class | Luxus | +100% |
Grenzwertanalyse
Hier testen wir gezielt die Grenzwerte zwischen den Äquivalenzklassen:
Testfall | Alter | Buchungsklasse | Erwartetes Ergebnis |
TC1 | 0 | Economy | Fehler (Kind ohne Erwachsenen) |
TC2 | 1 | Economy | Fehler (Kind ohne Erwachsenen) |
TC3 | 11 | Economy | Fehler (Kind ohne Erwachsenen) |
TC4 | 12 | Economy | Erfolg (Übergang Kind → Jugendlicher) |
TC5 | 17 | Economy | Erfolg (letzte Jugendstufe) |
TC6 | 18 | Economy | Erfolg (Übergang Jugendlicher → Erwachsener) |
TC7 | 64 | Economy | Erfolg (letzte Erwachsenenstufe) |
TC8 | 65 | Economy | Erfolg (Übergang Erwachsener → Senior mit 20% Rabatt) |
TC9 | 80 | Economy | Erfolg (Senior mit 20% Rabatt) |
TC10 | 30 | Business | Erfolg (50% Zuschlag) |
TC11 | 40 | First Class | Erfolg (100% Zuschlag) |
Erklärung der Teststrategie
- Mehrere Äquivalenzklassen für Alter und Buchungsklasse.
- Grenzwertanalyse prüft, ob das System den Übergang zwischen Altersgruppen korrekt verarbeitet.
- Besonderheit: Kinder müssen mit einem Erwachsenen reisen, daher sind TC1-TC3 ungültig.
- Rabatt- und Zuschlagsberechnungen werden geprüft.
Fazit
Die Kombination der Äquivalenzklassenmethode mit der Grenzwertanalyse ist eine wertvolle Technik im Data-Driven Testing, um Testfälle gezielt auszuwählen und die Testeffizienz zu steigern. Während Äquivalenzklassen die Testdatenmenge sinnvoll reduzieren, stellt die Grenzwertanalyse sicher, dass kritische Randfälle nicht übersehen werden. Durch diese systematische Auswahl von Testdaten kann die Qualität der Software gesichert und gleichzeitig der Testaufwand minimiert werden.