Einführung in das White-Box-Testen

Testen ist einer der wichtigen Teile der Softwareentwicklung. Es stellt sicher, dass alle Fehler behoben sind und das Programm so funktioniert, wie es gedacht war. Das Testen eines Softwareprodukts kann mehrere Schritte und Verfahren umfassen. In diesem Artikel werfen wir einen Blick auf einen der wichtigsten Ansätze des Testprozesses, den White-Box-Test.

Was ist ein White-Box-Test?

White-Box-Tests werden auch als Codebasis-Tests, Clear-Box-Tests, Open-Box-Tests und strukturelle Tests bezeichnet. Die Kernidee dieses Ansatzes zum Testen von Software besteht darin, das interne Strukturdesign und den Code des Programms zu untersuchen, um es zu testen.

Beim White-Box-Test kann der Tester den gesamten Code des Programms sehen und muss den Ablauf der Ein- und Ausgaben im Programm überprüfen. Im Gegensatz zum Black-Box-Test, der sich mehr auf das Testen der Funktionalität des Programms konzentriert, befasst sich der White-Box-Test mit dem Testen der internen Strukturen des Programms. Wenn wir uns das Programm auf diese Weise ansehen, können wir daran arbeiten, das Design, die Benutzerfreundlichkeit und die Sicherheit des Produkts zu verbessern.

Wie Sie sich vorstellen können, wird dies als White-Box- oder Glass-Box-Test bezeichnet, da der Tester den Code und andere Teile des Programms sehen kann.

Was unterscheidet White-Box-Tests von Black-Box-Tests?

Wenn Sie in der Vergangenheit beim Testen mit den Zehenspitzen gespielt haben, sind Sie sicher auf Black-Box-Tests gestoßen. Der größte Unterschied zwischen White-Box-Tests und Black-Box-Tests besteht darin, dass die White-Box-Tests im Gegensatz zu Black-Box-Tests, die vom Standpunkt eines Benutzers aus durchgeführt werden, vom Standpunkt eines Entwicklers aus durchgeführt werden.

Mit anderen Worten, anstatt einen Blick von außen auf das Programm zu werfen, erkennt White Box Testing den internen Code und testet ihn.

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

Wir können den Prozess des White-Box-Testens in zwei Hauptschritte unterteilen.

1. Den bereitgestellten Code verstehen

Zunächst muss ein Tester im White-Box-Test den Code der Anwendung lernen. In Anbetracht der Tatsache, dass es beim White-Box-Testen darum geht, den gesamten internen Code des Programms zu verstehen und zu testen, sollte jeder, der mit dem Testen des Codes beauftragt ist, nicht nur gute Programmierkenntnisse haben, sondern auch eine gute Hand mit der Sprache haben des Quellcodes.

Sicherheit ist einer der wichtigen Aspekte des White-Box-Testens, daher muss der Tester auch die sicheren Codierungspraktiken beherrschen.

2. Testfälle erstellen und ausführen

Sobald der Code vom Testteam untersucht wurde, können sie mit dem Testen des Codes beginnen, um den ordnungsgemäßen Ablauf und die Struktur zu überprüfen. Zu diesem Zweck schreiben die Tester Code für einige Testfälle, die versuchen, alle im Programm vorhandenen Codezeilen zu durchlaufen.

Dies kann auch beim manuellen Testen durchgeführt werden, bei dem Versuche und Irrtümer durchgeführt werden. Die Tester können auch einige automatisierte Testtools wie JUnit und NUnit verwenden.

Ein Beispiel für White-Box-Tests

Sehen Sie sich den folgenden Code an, um das Konzept der White-Box-Tests besser zu verstehen:

print (int x, int y) (
int sum = x + y;
If ( sum > 0 )
Print ( "Positive", result )
Else
Print ( "Negative", result )
)

Wie bereits erwähnt, besteht das Ziel von White Box Testing darin, alle im Code enthaltenen Verzweigungen, Schleifen und Anweisungen zu durchlaufen. In Anbetracht dessen können wir zwei Testfälle erstellen, einen, bei dem beide Eingaben positiv sind, und einen anderen, bei dem beide Eingaben negative ganze Zahlen sind.

Beispiel:

  • A = 10 und B = 20
  • A = -10 und B = -20

White-Box-Testverfahren

Eine der beliebtesten Testtechniken für White-Box-Tests ist die Codeabdeckungsanalyse. Diese Technik versucht, Lücken in der Testfallsuite zu beseitigen, und identifiziert Abschnitte einer App, die nicht von Testfällen verwendet werden. Sobald diese Lücken gefunden sind, können wir Fälle erstellen, um Teile des Codes zu sehen und zu überprüfen, die nicht getestet wurden. Dies führt am Ende zu einem polierteren Produkt.

