Was ist Grenzwertanalyse (Boundary Value Analysis)?

Technik des Black-Box-Tests, die, weil sich Fehler an den Grenzen zwischen Äquivalenzklassen häufen, die Werte unmittelbar auf beiden Seiten jeder Grenze testet (zum Beispiel 0, 1, 100 und 101, wenn 1 bis 100 akzeptiert wird). Sie eignet sich gut, um Fehler wie verwechselte Vergleichsoperatoren zu finden.

Japanische Bezeichnung: 境界値分析

„Grenzwertanalyse (Boundary Value Analysis)“ kommt in 3 Übungsfragen aus 1 Themen vor, z. B. Softwareentwicklung und Projektmanagement.

Fachgebiet: Softwareentwicklung und Projektmanagement

Warum die Grenzen getestet werden

Bedingte Verzweigungen in Programmen sind anfällig für Fehler wie das Verwechseln von „<“ mit „<=“ oder „>“ mit „>=“ oder einen Versatz um eins bei einem Array-Index (Off-by-one), und die Auswirkung zeigt sich nur bei Grenzwerten. Lautet die Spezifikation zum Beispiel „ab 85 °C warnen“, der Code aber if (t > 85), verhält er sich bei 84 °C und 86 °C wie spezifiziert und warnt nur bei 85 °C nicht. Testet man bei der Äquivalenzklassenbildung nur den mittleren Wert jeder Klasse, findet man solche Fehler nicht.

Wie die Werte gewählt werden

Werden ganzzahlige Eingaben von 1 bis 100 akzeptiert, wählt man an der unteren Grenze 0 und 1 und an der oberen Grenze 100 und 101. Eine feinere Variante testet jeden Grenzwert und seine beiden Nachbarn (0, 1, 2 und 99, 100, 101). Gibt es mehrere Kategorien, etwa Preiskategorien, werden an jeder Grenze, an der die Kategorie wechselt, Werte auf beiden Seiten gewählt. Bei Dezimaleingaben ergibt sich der Nachbarwert aus der in der Spezifikation festgelegten Auflösung (etwa Schritten von 0,1).

Grenzen in hardwarenaher Software

Eingebettete Software hat viele numerische Grenzen in ihrer Spezifikation, etwa Schwellwerte für ADC-Messwerte, den Punkt, an dem ein Timerzähler vom Maximum auf 0 überläuft, den Punkt, an dem ein Puffer genau voll ist, und die maximale Paketlänge eines Kommunikationsprotokolls. Rechenfehler treten leicht beim Überlauf von 255 auf 0 eines 8-Bit-Zählers oder an der Grenze zwischen 32.767 und −32.768 einer vorzeichenbehafteten 16-Bit-Ganzzahl auf. Solche Grenzen werden sowohl aus den Zahlen in der Spezifikation als auch aus den Wertebereichen der Datentypen ermittelt.

Jetzt üben: Fragen zu Grenzwertanalyse (Boundary Value Analysis)

Ein Programm legt den Eintrittspreis nach dem Alter (einer ganzen Zahl ab 0) fest: 0 bis 17 Jahre zahlen den Kinderpreis, 18 bis 64 Jahre den Normalpreis und ab 65 Jahren den Seniorenpreis. Welche Testwerte sind für eine Grenzwertanalyse, die die Grenzen prüft, an denen die Preiskategorie wechselt, am geeignetsten?

  1. A10, 40, 90
  2. B17, 18, 64, 65
  3. C18, 65
Antwort und Erläuterung anzeigen

Antwort: B. 17, 18, 64, 65

Da sich Fehler an den Grenzen zwischen Äquivalenzklassen häufen, testet die Grenzwertanalyse die Werte unmittelbar auf beiden Seiten jeder Grenze. An der Grenze zwischen Kinder- und Normalpreis werden 17 und 18 gewählt, an der Grenze zwischen Normal- und Seniorenpreis 64 und 65; das ergibt die vier Werte 17, 18, 64 und 65. Fehler wie „<“ statt „<=“ in einer Bedingung werden möglicherweise nicht gefunden, wenn nur eine Seite einer Grenze getestet wird. 10, 40 und 90 sind Werte der Äquivalenzklassenbildung, die als Repräsentanten jeder Kategorie gewählt werden, und können Fehler an den Grenzen nicht prüfen.

Häufige Fragen

Wie werden Äquivalenzklassenbildung und Grenzwertanalyse zusammen eingesetzt?

Meist werden sie kombiniert. Die Äquivalenzklassenbildung teilt die Eingaben in Klassen auf und testet einen Repräsentanten jeder Klasse, und die Grenzwertanalyse ergänzt Tests auf beiden Seiten der Klassengrenzen. Äquivalenzklassenbildung allein verringert die Zahl der Tests, übersieht aber leicht Fehler an den Grenzen.

Ist die Grenzwertanalyse eine Technik des White-Box-Tests?

Sie wählt Werte an den Grenzen der in der Spezifikation festgelegten Bereiche und ist daher eine Technik des Black-Box-Tests. Manche Grenzen, etwa Array-Größen und Wertebereiche von Datentypen innerhalb der Implementierung, stehen jedoch nicht in der Spezifikation; daher werden manchmal nach einem Blick in den Quellcode Werte ergänzt.

„Grenzwertanalyse (Boundary Value Analysis)“ in den Erläuterungen

Fragen mit „Grenzwertanalyse (Boundary Value Analysis)“ (3)

  1. Ein Programm legt den Eintrittspreis nach dem Alter (einer ganzen Zahl ab 0) fest: 0 bis 17 Jahre zahlen den Kinderpreis, 18 bis 64 Jahre den Normalpreis und ab 65 Jahren den Seniorenpreis. Welche Testwerte sind für eine Grenzwertanalyse, die die Grenzen prüft, an denen die Preiskategorie wechselt, am geeignetsten?
  2. Welche Beschreibung trifft auf den Black-Box-Test zu?
  3. Die Spezifikation lautet „Warnung ausgeben, wenn die Temperatur 85 °C oder höher ist“, in der Firmware steht aber versehentlich „if (t > 85)“. Die Temperatur t ist eine ganze Zahl. Mit welchem der folgenden Testwerte lässt sich dieser Fehler finden?

Verwandte Begriffe

Äquivalenzklassenbildung (Equivalence Partitioning) Black-Box-Test White-Box-Test Agile Softwareentwicklung CI/CD (Continuous Integration und Continuous Delivery) Earned-Value-Management (EVM) Methode des kritischen Pfads (CPM) Scrum SLA (Service Level Agreement) Testgetriebene Entwicklung (TDD)

Zur Glossarübersicht