Seminare der PW-Akademie

White-Box Test

Was ist ein White-Box-Test?

Ein White-Box-Test bzw. das White-Box-Testing beschreibt eine bestimmte Software-Methodik, bei der der Quellcode eines Programms im Mittelpunkt steht. White-Box-Tests testen die Infrastruktur und die interne Codierung von Softwarelösungen. Diese Testmethode konzentriert sich vorwiegend auf die möglichen Einflüsse von Ein- und Ausgängen durch die Anwendung, die Verbesserung des Designs und die technische Korrektheit einzelner Code-Anweisungen. Ein wichtiger Unterschied zu beispielsweise dem Black-Box-Test ist, dass dem Tester beim White-Box-Test die Codestruktur bekannt ist. In der Regel testen hier also die Entwickler der Software. 

White-Box-Tests sind auch als Clear-Box-Tests, Open-Box-Tests, Strukturtests, Code-basierte Tests und Glass-Box-Tests bekannt. 

In welchen Bereichen werden White-Box-Tests durchgeführt?

Das White-Box-Testverfahren wird hauptsächlich für Unit-Tests (auch Komponententests genannt) verwendet. Die entsprechende Abdeckung kann mit Tools gemessen werden. Die interne Qualität des Testobjekts wird während der Ausführung der Testfälle analysiert.

Wie unterscheiden sich White-Box-Tests von Black-Box-Tests?

Neben der Methode des White-Box- gibt es auch die Methode des sogenannten Black-Box-Testverfahren. Die folgende Tabelle bietet Ihnen eine Übersicht über die wichtigsten Unterschiede dieser beiden Testverfahren. 

 

White-Box Tests Black-Box Tests
Beschreibung White-Box-Test: Es ist eine Softwaretestmethode, bei welcher der Tester die interne Struktur, das Design und die Implementierung des Programms überprüft. Black-Box-Test: Es ist eine Softwaretestmethode, bei welcher der Tester die Funktionalität und die erwartete Benutzung wie auch Fehlbedingung durch den Endnutzer prüft.
Getestet von White Box Testing wird oftmals von den Software-Entwicklern selbst durchgeführt. Mehr zu erfahren unter ISTQB

und ISTQB Certified Tester Foundation Level.

Black Box Testing wird vermehrt von einem Team von dezidierten Testern durchgeführt.
Erforderliche Kenntnisse über Testobjekt Kenntnisse der internen Codierung und Struktur sind erforderlich. Kenntnisse der Funktionen und des erwarteten Verhaltens der Software.
Teststufen Wird hauptsächlich auf Code-nahen Teststufen wie Unit-Tests und Integrationstests angewendet. Wird hauptsächlich auf höheren Teststufen wie System- und Abnahmetests angewendet.
Erforderliche Programmierkenntnisse Implementierungskenntnisse sind zum Testen erforderlich. Implementierungskenntnisse sind für das Testen nicht zwingend erforderlich.
Testbasis Testfälle basieren auf der Architektur und dem Feindesign. Testfälle basieren in der Regel auf Anforderungsspezifikationen.
Vorteile
  • unterstützt bei der Optimierung des Codes.
  • Ausführungspfade werden neutral und unabhängig von ihrer Ausführungswahrscheinlichkeit betrachtet.
  • Sehr gut geeignet, um Testabdeckung anhand von Überdeckungsmetriken zu messen
  • Gut geeignet für Testautomatisierungen
  • Frühzeitig anwendbar
  • Gut geeignet für große Codesegmente und Gesamtsystem.
  • Code-Zugriff nicht erforderlich.
  • Überprüfung der gewünschten Funktionalität / Test aus Benutzerperspektive.
  • Oftmals kein erhöhter Schulungsbedarf
Nachteile
  • Aufwand steigt in der Regel exponentiell mit der Komplexität des Testobjekts
  • Testaufwand abhängig von Architektur- und Feindesign
  • Oftmals nur einzeln für die Module und nicht auf das Gesamtsystem anwendbar
  • Spezielle Testwerkzeuge notwendig
  • Implementierungskenntnisse notwendig und Schulungsbedarf, da die Testmethode abstrakt ist
  • Vollständige Überprüfung aller Aspekte der Software in der Regel nicht möglich.
  • Qualität der Testfälle abhängig von Qualität der Spezifikationen
  • Aufwand für Testautomatisierungen in der Regel höher als bei White-Box Tests
    Überdeckungs-metriken sind aufwendiger zu erheben

 