Im Folgenden sind einige Techniken zur Abdeckungsanalyse aufgeführt:

  • Anweisungsüberdeckung: Bei dieser Methode versuchen wir, alle Anweisungen im Code mindestens einmal zu durchlaufen. Dies stellt sicher, dass der gesamte Code getestet wird.
  • Zweigabdeckung: Diese Methode soll jeden Zweig der Entscheidungspunkte im Code durchlaufen. Dies stellt sicher, dass alle Entscheidungen mindestens einmal getestet werden.

Es gibt auch einige andere Testtechniken, hier nur einige:

  • Bedingungsabdeckung: Bei dieser Testtechnik stellen wir sicher, dass alle Bedingungen im Code abgedeckt sind, zum Beispiel:

READ A, B
IF (A == 0 || B == 0)
PRINT '0'

Wie Sie sehen, haben wir hier 2 Bedingungen: A == 0 und B == 0. Diese Bedingungen erhalten nun TRUE und FALSE als Werte. Ein mögliches Beispiel kann sein:

# TC1 - A = 0, B = 110
# TC2 - A = 10, B = 0

  • Multiple Condition Coverage: Dies ist etwas fortgeschrittener als das letzte. Wie Sie sich vorstellen können, testen wir mindestens einmal alle möglichen Kombinationen und alle möglichen Ergebnisse. Hier ist ein anständiges Beispiel:

READ A, B
IF (A == 0 || B == 0)
PRINT '0'

# TC1: A = 0, B = 0
# TC2: A = 0, B = 10
# TC3: A = 110, B = 0
# TC4: A = 110, B = 5

Daher. Wir benötigen 4 Testfälle für 2 Bedingungen.

Wenn also n Bedingungen vorliegen, benötigen wir 2 n Testfälle.

  • Basis Path Testing: Bei dieser White-Box-Testtechnik erstellen wir einen Kontrollflussgraphen und berechnen dann die zyklomatische Komplexität, dh die Anzahl der unabhängigen Pfade. Unter Verwendung der zyklomatischen Komplexität können wir die minimale Anzahl von Testfällen finden, die wir für jeden unabhängigen Pfad des Flussdiagramms entwerfen können.
  • Schleifentests: Schleifen sind eines der am häufigsten verwendeten Werkzeuge in der Waffe eines Programmierers. Da dies der Kern so vieler Algorithmen ist, ist es nur sinnvoll, eine Testtechnik zu verwenden, die auf Schleifen basiert. Es gibt drei Arten von Schleifen: Einfach, verschachtelt und verkettet. Werfen wir einen Blick darauf, wie ein Tester mit der Technologie dieser Typen umgeht:

1. Einfache Schleifen: Für eine Schleife, die einfach aufgebaut ist und die Größe n hat, können wir einige Testfälle entwerfen, die Folgendes tun:

  • Überspringe diese Schleife.
  • Die Schleife nur einmal durchlaufen.
  • Habe 2 Pässe
  • Beliebig viele Pässe haben, die kleiner als seine Größe sind.
  • n-1 und n + 1 durchlaufen die Schleife.

2. Verschachtelte Schleifen: Bei Code mit verschachtelten Schleifen beginnen wir mit der innersten Schleife und gehen dann nach außen, bis wir die äußerste Schleife erreichen können.

3. Verkettete Schleifen: Bei diesen Schleifen. Wir verwenden einen einfachen Schleifentest nach dem anderen, und falls die verkettete Schleife nicht unabhängig ist, können wir sie wie geschachtelte Schleifen behandeln.

Vorteile

Jetzt haben wir gesehen, was diese Testmethode ist und wie sie funktioniert. Werfen wir einen Blick auf einige der Vorteile.

  • White-Box-Tests haben einfache und klare Regeln, um einen Tester über die Durchführung der Tests zu informieren.
  • White-Box-Testtechniken sind einfach zu automatisieren, was dazu führt, dass ein Entwickler weniger Tester einstellen muss und geringere Kosten verursacht.
  • Es zeigt Engpässe, die die Optimierung für die Programmierer recht einfach machen.
  • Ein Testteam kann mit seiner Arbeit beginnen, ohne warten zu müssen, bis das Entwicklungsteam die UI-Entwicklung abgeschlossen hat.
  • Da in den meisten Fällen alle Codepfade im Code enthalten sind, ist das Testen des Codes gründlicher.
  • Es hilft beim Entfernen von Teilen des Codes, die für die Funktionalität des Programms nicht wesentlich sind.

Nachteile

  • Es ist ziemlich ressourcenschonend. Um die Tests durchführen zu können, benötigen Sie jemanden, der Ihren Code sehr gut kennt, um im Testteam zu sein, und der selbst ein guter Programmierer ist. Diese Art von Fähigkeitsstufe erhöht die Kosten des Testens.
  • In vielen Fällen ist es aus Zeit- oder Budgetgründen nicht möglich, alle möglichen Bedingungen im Code zu testen.
  • Da White-Box-Tests auf der Überprüfung der Funktionalität des vorhandenen Codes basieren, können Sie die fehlende Funktionalität im Programm nicht finden.
  • Wenn ein Teil des Codes neu entworfen und geschrieben wird, müssen die Tester die Testfälle erneut schreiben.

