white box testing complete guide with techniques
Was ist White Box Testing?
Wenn wir uns an die Definition halten, ist „White-Box-Test“ (auch als Klar-, Glaskasten- oder Strukturtest bezeichnet) eine Testtechnik, die den Code und die interne Struktur eines Programms bewertet.
Beim White-Box-Test wird die Struktur des Codes untersucht. Wenn Sie die interne Struktur eines Produkts kennen, können Tests durchgeführt werden, um sicherzustellen, dass die internen Vorgänge gemäß der Spezifikation ausgeführt werden. Und alle internen Komponenten wurden angemessen ausgeübt.
Was du lernen wirst:
- Meine Erfahrung
- Unterschied zwischen White-Box- und Black-Box-Tests
- Schritte zum Ausführen von WBT
- Arten und Techniken des White-Box-Testens
- White Box Testbeispiel
- White-Box-Testwerkzeuge
- Fazit
- Literatur-Empfehlungen
Meine Erfahrung
Es ist fast ein Jahrzehnt her, seit ich im Bereich Softwaretests bin und bisher festgestellt habe, dass die Tester die enthusiastischsten in der gesamten Softwareindustrie sind.
Der Hauptgrund dafür ist, dass der Tester immer etwas zu lernen hat. Sei es eine Domäne, ein Prozess oder eine Technologie, ein Tester kann eine vollständige Entwicklung haben, wenn er möchte.
Aber wie sie sagen 'Es gibt immer eine dunklere Seite' .
Tester vermeiden in der Tat auch eine Art von Tests, die sie als sehr kompliziert empfinden und die ein Kinderspiel des Entwicklers sind. Ja, der 'White Box Testing'.
Abdeckung
White Box Testing deckt die Spezifikation im Code ab:
2. Segmentabdeckung: Stellen Sie sicher, dass jede Code-Anweisung einmal ausgeführt wird.
3. Branch Coverage oder Node Testing: Die Abdeckung jedes Codezweigs von allen möglichen war.
4. Zusammengesetzte Zustandsabdeckung: Testen Sie für mehrere Bedingungen jede Bedingung mit mehreren Pfaden und einer Kombination der verschiedenen Pfade, um diese Bedingung zu erreichen.
5. Basispfadtest: Jeder unabhängige Pfad im Code wird zum Testen verwendet.
6. Datenflusstest (DFT): Bei diesem Ansatz verfolgen Sie die spezifischen Variablen durch jede mögliche Berechnung und definieren so den Satz von Zwischenpfaden durch den Code. Die DFT spiegelt tendenziell Abhängigkeiten wider, jedoch hauptsächlich durch Sequenzen der Datenmanipulation. Kurz gesagt, jede Datenvariable wird verfolgt und ihre Verwendung wird überprüft. Dieser Ansatz neigt dazu, Fehler wie verwendete Variablen aufzudecken, die nicht initialisiert oder deklariert, aber nicht verwendet wurden, und so weiter.
7. Pfadtest: Beim Testen von Pfaden werden alle möglichen Pfade durch den Code definiert und abgedeckt. Es ist eine zeitaufwändige Aufgabe.
8. Schleifentest: Diese Strategien beziehen sich auf das Testen einzelner Schleifen, verketteter Schleifen und verschachtelter Schleifen. Unabhängige und abhängige Codeschleifen und Werte werden durch diesen Ansatz getestet.
Warum führen wir WBT durch?
Sicherstellen:
- Dass alle unabhängigen Pfade innerhalb eines Moduls mindestens einmal ausgeübt wurden.
- Alle logischen Entscheidungen wurden auf ihre wahren und falschen Werte überprüft.
- Alle Schleifen, die an ihren Grenzen und innerhalb ihrer Betriebsgrenzen ausgeführt werden, haben die Gültigkeit der internen Datenstrukturen.
So entdecken Sie die folgenden Arten von Fehlern:
- Logische Fehler schleichen sich in unsere Arbeit ein, wenn wir Funktionen, Bedingungen oder Steuerelemente entwerfen und implementieren, die nicht im Programm enthalten sind
- Die Entwurfsfehler aufgrund des Unterschieds zwischen dem logischen Ablauf des Programms und der tatsächlichen Implementierung
- Tippfehler und Syntaxprüfung
Erfordert dieser Test detaillierte Programmierkenntnisse?
Wir müssen schreiben Testfälle das stellt die vollständige Abdeckung der Programmlogik sicher.
Dazu müssen wir das Programm gut kennen, d. H. Wir sollten die Spezifikation und den zu testenden Code kennen. Für diese Art des Testens sind Kenntnisse der Programmiersprachen und der Logik erforderlich.
Einschränkungen
Es ist nicht möglich, jeden einzelnen Pfad der Schleifen im Programm zu testen. Dies bedeutet, dass für große Systeme keine umfassenden Tests möglich sind.
Dies bedeutet nicht, dass WBT nicht wirksam ist. Durch die Auswahl wichtiger logischer Pfade und Datenstrukturen zum Testen ist dies praktisch möglich und effektiv.
Unterschied zwischen White-Box- und Black-Box-Tests
Einfach ausgedrückt:
Beim Black-Box-Test testen wir die Software aus der Sicht eines Benutzers. In der White-Box sehen und testen wir den tatsächlichen Code.
Beim Black-Box-Testen führen wir Tests durch, ohne den internen Systemcode zu sehen, bei WBT sehen und testen wir den internen Code.
Die White-Box-Testtechnik wird sowohl von den Entwicklern als auch von den Testern verwendet. Es hilft ihnen zu verstehen, welche Codezeile tatsächlich ausgeführt wird und welche nicht. Dies kann darauf hinweisen, dass entweder eine Logik oder ein Tippfehler fehlt, was schließlich zu einigen negativen Konsequenzen führen kann.
Empfohlene Lektüre => Eine vollständige Anleitung zum Testen der Black Box
Schritte zum Ausführen von WBT
Schritt 1 - Verstehen Sie die Funktionalität einer Anwendung anhand ihres Quellcodes. Dies bedeutet, dass ein Tester mit der Programmiersprache und den anderen Tools sowie den zur Entwicklung der Software verwendeten Techniken vertraut sein muss.
Schritt 2 - Erstellen Sie die Tests und führen Sie sie aus.
Wenn wir das Konzept des Testens diskutieren, “ Abdeckung Wird als wichtigster Faktor angesehen. Hier werde ich erklären, wie Sie im Rahmen von White-Box-Tests eine maximale Abdeckung erzielen können.
Lesen Sie auch=> Ursache-Wirkungs-Diagramm - Dynamische Testfallschreibtechnik für maximale Abdeckung
Arten und Techniken des White-Box-Testens
Für jeden White-Box-Testtyp gibt es verschiedene Typen und unterschiedliche Methoden.
Siehe das folgende Bild als Referenz.
Heute konzentrieren wir uns hauptsächlich auf die Ausführungstests der „Unit-Testing-White-Box-Technik“.
3 Hauptprüfverfahren für White Box:
- Statement Coverage
- Zweigstellenabdeckung
- Pfadabdeckung
Beachten Sie, dass die Anweisung, der Zweig oder die Pfadabdeckung keinen Fehler oder Defekt identifiziert, der behoben werden muss. Es werden nur die Codezeilen identifiziert, die entweder nie ausgeführt werden oder unberührt bleiben. Auf dieser Grundlage können weitere Tests durchgeführt werden.
Lassen Sie uns diese Techniken anhand eines einfachen Beispiels einzeln verstehen.
# 1) Aussage Berichterstattung:
In einer Programmiersprache ist eine Anweisung nichts anderes als die Codezeile oder Anweisung, die der Computer versteht und entsprechend handelt. Eine Anweisung wird zu einer ausführbaren Anweisung, wenn sie kompiliert und in den Objektcode konvertiert wird, und führt die Aktion aus, wenn sich das Programm im laufenden Modus befindet.
Daher 'Statement Coverage' Wie der Name selbst schon sagt, ist dies die Methode, um zu überprüfen, ob jede einzelne Zeile des Codes mindestens einmal ausgeführt wird.
# 2) Zweigstellenabdeckung:
'Branch' in einer Programmiersprache ist wie die 'IF-Anweisungen'. Eine IF-Anweisung hat zwei Zweige: T. Rue und False .
In der Zweigstellenabdeckung (auch als Entscheidungsabdeckung bezeichnet) überprüfen wir, ob jede Zweigstelle mindestens einmal ausgeführt wird.
Im Falle einer „IF-Anweisung“ gibt es zwei Testbedingungen:
- Eine, um den wahren Zweig zu validieren und
- Andere, um den falschen Zweig zu validieren.
Daher ist Branch Coverage theoretisch eine Testmethode, die bei der Ausführung sicherstellt, dass jeder Zweig von jedem Entscheidungspunkt ausgeführt wird.
# 3) Pfadabdeckung
Die Pfadabdeckung testet alle Pfade des Programms. Dies ist eine umfassende Technik, die sicherstellt, dass alle Pfade des Programms mindestens einmal durchlaufen werden. Die Pfadabdeckung ist noch leistungsfähiger als die Zweigabdeckung. Diese Technik ist nützlich zum Testen der komplexen Programme.
Nehmen wir ein einfaches Beispiel, um all diese White-Box-Testtechniken zu verstehen.
Was ist Loadrunner beim Testen von Software?
Überprüfen Sie auch=> Verschiedene Arten von Tests
White Box Testbeispiel
Betrachten Sie den folgenden einfachen Pseudocode:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
Zum Statement Coverage - Wir würden nur einen Testfall benötigen, um alle Zeilen des Codes zu überprüfen.
Das bedeutet:
Wenn ich bedenke TestCase_01 soll sein (A = 40 und B = 70), dann werden alle Codezeilen ausgeführt.
Nun stellt sich die Frage:
- Ist das ausreichend
- Was ist, wenn ich meinen Testfall als A = 33 und B = 45 betrachte?
Da die Anweisungsabdeckung nur die wahre Seite abdeckt, würde für den Pseudocode nur ein Testfall NICHT ausreichen, um ihn zu testen. Als Tester müssen wir auch die negativen Fälle berücksichtigen.
Daher müssen wir für eine maximale Abdeckung berücksichtigen '' Zweigstellenabdeckung '' , die die 'FALSE' -Bedingungen auswerten.
In der realen Welt können Sie entsprechende Anweisungen hinzufügen, wenn die Bedingung fehlschlägt.
So wird nun der Pseudocode:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
Da die Anweisungsabdeckung nicht ausreicht, um den gesamten Pseudocode zu testen, benötigen wir eine Zweigabdeckung, um eine maximale Abdeckung sicherzustellen .
Für die Zweigstellenabdeckung würden wir also zwei Testfälle benötigen, um den Test dieses Pseudocodes abzuschließen.
TestCase_01 : A = 33, B = 45
TestCase_02 : A = 25, B = 30
Damit können wir sehen, dass jede einzelne Zeile des Codes mindestens einmal ausgeführt wird.
Hier sind die Schlussfolgerungen, die bisher abgeleitet wurden:
- Die Zweigstellenabdeckung gewährleistet mehr Abdeckung als die Kontoauszugsabdeckung.
- Die Zweigstellenabdeckung ist leistungsfähiger als die Kontoauszugsabdeckung.
- 100% Filialabdeckung selbst bedeutet 100% Kontoauszugsabdeckung.
- Eine 100% ige Abdeckung der Kontoauszüge garantiert jedoch keine 100% ige Abdeckung der Filialen.
Fahren wir nun mit fort Pfadabdeckung:
Wie bereits erwähnt, wird die Pfadabdeckung zum Testen der komplexen Codefragmente verwendet, die im Wesentlichen Schleifenanweisungen oder eine Kombination aus Schleifen und Entscheidungsanweisungen umfassen.
Betrachten Sie diesen Pseudocode:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
Um nun eine maximale Abdeckung zu gewährleisten, würden wir 4 Testfälle benötigen.
Wie? Einfach - es gibt 2 Entscheidungsaussagen, daher würden wir für jede Entscheidungsaussage zwei Zweige zum Testen benötigen. Einer für wahr und der andere für den falschen Zustand. Für 2 Entscheidungsaussagen würden wir also 2 Testfälle benötigen, um die wahre Seite zu testen, und 2 Testfälle, um die falsche Seite zu testen, was insgesamt 4 Testfälle ergibt.
Um diese zu vereinfachen, betrachten wir das folgende Flussdiagramm des Pseudocodes, den wir haben:
Um die vollständige Abdeckung zu erhalten, benötigen wir folgende Testfälle:
TestCase_01: A = 50, B = 60
TestCase_02 : A = 55, B = 40
TestCase_03: A = 40, B = 65
TestCase_04: A = 30, B = 30
Open Source-Automatisierungstest-Tools für Webanwendungen
Der zurückgelegte Weg wird also sein:
Rote Linie - TestCase_01 = (A = 50, B = 60)
Blaue Linie = TestCase_02 = (A = 55, B = 40)
Orange Linie = TestCase_03 = (A = 40, B = 65)
Grüne Linie = TestCase_04 = (A = 30, B = 30)
******************
= >> Kontaktiere uns um Ihren Eintrag hier vorzuschlagen
*****************
White-Box-Testwerkzeuge
Im Folgenden finden Sie eine Liste der besten White-Box-Testwerkzeuge.
# 1) Veracode
Mit den White-Box-Testtools von Veracode können Sie Softwarefehler schnell und einfach zu reduzierten Kosten identifizieren und beheben. Es unterstützt mehrere Anwendungssprachen wie .NET, C ++, JAVA usw. und ermöglicht es Ihnen, die Sicherheit von Desktop-, Web- und mobilen Anwendungen zu testen. Das Veracode-Tool bietet noch einige weitere Vorteile. Ausführliche Informationen zu den Veracode White Box-Testwerkzeugen finden Sie unter dem folgenden Link.
Website-Link:: Veracode
# 2) EclEmma
EclEmma wurde ursprünglich für Testläufe und Analysen in der Eclipse-Workbench entwickelt. Es wird als kostenloses Java-Code-Coverage-Tool angesehen und verfügt auch über mehrere Funktionen. Um EclEmma zu installieren oder mehr darüber zu erfahren, klicken Sie bitte auf den folgenden Link.
Website-Link: EclEmma
# 3) RCUNIT
Ein Framework, das zum Testen von C-Programmen verwendet wird, ist als RCUNIT bekannt. RCUNIT kann entsprechend den Bestimmungen der MIT-Lizenz entsprechend verwendet werden. Es ist kostenlos zu benutzen und um es zu installieren oder mehr darüber zu erfahren, überprüfen Sie bitte den folgenden Link.
Website-Link: RCUNIT
# 4) cfix
cfix ist eines der Unit-Testing-Frameworks für C / C ++, das ausschließlich darauf abzielt, die Entwicklung von Testsuiten so einfach und unkompliziert wie möglich zu gestalten. In der Zwischenzeit ist cfix normalerweise auf den NT-Kernel-Modus und Win32 spezialisiert. Um cfix zu installieren und mehr darüber zu erfahren, klicken Sie bitte auf den folgenden Link
Website-Link: cfix
# 5) Google Test
Googletest ist das C ++ - Testframework von Google. Testerkennung, Todestests, wertparametrisierte Tests, schwerwiegende und nicht schwerwiegende Fehler, Generierung von XML-Testberichten usw. sind nur einige Funktionen von GoogleTest, aber es gibt auch einige andere Funktionen. Linux, Windows, Symbian und Mac OS X sind nur wenige Plattformen, auf denen GoogleTest verwendet wurde. DamitDownload, bitte überprüfen Sie den folgenden Link.
Download-Link: Google-Test
# 6) EMMA
Emma ist ein einfach zu verwendendes kostenloses JAVA-Tool zur Codeabdeckung. Es enthält mehrere Funktionen und Vorteile. Um Emma herunterzuladen und mehr über sie zu erfahren, klicken Sie bitte auf den folgenden Link.
Download-Link: EMMA
# 7) NUnit
NUnit ist ein einfach zu verwendendes Open-Source-Framework für Unit-Tests, für das keine manuellen Eingriffe erforderlich sind, um die Testergebnisse zu beurteilen. Es unterstützt alle .NET-Sprachen. Es unterstützt auch datengesteuerte Tests und Tests, die parallel unter NUnit ausgeführt werden. Frühere Versionen von NUnit verwendeten die NUnit-Lizenz, NUnit 3 wird jedoch unter der MIT-Lizenz veröffentlicht. Beide Lizenzen ermöglichen jedoch die kostenlose Nutzung ohne Einschränkungen. Um NUnit herunterzuladen und mehr darüber zu erfahren, klicken Sie bitte auf den folgenden Link.
Download-Link: NUnit
# 8) CppUnit
CppUnit ist ein in C ++ geschriebenes Unit-Testing-Framework und wird als Port von JUnit angesehen. Die Testausgabe für CppUnit kann entweder im XML- oder im Textformat vorliegen. Es erstellt Komponententests mit einer eigenen Klasse und führt Tests in den Testsuiten durch. Es ist unter LGPL lizenziert. Um CppUnit herunterzuladen und mehr darüber zu erfahren, klicken Sie bitte auf den folgenden Link.
Download-Link: CppUnit
# 9) JUnit
JUnit ist ein leises, einfaches Unit-Test-Framework, das die Testautomatisierung in Java Programming Language unterstützt. Es unterstützt hauptsächlich die testgetriebene Entwicklung und bietet auch den Testabdeckungsbericht. Es ist unter der Eclipse Public License lizenziert. Zum kostenlosen Download und um mehr über JUnit zu erfahren, klicken Sie bitte auf den folgenden Link.
Download-Link: JUnit
# 10) JsUnit
JsUnit wird als Port von JUnit zu Javascript angesehen. Und es ist ein Open-Source-Framework für Unit-Tests zur Unterstützung von clientseitigem Javascript. Es ist unter der GNU Public License 2.0, der GNU Lesser Public License 2.1 und der Mozilla Public License 1.1 lizenziert. Um JsUnit herunterzuladen und mehr darüber zu erfahren, klicken Sie bitte auf den folgenden Link.
Download-Link: JsUnit
Überprüfen Sie auch alle Tools, die wir unter aufgelistet haben Statische Code-Analyse Hier .
Sie können gerne einfachere oder fortgeschrittenere Tools vorschlagen, die Sie für die White-Box-Technik verwenden.
Fazit
Für eine maximale Testabdeckung reicht es nicht aus, sich nur auf Black-Box-Tests zu verlassen. Wir brauchen eine Kombination aus Black-Box- und White-Box-Testtechniken maximale Mängel abdecken .
Bei richtiger Durchführung tragen White-Box-Tests sicherlich zur Softwarequalität bei. Es ist auch gut für Tester, an diesen Tests teilzunehmen, da dies die 'unvoreingenommenste' Meinung über den Code liefern kann. :) :)
Lassen Sie uns wissen, wenn Sie Fragen zu den in diesem Artikel beschriebenen Methoden haben.
Literatur-Empfehlungen
- Hauptunterschiede zwischen Black-Box-Tests und White-Box-Tests
- Black Box Testing: Ein ausführliches Tutorial mit Beispielen und Techniken
- Funktionstests gegen nichtfunktionale Tests
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- Beim Testen von Software über den Tellerrand hinaus denken!
- Portability Testing Guide mit praktischen Beispielen
- Alpha-Tests und Beta-Tests (eine vollständige Anleitung)
- Arten von Softwaretests: Verschiedene Testtypen mit Details