Warum sollte man White-Box-Tests durchführen?

Für die Entwicklung neuer digitaler Produkte ist es wichtig, White-Box-Tests in Ihre regelmäßige Qualitätssicherung (QA) einzubeziehen. Eines der grundlegenden Ziele dieser Testmethode besteht darin, verschiedene Codesequenzen in Ihrer Softwareanwendung zu testen. In diesem Prozess müssen Sie Testfälle entwerfen, welche je nach Überdeckungsziel verschiedene Pfade des Softwarecodes abdecken. Grundsätzlich sollte jede Codezeile, sprich jede Anweisung mindestens einmal ausgeführt werden, um grundsätzlich eine gute Qualitätsbasis zu schaffen, bevor Tests auf funktionaler Ebene durchgeführt werden. Ein White-Box-Test hilft bei der Identifizierung von Fehlern in Ihrem Code, die zu Fehlfunktionen Ihrer Software führen. Mögliche Fehler, welche durch White-Box-Tests gefunden werden können:

  • Syntax- oder Initialisierungsfehler
  • Fehlerhafte Abbruchbedingungen in Schleifen
  • Fehlerhafte oder inkompatible Schnittstellen
  • Fehler im Informations- oder Datenfluss
  • Betriebs- oder Ausführungsfehler

Vorteile von White-Box-Tests

Der White-Box-Test hat mehrere Vorteile:

  • Umfangreicher Testansatz mit Abdeckung des gesamten Softwarecodes
  • Mit White-Box-Tests können versteckte Fehlerzustände identifiziert werden, welche auf funktionaler Ebene nur sehr sporadisch durchscheinen, aber unter Umständen gravierende Auswirkungen haben können
  • White-Box-Tests können früh in der Entwicklung durchgeführt werden, da keine Endbenutzeroberfläche erforderlich ist
  • Testfälle können einfach automatisiert werden

Nachteile von White-Box-Tests

Doch natürlich gibt es auch beim Whitebox Test Nachteile zu verbuchen:

  • Bei White-Box-Tests sind die Testfälle oft nicht repräsentativ dafür, wie die Komponente verwendet wird
  • Meist sind White-Box-Tests zeitaufwendig, komplex und teuer
  • White-Box-Tests benötigen Tester mit internen Kenntnissen über die Software (Entwickler)

Wie wird ein White-Box-Test durchgeführt?

Die Durchführung eines White-Box-Tests lässt sich nicht allgemeingültig zusammenfassen. Denn das Testing hängt immer davon ab, welche Technik, also welche Testmethode verwendet wird. Hierbei gibt es verschiedene Möglichkeiten. Zu den wichtigsten White-Box Testtechniken zählen:

  • Anweisungsüberdeckung: Auch als C0 Test bekannt. Jede Anweisung des Codes wird von mindestens einem Testfall überdeckt. Wenn jede Anweisung in einem Programm mindestens einmal ausgeführt wurde, spricht man von vollständiger Anweisungsüberdeckung.
  • Zweigüberdeckungstest: Die Zweigüberdeckungstests (C1–Test) wird auch als Kantenüberdeckung, Entscheidungsüberdeckungstest, Branch- oder Edge Coverage bezeichnet. Bei vollständiger Zweigüberdeckung ist ein vollständiger Anweisungsüberdeckungstest mit eingeschlossen. Für den C1-Test müssen strengere Kriterien erfüllt werden im Vergleich zum Anweisungsüberdeckungstest. Im Bereich des kontrollflussorientierten Testens wird der Zweigüberdeckungstest als Mindestkriterium verwendet. Mit Hilfe des Zweigüberdeckungstests lassen sich nicht ausführbare Programmzweige aufspüren. Auf dieser Basis kann man die üblicherweise verwalteten Softwareteile gezielt optimieren.
  • Pfadüberdeckungstest: Pfadüberdeckungstest (auch C2-Test bzw. englisch path coverage) untersucht die möglichen Pfade vom Startknoten zum Endknoten im Kontrollflussdiagramm. Mit einer vollständigen Pfadüberdeckung erreichen Sie gleichzeitig eine vollständige Anweisungs- und Zweigüberdeckung. Der Aufwand, der benötigt wird, um eine vollständige Pfadüberdeckung zu erreichen, steigt exponentiell mit der Größe und Komplexität der Software und wird daher in der Regel ausschließlich auf einzelne Units angewendet.
  • Bedingungsüberdeckungstest: Im Gegensatz zu den bisherigen Überdeckungstests bietet diese Art des White-Box-Tests die Möglichkeit, zusammengesetzte hierarchische Bedingungen in einem angemessenen Maße zu überprüfen und zu testen. 
  • Einfachbedingungsüberdeckungstest: Jede atomare Bedingung aller Entscheidungswege im Code werden einmal mit „true“ und einmal mit „false“ durchlaufen. Die Bedingungen innerhalb einer Entscheidung werden unabhängig betrachtet, mögliche Kombinationen von Bindungen werden nicht betrachtet.
  • Mehrfachbedingungsüberdeckungstest: Dieser White-Box-Test untersucht alle atomaren Bedingungen einer Entscheidung. Für jede Kombinationsmöglichkeit von atomaren Bedingungen wird ein Testfall erstellt. Demnach werden 2n-Testfälle in Abhängigkeit von der Anzahl der atomaren Bedingungen je Entscheidung gebildet.
  • Minimaler Mehrfachbedingungsüberdeckungstest: Beim minimalen Mehrfachbedingsüberdeckungstest werden mehr Testfälle durchgeführt im Vergleich zur Einfachbedingungsüberdeckung und weniger als bei einem Mehrfachbedingungsüberdeckungstest. Es wird auf jene Testfälle verzichtet, dessen Änderung der atomaren Bedingung keinen Einfluss auf den endgültigen Entscheidungsausgang hat.