White-Box-Testwerkzeuge

Nachdem Sie sich mit den Vor- und Nachteilen sowie den Techniken des White-Box-Testens vertraut gemacht haben, können Sie sich einige beliebte Tools ansehen, mit denen Tester White-Box-Tests durchführen können.

  • JSUnit.net

Dies ist ein JavaScript-Testtool. JSUnit ist ein Teil von Junit und ein Open-Source-Unit-Testing-Framework, mit dem White-Box-Tests durchgeführt werden können. JSUnit ist vollständig Open Source unter GNU Public License 2.0, was bedeutet, dass selbst für die kommerzielle Nutzung ein Entwickler keine Lizenzgebühr zahlen muss.

  • CppUnit

Wie JSUnit wird auch CppUnit als Teil von JUnit angesehen. Das Tool kann je nach Anforderung des Testers im Nur-Text- oder XML-Format ausgegeben und Unit-Tests mit eigenen Klassen erstellen. Die CppUnit ist unter der LGPL lizenziert.

  • Veracode

Veracode ist zwar nicht kostenlos, verfügt jedoch über einige leistungsstarke Tools, mit denen .NET, C ++, Java und einige andere Sprachen getestet werden können. Der White-Box-Test kann auch für Desktop-, Web- und mobile Apps durchgeführt werden.

  • NUnit

Es handelt sich um ein Unit-Testing-Framework, das in C # geschrieben wurde. Das Tool unterstützt alle verfügbaren .Net-Sprachen und unterstützt auch datengesteuerte Tests. In Bezug auf die Funktionalität kann es sowohl für die parallele als auch für die gleichzeitige Ausführung verwendet werden und ein Klassen-Framework sowie Test-Runner-Apps bereitstellen. Eine bemerkenswerte Eigenschaft der NUnit ist, dass es ziemlich einfach zu bedienen ist.

  • JUnit

Wie Sie anhand des Namens erraten können, ist JUnit ein Unit-Testing-Automatisierungstool für Java. Der JUnit-Van lässt sich problemlos in IDEs wie Eclipse, Macen ACT usw. integrieren. Er unterstützt die testgetriebene Entwicklung und kann vorhandene Tests mit neu erstellten Tests synchronisieren. JUnit ist vollständig Open Source und kann für jede Art von Java-Entwicklung kostenlos verwendet werden.

  • CSUnit

Genau wie Nunit wurde CSUnit entwickelt, um Unit-Tests in .Net Framework zu unterstützen. Es unterstützt Sprachen wie C # und VB.Net. CSUnit bietet integrierte Unterstützung für Factoring-Praktiken und andere Arten von Praktiken, die im agilen Entwicklungsansatz von SDLC verwendet werden.

Fazit

Testen hat einen sehr wichtigen Stellenwert im Softwareentwicklungsprozess, und White-Box-Testen ist ein wertvoller Ansatz, um dies zu erreichen. Obwohl dieser Testansatz teuer und zeitaufwendig sein kann, bleibt der White-Box-Test der einzige Weg, um sicherzustellen, dass alle Teile des Codes im Testprozess abgedeckt wurden.

Der wichtigste Teil des White-Box-Tests ist, wie vertraut der Tester mit dem Code ist. Jemand, der mit dem Testen des WBT-Ansatzes beauftragt ist und mit dem Quellcode und der verwendeten Programmiersprache nicht gut zurechtkommt, wird viel Ärger verursachen. Außerdem ist es keine gute Idee, nur auf die White-Box-Tests zu setzen, da fehlende Funktionen nicht abgedeckt werden. Für einen umfassenderen Entwicklungsansatz sollten sowohl White-Box-Tests als auch Black-Box-Tests durchgeführt werden, da dann die meisten Fehler, Mängel und verbleibenden Funktionen abgedeckt werden, die hinzugefügt werden müssen, bevor das Produkt ausgeliefert werden kann.

Empfohlene Artikel

Dies war ein Leitfaden für White-Box-Tests. Hier haben wir anhand von Beispielen und verschiedenen White-Box-Testtechniken mit Werkzeugen erläutert, wie White-Box-Tests durchgeführt werden. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren.

  1. Fragen im Vorstellungsgespräch zu Software Testing
  2. Karriere im Softwaretest
  3. Fragen zum Game Testing-Interview
  4. Fragen im Vorstellungsgespräch zu ETL Testing
  5. Code Coverage vs Test Coverage | Top 4 Unterschiede zu lernen
  6. Tools zur Codeabdeckung | Top 6 Code-Coverage-Tools