Boundary Value Analysis – A Black Box Testing Technique
Wir wissen bereits, dass Black Box Testing die Validierung des Systems beinhaltet, ohne dessen internen Aufbau zu kennen. Wir haben auch die Fallstricke der Äquivalenzpartitionierung besprochen und wie sie an Partitionsgrenzen versagen können. Falls Sie unseren Artikel über Äquivalenzpartitionierung noch nicht gelesen haben, empfehle ich Ihnen, ihn zu lesen, bevor Sie diesen Artikel lesen. In diesem Artikel werden wir eine weitere Blackbox-Testtechnik besprechen, die so genannte Boundary Value Analysis. Wir werden auch sehen, wie diese Technik die Äquivalenzpartitionierung ergänzt.
- Was ist die Randwertanalyse?
- Wie wird die Randwertanalyse durchgeführt?
- Grenzwertanalyse mit Äquivalenzpartitionierung
- Fallstricke der Grenzwertanalyse
Was ist Grenzwertanalyse?
Die Grundlage der Grenzwertanalyse (BVA) ist die Prüfung der Grenzen an Partitionen (denken Sie an die Äquivalenzpartitionierung!). Die BVA ist eine Erweiterung der Äquivalenzpartitionierung. Diese ist jedoch nur anwendbar, wenn die Partition geordnet ist und aus numerischen oder sequentiellen Daten besteht. Die Minimal- und Maximalwerte einer Partition sind ihre Grenzwerte.
Wir haben gesehen, dass die Wahrscheinlichkeit hoch ist, die Fehler an den Grenzen einer Partition zu finden (z.B. ein Entwickler, der >10 statt >= 10 für eine Bedingung verwendet). Die Äquivalenzpartitionierung allein reichte nicht aus, um solche Fehler zu finden. Daher war es notwendig, eine neue Technik zu definieren, die Anomalien an den Grenzen der Partition aufspüren kann. So kam die Grenzwertanalyse ins Spiel.
Die Grenzwertanalyse kann auf allen Testebenen durchgeführt werden und wird hauptsächlich für einen Bereich von Zahlen, Daten und Zeit verwendet.
Wie führt man eine Grenzwertanalyse durch?
Nun, da wir eine Vorstellung von der Grenzwertanalyse haben, wollen wir verstehen, wie man mit dieser Technik Testbedingungen ableitet. Wir werden uns auf dasselbe Beispiel der Turnhalle beziehen (siehe unseren Artikel über die Äquivalenzaufteilung), wo wir Age eingeben müssen.
Der erste Schritt der Randwertanalyse besteht darin, eine Äquivalenzaufteilung zu erstellen, die wie unten aussehen würde.
Nun konzentrieren wir uns auf die gültige Aufteilung, die von 16-60 reicht. Wir haben einen 3-Schritt-Ansatz, um Grenzen zu identifizieren:
- Identifizieren Sie den exakten Grenzwert dieser Partitionsklasse – das ist 16 und 60.
- Ermitteln Sie den Grenzwert, der um eins kleiner ist als der exakte Grenzwert – das ist 15 und 59.
- Erhalte den Grenzwert, der um eins höher ist als die genaue Grenze – das ist 17 und 61.
Wenn wir alle kombinieren, erhalten wir folgende Kombinationen für den Grenzwert für das Kriterium Alter.
Gültige Randbedingungen : Alter = 16, 17, 59, 60
Ungültige Randbedingungen : Alter = 15, 61
Es ist leicht zu erkennen, dass gültige Randbedingungen unter die Klasse „Gültige Partition“ und ungültige Randbedingungen unter die Klasse „Ungültige Partition“ fallen.
Kannst du herausfinden, warum wir nicht 16.1, 15.9, 59.9 und 60.1 als Inkrement- und Dekrementwerte für die Randbedingungen verwendet haben? Dieses Konzept wird in den meisten Artikeln nur unzureichend erklärt. Nehmen wir also ein anderes Beispiel, um es zu erklären. Nehmen wir an, Sie geben Ihr Gewicht auf einer Website ein. Auf der Grundlage Ihres Gewichts und Ihrer Größe ermittelt die Website den Body Mass Index (BMI). In das Eingabefeld für das Gewicht können Sie Werte zwischen 30 und 150 kg eingeben. Das Gewichtseingabefeld erlaubt nur natürliche Zahlen, d.h. positive ganze Zahlen!
Wenn Sie in diesem Fall die Grenzen mit der gleichen Methode erstellen, erhalten Sie
Gültige Randbedingungen : Alter = 30, 31, 149, 150
Ungültige Randbedingungen : Alter = 29, 151
Betrachten wir nun das gleiche Szenario, aber das Eingabefeld für das Gewicht erlaubt Dezimalzahlen mit bis zu 1 Dezimalstelle. In diesem Fall lauten die Randbedingungen:
Gültige Randbedingungen : Alter = 30, 30.1, 149.9, 150
Ungültige Randbedingungen : Alter = 29.9, 150.1
Haben Sie den Unterschied gesehen? Wir nehmen den minimal akzeptablen Wert auf beiden Seiten der Grenze. Wenn wir den Wert 30,01 nehmen, dann testen wir die Software auf zwei Dezimalstellen, obwohl die Anforderung eine Dezimalstelle ist. Dies ist eine separate Testbedingung und sollte nicht mit dem Grenzwert verwechselt werden.
Die Messung der Grenzabdeckung für eine Partition kann als die Anzahl der getesteten Grenzwerte geteilt durch die Gesamtzahl der identifizierten Grenztestwerte erfolgen.
Grenzwertanalyse mit Äquivalenzpartitionierung
Wir haben jetzt ein gutes Verständnis der Grenzwertanalyse. Schauen wir uns also an, wie wir sie mit der Äquivalenzpartitionierung kombinieren können, um einen vollständigen Satz von Testbedingungen zu erhalten.
Wir kehren zu unserem früheren Beispiel zurück und sehen uns das Diagramm noch einmal an.
Der Bereich reicht von 16 bis 60, und die Randwertanalyse liefert uns die Testbedingungen 15, 16, 17, 59, 60, 61. Wenn Sie genau hinschauen, meinen Sie dann nicht, dass wir die gültige Äquivalenzpartitionierung durch die Abdeckung von 17, 59 und die ungültige Äquivalenzpartitionierung durch die Abdeckung von 15 und 61 bereits abgedeckt haben? Schließlich besagt die Äquivalenzpartitionierung, dass wir eine Zahl zwischen 16 und 60 für eine gültige Partition und weniger als 16 oder mehr als 60 für eine ungültige Partition wählen sollten. Wenn also der Grenzwert bereits die Äquivalenzpartitionierung abdeckt, warum brauchen wir dann noch eine separate Partitionierungstechnik? Das ist ein Konzept, das den meisten Leuten nicht klar ist, und nicht viele Artikel haben es klar erklärt.
Theoretisch hat der Grenzwert tatsächlich die Äquivalenzpartition abgedeckt, aber wir brauchen immer noch eine Partition. Wenn wir nur Boundary value anwenden und es scheitert, werden wir nie wissen, ob die Randbedingung oder die gesamte Partition gescheitert ist. Lassen Sie uns dies anhand eines Beispiels nachvollziehen. Nehmen wir an, der Entwickler hat die folgende Logik geschrieben :
Wenn (Alter < = 17) Dann keine Mitgliedschaft im Fitnessstudio zulassen
Wenn (Alter > 60) Dann keine Mitgliedschaft im Fitnessstudio zulassen
Wenn Sie sich die Logik ansehen, werden Sie feststellen, dass die Logik If (Alter <17) hätte lauten müssen, aber der Entwickler hat das falsche Zeichen = hinzugefügt. Ist Ihnen auch aufgefallen, dass die Logik für die gesamte gültige Partition fehlt? If (age>=16 and age <= 60 ) Then allow Gym membership !
Wenn wir nur den Randbedingungswert 17 verwenden, wird die Testausführung fehlschlagen. Sie erfahren jedoch nicht, ob die Randbedingung fehlgeschlagen ist oder ob die gesamte Partition fehlgeschlagen ist. Daher ist es wichtig, einen Äquivalenzpartitionswert zu verwenden, der kein Randwert ist. Wenn wir in diesem Fall den Wert 20 verwenden, wird die Ausführung fehlschlagen. Dies ist ein klarer Hinweis darauf, dass der Entwickler es versäumt hat, die gesamte Partition zu implementieren.
Wenn wir also sowohl den Grenzwert als auch die Äquivalenzpartitionierung kombinieren, lauten unsere Testbedingungen :
Gültige Randbedingungen : Alter = 16, 17, 59, 60
Ungültige Randbedingungen : Alter = 15, 61
Gültige Äquivalenzpartition : Alter = 25
Ungültige Äquivalenzpartition : Alter = 5, 65
Tücken der BVA
Können wir nach Anwendung der Randwert- und Äquivalenzpartitionierung mit Sicherheit sagen, dass wir die erforderliche Abdeckung erreicht haben? Leider ist das nicht so einfach! Bei der Grenzwert- und Äquivalenzpartitionierung wird davon ausgegangen, dass die Anwendung die Eingabe anderer Zeichen oder Werte nicht zulässt. Solche Zeichen, wie @ oder negative Werte oder sogar Alphabete, dürfen nicht eingegeben werden. Diese Annahme gilt jedoch nicht für alle Anwendungen, und es ist wichtig, diese zu testen, bevor man sagen kann, dass der Feldwert vollständig funktioniert.
Außerdem kann es Situationen geben, in denen der Eingabewert von der Entscheidung über einen anderen Wert abhängt. Wenn z.B. das Fitnessstudio-Formular ein weiteres Feld „Männlich“ und „Weiblich“ hat und die Altersgrenze je nach dieser Auswahl variiert. Mit dem Grenzwert allein lassen sich solche Variationen nicht bewältigen, was uns zu einer anderen Blackbox-Technik führt, dem sogenannten Decision Table Testing. Wir werden dies in unserem nächsten Artikel ausführlich besprechen. Bleiben Sie dran!