Was ist ein White-Box Test?+

Ein White-Box-Test ist eine bestimmte Software-Methodik, bei der der Quellcode eines Programms im Mittelpunkt steht. White-Box-Tests testen die Infrastruktur und die interne Codierung von Softwarelösungen. Diese Testmethode konzentriert sich vorwiegend auf die möglichen Einflüsse von Ein- und Ausgängen durch die Anwendung, die Verbesserung des Designs und die technische Korrektheit einzelner Code-Anweisungen.

Warum sollte man White-Box Tests durchführen?+

Für die Entwicklung neuer digitaler Produkte ist es wichtig, White-Box-Tests in Ihre regelmäßige Qualitätssicherung (QA) einzubeziehen. Eines der grundlegenden Ziele dieser Testmethode besteht darin, verschiedene Codesequenzen in Ihrer Softwareanwendung zu testen. Ein White-Box Test hilft bei der Identifizierung von Fehlern in Ihrem Code, die zu Fehlfunktionen Ihrer Software führen.

Welche Fehler können mithilfe von White-Box Tests identifiziert werden?+

Mögliche Fehler, welche durch White-Box Tests gefunden werden können:

  • Syntax- oder Initialisierungsfehler
  • Fehlerhafte Abbruchbedingungen in Schleifen
  • Fehlerhafte oder inkompatible Schnittstellen
  • Fehler im Informations- oder Datenfluss
  • Betriebs- oder Ausführungsfehler

Was sind die Vorteile von White-Box Tests?+

Der White-Box-Test hat mehrere Vorteile:

  • Umfangreicher Testansatz mit Abdeckung des gesamten Softwarecodes
  • Versteckte Fehlerzustände können identifiziert werden, welche auf funktionaler Ebene nur sehr sporadisch, aber unter Umständen gravierende Auswirkungen haben können
  • Tests können früh in der Entwicklung durchgeführt werden, da keine Endbenutzeroberfläche erforderlich ist
  • Testfälle können einfach automatisiert werden

In welchen Bereichen werden White-Box Tests durchgeführt?+

Das White-Box-Testverfahren wird hauptsächlich für Unit-Tests verwendet. Die entsprechende Abdeckung kann mit Tools gemessen werden. Die interne Qualität des Testobjekts wird während der Ausführung der Testfälle analysiert.

Was sind die wichtigsten Testverfahren der White-Box Tests?+

  • Anweisungsüberdeckung
  • Zweigüberdeckungstest
  • Pfadüberdeckungstest
  • Bedingungsüberdeckungstest: Einfachbedingungsüberdeckungstest & Mehrfachbedingungsüberdeckungstest