Die Grenzwertanalyse – in der Regel abgekürzt als BVA – ist eine gängige Black-Box-Testtechnik. Der Ansatz testet auf Softwarefehler, indem er die Eingabewerte an den Grenzen der zulässigen Bereiche überprüft.
In diesem Artikel wird untersucht, was Boundary Analysis Testing ist, warum es nützlich ist, und es werden verschiedene Ansätze, Techniken und Tools für Boundary Testing vorgestellt.
Was ist die Grenzwertanalyse beim Softwaretest?
Die Grenzwertanalyse ist eine Art der Funktionsprüfung. Bei dieser Art von Tests geht es darum, zu überprüfen, ob jede Funktion der Software den Anforderungen und Spezifikationen entspricht. Im Falle von Boundary-Tests umfasst diese Funktionalität, wie die Software mit verschiedenen Eingaben umgeht.
BVA ist eine Softwaretesttechnik, mit der überprüft wird, wie die Software auf Eingaben an oder in der Nähe der Eingabegrenzen reagiert. Im Wesentlichen hat jede Eingabe zulässige Bereiche. Sie könnten zum Beispiel ein Passwortfeld für eine Anmeldung haben, das Passwörter mit 8 bis 12 Zeichen akzeptiert. Bei der Grenzprüfung werden Passwörter mit einer Zeichenlänge von 7, 8, 12 und 13 geprüft.
Der Gedanke dahinter ist, dass die Grenzen der Begrenzungen, d. h. 7, 8, 12 und 13, eher zu Fehlern führen als Zahlen innerhalb der Grenzen, wie 9, 10 und 11. Während die Vorteile hier im Beispiel eines Feldes, das zwischen 8 und 12 Zeichen akzeptiert, marginal erscheinen mögen, werden sie deutlicher, wenn Sie Testfälle für Feldfelder schreiben müssen, die zwischen 1 und 20 Zeichen oder Zahlen zwischen 1 und 1000 usw. akzeptieren.
Um Zeit zu sparen und die Anzahl der Testfälle im Rahmen von Funktionstests zu reduzieren, werden bei der Grenzwertanalyse Werte betrachtet:
- Bei Mindestwert
- Unmittelbar unter dem Mindestwert
- Bei Höchstwert
- Unmittelbar über dem Höchstwert
Vorteile der Grenzwertanalyse beim Testen
Boundary Testing hat mehrere überzeugende Vorteile für QA-Teams.
#1. Bessere Softwarequalität
Das Alptraumszenario für Tester sind Bugs und Defekte, die unbemerkt bleiben. Bei so vielen Dingen, die überprüft werden müssen, können einige Mängel durch die Maschen fallen. Boundary Testing beweist die Funktionalität von Bereichen in der Software, die eher fehleranfällig sind, was zu besseren Software-Builds und letztlich zu einer zuverlässigeren, stabileren Anwendung führt.
#2. Erhöhte Testabdeckung
BVA ist bei Softwaretests deshalb so nützlich, weil es dazu beiträgt, die Anzahl der für eine umfassende Testabdeckung erforderlichen Testfälle zu verringern. Die Grenzwertanalyse sorgt dafür, dass wichtige Werte und jeder Wert gründlicher geprüft werden können.
#3. Frühzeitige Fehlererkennung
Grenzwerttests sind Teil eines Ansatzes, bei dem die frühzeitige Fehlererkennung im Vordergrund steht. Das frühzeitige Aufspüren von Fehlern bedeutet, dass die Entwicklungsteams Zeit und Geld sparen können, ganz abgesehen davon, dass es viel einfacher ist, Fehler in den frühen Phasen der Entwicklung zu beheben.
#4. Wirkungsgrad
Grenzwerttests sind äußerst effizient, da sie die Notwendigkeit einer großen Anzahl von Testfällen verringern. In der Tat kann die Reduzierung der Eingaben auf die wahrscheinlichsten Probleme eine erhebliche Zeitersparnis für die Testteams bedeuten, sowohl beim Schreiben als auch bei der Ausführung der Testfälle.
Nachteile der Randwertanalyse bei der Prüfung
Natürlich ist kein Softwaretestverfahren perfekt oder ohne Einschränkungen. Obwohl die Randwertanalyse viele Vorteile bietet, gibt es einige Einschränkungen bei der Arbeit mit dieser funktionalen Testtechnik.
#1. Enger Anwendungsbereich
BVA arbeitet an den Grenzen oder Rändern gültiger Dateneingaben. Im Allgemeinen werden die mittleren Eingaben ignoriert, weil man davon ausgeht, dass sie in Ordnung sind, wenn die gültigen Eingaben an den Rändern in Ordnung sind. Es ist jedoch nicht auszuschließen, dass einige dieser nicht geprüften Werte Probleme verursachen können.
#2. Übermäßig vereinfacht
Bei der Grenzanalyse geht es darum, die Dinge einfach zu machen. Während dies für die Reduzierung von Testfällen funktioniert, ist dieser Ansatz für hochkomplexe Domänen mit mehreren Grenzen, Interaktionen oder Abhängigkeiten weniger geeignet. In der Tat ist es schwierig, komplexe Szenarien zu bewältigen, was bedeutet, dass Sie andere Techniken für eine angemessene Abdeckung erforschen müssen.
#3. Annahmen
Jeder Prozess, der versucht, die Effizienz zu steigern, läuft Gefahr, bestimmte Fehler zu übersehen. Die BVA konzentriert sich auf die Grenzen an den Rändern eines Bereichs. Dabei muss sie Annahmen über andere Inputs machen, die auf beiden Seiten der Grenzwerte liegen. Die Tester müssen ein Gleichgewicht zwischen Effizienz und Abdeckungsgrad finden, was ein geringes Risiko darstellt, wenn nur Boundary Tests durchgeführt werden.
#4. Vertrauen in genaue Spezifikationen und Anforderungen
Eine effiziente BVA hängt von der Qualität und Genauigkeit der Spezifikationen und Anforderungsdokumente ab. Ungeprüfte Fehler in diesen Dokumenten können in die Grenzwertprüfung einfließen und dazu führen, dass bestimmte Fehler bis zu den kritischen späten Phasen der Entwicklung ungeprüft und unentdeckt bleiben.
#5. Rückgriff auf Äquivalenzklassen
Die Durchführung einer gründlichen BVA erfordert eine gute Kenntnis der Äquivalenzklassen. Die genaue Einstellung dieser Klassen erfordert Erfahrung und einige Hintergrundinformationen über die Anwendung.
Herausforderungen der Randwertanalyse
in der Softwareprüfung
Inzwischen sollten Sie sich über die Vor- und Nachteile von Boundary Tests im Klaren sein. Wenn Sie diesen Ansatz jedoch in Ihre eigenen Softwaretests einbauen wollen, müssen Sie sich auch der verschiedenen Herausforderungen bewusst sein, die Sie bewältigen müssen.
Hier sind einige der Herausforderungen bei der Implementierung von Grenzwerttests im Softwaretest.
#1. Abgrenzung der Grenzen
Das Erkennen von Grenzen innerhalb einfacher Systeme stellt für kompetente Tester keine große Herausforderung dar. Es gibt jedoch auch komplexere Situationen, wie z. B.:
- Komplexe Eingabebereiche mit verschiedenen Eingabevariablen oder komplizierten Beziehungen
- Nicht dokumentierte Grenzen, die in den Spezifikationsdokumenten nicht klar umrissen wurden
- Dynamische Grenzen, die sich aufgrund von Benutzeraktionen oder anderen Bedingungen ändern
#2. Zweideutige Anforderungen
Schlecht geschriebene oder unklare Anforderungsdokumente können die Ermittlung von Grenzwerten behindern. Klarheit, Vollständigkeit und ein Engagement für umfassende Spezifikationsdokumente brauchen Zeit, aber sie werden sich am Ende auszahlen.
#3. Fachwissen
Die Grenzwertanalyse kann trügerisch komplex sein. Die Prüfteams benötigen in der Tat Personal mit Erfahrung und Kenntnissen in diesem Bereich, um die feinen Nuancen der Technik zu verstehen. Darüber hinaus müssen die Tester ein gewisses Maß an Wissen über die Software mitbringen oder zumindest über zuverlässige Spezifikationsdokumente verfügen, auf die sie zurückgreifen können.
#4. Fehler
Die Grenzanalyse zielt darauf ab, die Anzahl der Testfälle zu verringern, die zur Überprüfung der gültigen und ungültigen Eingaben erforderlich sind. Mängel, die außerhalb des Prüfbereichs liegen, können jedoch leicht unbemerkt bleiben. Außerdem sind “Off-by-One”-Fehler häufige Kodierungsfehler, die an oder nahe den Grenzen auftreten können. Die Prüfer müssen sich dieser Szenarien bewusst sein und Vorkehrungen für die Prüfung treffen.
#5. Testfall-Explosion
Wenn mehrere Eingabegrenzen im Spiel sind, können Testfälle schnell komplex werden und sich unkontrolliert vermehren. In solchen Situationen gehen die Zeit und das Geld, die Sie mit Boundary Tests einsparen können, verloren, wodurch die Vorteile der Lösung untergraben werden. Komplexe Software mit vielen Kombinationen oder Permutationen kann einen ähnlichen Effekt haben.
#6. Einschränkungen des Analysewerkzeugs
Tools zur Automatisierung von Softwaretests können Teams dabei helfen, eine angemessene Grenzwertanalyse durchzuführen. Doch selbst in den besten Fällen erfordern diese Tools ein gewisses Maß an manuellen Eingriffen sowohl beim Testen als auch bei der Testerstellung. Diese Situation kann sich bei komplexen Konstruktionen mit multivariablen Interaktionen noch verschärfen.
Verschiedene Arten von Grenzwerten
Testen in der Softwareprüfung
In dem Buch Software Testing: A Craftsman’s Approach beschreiben die Autoren Paul C. Jorgensen und Byron DeVries vier verschiedene Arten von Grenzwerttests, und zwar
1. Normale Grenzwertprüfung (NBVT)
- Prüft gültige Eingabewerte an den Rändern des Eingabebereichs
- Erkundet Minimal- und Maximalwerte sowie Eingaben knapp über und unter der Grenze
- Dies ist der klassische Typ der Randwertanalyse
2. Robuste Grenzwertprüfung (RBVT)
- Ähnlich wie NBVT oben, aber auch ungültige Eingaben enthalten
- Prüft an den Grenzen und knapp darüber hinaus, berücksichtigt aber auch ungültige Eingaben
- Konzentriert sich auf die Fehlersuche bei extremen oder unerwarteten Ausgaben
3. Worst-Case-Grenzwertprüfung (WBVT)
- Überprüft das Softwareverhalten anhand extrem gültiger und ungültiger Werte
- Untersucht Werte an den Rändern der Eingabebereiche und Werte jenseits dieser Grenzen
- Versucht, das Verhalten von Software unter extremeren Bedingungen zu verstehen
4. Robuste Worst-Case-Grenzwerttests (RWBVT)
- Verwendet eine Mischung aus RBVT und WBVT für die gründlichste Grenzwertprüfung
- Testet gültige und ungültige Eingabewerte sowohl an typischen als auch an extremen Grenzen
- Bietet die beste Möglichkeit, begrenzungsbedingte Fehler zu finden
Diese Ansätze sind unterschiedlich umfangreich, wobei die RWBVT am gründlichsten ist. Die Tester müssen jedoch den zusätzlichen Zeit- und Arbeitsaufwand anerkennen, der erforderlich ist, um diese zusätzliche Ebene der Fehlererkennung zu erschließen.
Äquivalenzpartitionierung und Randwert
Analyse: Gemeinsamkeiten und Unterschiede
Äquivalenzpartitionierung und Randwertanalyse werden häufig in Verbindung miteinander verwendet. In der Tat ergänzen sich die beiden Techniken in hohem Maße. Sie beschreiben jedoch unterschiedliche Ansätze zur Validierung der Dateneingabe. Hier ein Blick auf die Gemeinsamkeiten und Unterschiede zwischen den beiden.
1. Ähnlichkeiten
Äquivalenzpartitionierung und Randwertanalyse sind ein hervorragendes Paar. Hier sind einige Gemeinsamkeiten zwischen beiden Techniken.
- Bei beiden handelt es sich um Black-Box-Tests, d. h. sie konzentrieren sich auf Eingaben und Ausgaben, die ohne vorherige Kenntnis des Quellcodes der Anwendung getestet werden können.
- Beide sind Teil eines gründlichen Ansatzes zur Prüfung der Eingaben
- Beide helfen den Testern, ein Gleichgewicht zwischen umfassender Testabdeckung und dem Schreiben einer übermäßigen Anzahl von Testfällen zu finden.
2. Unterschiede
Um die Unterschiede zwischen der Äquivalenzpartitionierung und der Randwertanalyse zu untersuchen, müssen wir beide getrennt voneinander betrachten.
Äquivalenz-Partitionierung
- Einteilung der Eingabedaten in Äquivalenzklassen, die zu ähnlichen Systemausgaben führen sollten
- Verwendet einen einzigen repräsentativen Wert aus jeder Klasse und testet das System mit diesem Wert
- Es geht darum, gültige und ungültige Äquivalenzklassen zu identifizieren
Grenzwertanalyse
- Prüft die Werte an den Grenzen oder Rändern von Äquivalenzklassen
- Testen Sie eine Reihe von Werten, einschließlich des Minimums, des Maximums und der Werte auf beiden Seiten der Begrenzung
- Sucht nach Fehlern, die am Rande der Grenzen gefunden werden
Beispiele für Äquivalenzaufteilung und Randwertanalyse
Um Ihr Verständnis von Äquivalenzpartitionierung und Randwertanalyse zu festigen, finden Sie hier einige Beispiele.
Beispiel für Äquivalenzpartitionierung:
Nehmen wir an, Sie haben ein Eingabefeld für Kfz-Zulassungen. US-Kennzeichen haben in der Regel zwischen 6 und sieben Zeichen. Der Einfachheit halber lassen wir die Sonderkennzeichen außer Acht.
Gültige Daten = Schilder mit 6 oder 7 Zeichen
Ungültige Daten = Schilder mit >6 oder >7 Zeichen.
Beispiel für eine Grenzwertanalyse:
Anhand des gleichen Nummernschilds wie oben wird bei der Grenzwertanalyse Folgendes getestet
Gültige Daten = Schilder mit 6 oder 7 Zeichen
Ungültige Daten = Kennzeichen mit 5 oder 8 Zeichen und in einigen Fällen mit 4 und 9 Zeichen
Beispiel für eine Grenzwertanalyse
Am besten lässt sich das Konzept verstehen, wenn man sich ein oder zwei weitere Beispiele für die Grenzwertanalyse ansieht.
Grenzwertprüfung Beispiel 1
Um die Grenzwertprüfung näher zu untersuchen, betrachten wir ein Beispiel für einen Altersprüfungsbereich.
Wir haben ein Feld, in das der Benutzer sein Alter eingeben kann.
Die Grenzwerte sind:
- Mindestalter = 18 Jahre
- Höchstalter = 120 Jahre
Beispiel für Boundary-Testfälle:
Insgesamt gibt es sechs Testfälle:
- 17, 18 und 19, die unter dem Minimum, dem Minimum bzw. über dem Minimum liegen
- 119, 18 und 19, die unter dem Höchstwert, dem Höchstwert bzw. über dem Höchstwert liegen
Grenzwertprüfung Beispiel #2.
In unserem nächsten Beispiel für einen Boundary-Test werden wir eine Website mit einem Rabatt von 20 % auf Bestellungen ab einem Wert von 100 $ untersuchen.
In diesem Beispiel führt ein Kauf von über 600 $ zu einem Rabatt von 25 %. Beim Grenzwerttest werden Eingaben zwischen $100 und $600 berücksichtigt.
Die Grenzwerte sind:
Qualifizierter Mindestrabatt = $100
Maximal zulässiger Rabatt = 600 $
Beispiel für Boundary-Testfälle:
Auch hier generieren wir insgesamt sechs Testfälle, und zwar:
- 99,99 $, 100 $ und 100,01 $, die jeweils unter dem Mindestbetrag, dem Mindestbetrag und dem Höchstbetrag liegen
- $599,99, $600 und $600,01, die jeweils unter dem Höchstbetrag, dem Höchstbetrag und dem Höchstbetrag liegen
Sind Grenztests bei Softwaretests korrekt?
In der Forschungsarbeit Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods untersuchen die Autoren den Einsatz von Equivalence Partitioning und Boundary Value Analysis zum Testen eines akademischen Informationssystems für die Universität Mataram in Indonesien.
Die Autoren verwendeten für ihre Tests das beliebte Open-Source-Testtool Selenium und führten insgesamt 322 Testfälle durch. Äquivalenztests und Grenzwertanalysen ergaben etwa 80 fehlgeschlagene Fälle, was zu einem Verhältnis von etwa 75:25 zwischen gültigen und ungültigen Testergebnissen führte. Insgesamt führte die Kombination von Äquivalenzpartitionierung und BVA beim Softwaretest zu einer gründlichen und hilfreichen Prüfung der Software.
Beste Tools für Grenzwerttests
Zwar sind spezielle Software-Tools für die Grenzprüfung selten, doch gibt es viele bemerkenswerte Test-Tools, die für diese Aufgabe geeignet sind.
#3. TestCaseLab
TestCaseLab ist ein Cloud-basiertes Testmanagement-Tool, das bei BVA-Tests helfen kann. Die Software ermöglicht Teams die Erstellung und Verwaltung von Testfällen über eine intuitive und ansprechende Benutzeroberfläche. TestCaseLab ist flexibel und verfügt über zahlreiche Funktionen, hat aber auch seine Grenzen, wie z. B. begrenzte Berichts- und Anpassungsoptionen.
#2. Micro Focus UFT One
Micro Focus UFT One ist ein Softwaretestwerkzeug mit Schwerpunkt auf Funktions- und Regressionstests. Es unterstützt verschiedene Plattformen, Geräte und API-Tests und bietet starke Integrationsoptionen. Es bietet sowohl die Erstellung von Tests ohne Code als auch die Erstellung von Tests mit Schlüsselwörtern und kann Teams bei der einfachen Erstellung von Testfällen für die Grenzwertanalyse unterstützen. Es gibt einige Einschränkungen, die Sie berücksichtigen müssen, wie z. B. eine steile Lernkurve und ein Mangel an Leistung im Vergleich zu Tools wie ZAPTEST.
#1. ZAPTEST
ZAPTEST ist ein umfassendes Tool für Software-Automatisierungstests mit fortschrittlichen RPA-Funktionen. Es wurde entwickelt, um Testern eine benutzerfreundliche und robuste Suite von Testautomatisierungswerkzeugen an die Hand zu geben, die bei der Verifizierung von Software auf vielfältige Weise helfen können, unter anderem mit BVA im Softwaretest.
Einige der überzeugendsten Anwendungsfälle für ZAPTEST zur Unterstützung der Grenzwertanalyse sind die Generierung von Testfällen, die Handhabung von Testdaten, die Testdurchführung sowie Reporting und Analyse. Mit einer Reihe von Vorlagen und einem hohen Maß an Anpassungsmöglichkeiten in Kombination mit der Erstellung von Testfällen ohne Code können ZAPTEST-Benutzer schnell und einfach robuste Testfälle für alle Arten von Grenzanalysen erstellen und verwalten.
Neben der Generierung und Verwaltung von Testfällen können die RPA-Funktionen von ZAPTEST den Testteams auch auf andere Weise beim Testen der Grenzwertanalyse helfen. So können Sie beispielsweise die Ausführung von Testfällen automatisieren, Testdaten generieren und leistungsstarke Integrationen mit anderen Testwerkzeugen erstellen.
Tipps für die Grenzwertprüfung
- Kombinieren Sie Grenzwertanalyse mit Äquivalenzpartitionierung, um sicherzustellen, dass Ihre Testfälle verschiedene Eingabeszenarien abdecken.
- Verwenden Sie Szenarien mit ungültigen Eingaben (d. h. Negativtests), um sicherzustellen, dass Sie überprüfen, wie die Software mit Fehlern und unerwarteten Eingaben umgeht.
- Investieren Sie Zeit in die Identifizierung von Grenzwerten für verschiedene Datentypen wie Text, Zahlen, Boolesche Werte usw.
- Priorisieren Sie Grenzwerttests für kritische Funktionalitäten oder Bereiche, in denen Fehler wahrscheinlicher sind
- Verwenden Sie realistische Daten, die die Art von Daten repräsentieren, die Ihre Benutzer in Ihre Domänen eingeben werden.
Abschließende Überlegungen
Die Grenzwertanalyse ist ein nützlicher Ansatz zur Funktionsprüfung. Wenn Sie eine Eingabedomäne haben, müssen Sie überprüfen, ob sie gültige Daten akzeptiert und Fehlermeldungen sendet, wenn sie ungültige Daten empfängt. Boundary Analysis Tests helfen dabei, diese Funktionalität auf effiziente Weise zu verifizieren, indem nur die für umfassende Tests erforderlichen Testfälle erstellt werden.
Bei der Grenzprüfung werden Werte innerhalb oder in der Nähe des zulässigen Bereichs untersucht und überprüft, wie das System auf diese Eingaben reagiert. Das Ergebnis ist eine große Zeitersparnis und ein geringerer Aufwand, da Sie keine redundanten Testfälle erstellen müssen. In der schnelllebigen Welt der Softwareentwicklung, in der die Fristen immer kürzer zu werden scheinen, brauchen die Testteams jede Hilfe, die sie bekommen können.