Unit Testing - Software Testing Fundamentals
Unit-Tests Fundamentals
Unit Testing ist ein Niveau der Software-Tests, wo einzelne Einheiten / Komponenten eines Software getestet werden. Der Zweck ist, zu bestätigen, dass jede Einheit der Software wie vorgesehen durchführt.

Einheit Test-Frameworks, Treiber, Stubs und Mock / gefälschte Objekte werden verwendet, Unit-Tests zu unterstützen.
Definition von ISTQB
- Unit-Tests: Siehe Bauteilprüfung.
- Bauteilprüfung: Die Prüfung der einzelnen Software-Komponenten.
Unit Testing wird unter Verwendung der White-Box-Testverfahren durchgeführt.
Wenn sie durchgeführt?
Unit Testing ist die erste Stufe der Prüfung und wird vor dem Integrationstest durchgeführt.
- Unit-Tests erhöht das Vertrauen bei der Änderung / Aufrechterhaltung Code. Wenn gute Unit-Tests geschrieben werden, und wenn sie jedes Mal, jeder Code geändert wird ausgeführt werden, werden wir in der Lage sein, unverzüglich alle Mängel aufgrund der Änderung eingeführt zu fangen. Außerdem werden, wenn Codes bereits weniger voneinander abhängig gemacht Unit-Tests möglich zu machen, die unbeabsichtigten Auswirkungen von Änderungen an beliebigem Code sind geringer.
- Codes sind wiederverwendbar. Um Unit-Tests möglich zu machen, müssen Codes modular sein. Dies bedeutet, dass Codes sind leichter wiederzuverwenden.
- Entwicklung ist schneller. Wie? Wenn Sie nicht Unit-Tests an Ort und Stelle haben, schreiben Sie Ihren Code und ausführen, die Fuzzy ‚Entwickler-Test‘ (Sie einige Haltepunkte setzen, die GUI anwerfen, ein paar Eingänge bereitzustellen, die hoffentlich Ihr Code treffen und hoffen, dass Sie alle gesetzt sind. Wenn Sie Unit-Tests an Ort und Stelle) haben, schreiben Sie den Test, den Code schreiben und den Test ausführen. Schreiben von Tests braucht Zeit, aber die Zeit wird durch die weniger Zeit kompensiert sie die Tests laufen dauert; Sie müssen nicht die GUI Feuer und alle diese Eingänge zur Verfügung stellen. Und natürlich sind Unit-Tests zuverlässiger als ‚Entwicklertests. Die Entwicklung ist auch auf lange Sicht schneller. Wie? Der Aufwand zu finden und zu beheben Defekte während Unit-Tests gefunden ist sehr weniger im Vergleich zum Aufwand Mangel während des Systemtest oder die Abnahmeprüfung gefunden zu beheben.
- Die Kosten für einen Defekt beim Komponententest nachgewiesen Fixierung ist kleiner im Vergleich zu den auf dem höheren Ebenen detektierten Defekte. Vergleichen Sie die Kosten (Zeit, Mühe, Zerstörung, Erniedrigung) eines Mangels bei der Abnahme festgestellt oder wenn die Software unter Spannung steht.
- Debugging ist einfach. Wenn ein Test fehlschlägt, müssen nur die neuesten Änderungen zu debug werden. Bei Tests auf höheren Ebenen wurden Änderungen über den Zeitraum von mehreren Tagen / Wochen / Monaten müssen gescannt werden.
- Codes sind zuverlässiger. Warum? Ich denke, dass es keine Notwendigkeit, dies zu einer gesunden Person zu erklären.
- Suchen Sie ein Werkzeug / Rahmen für Ihre Sprache.
- Nicht Testfälle für alles schaffen. Stattdessen konzentrieren sich auf die Tests, die das Verhalten des Systems auswirken.
- Isolieren Sie die Entwicklungsumgebung von der Testumgebung.
- Verwenden Sie Daten-Test, die der Produktion in der Nähe ist.
- Bevor Sie einen Defekt Festsetzung schreiben einen Test, den Mangel aussetzt. Warum? Zunächst werden Sie später in der Lage sein, den Fehler zu fangen, wenn Sie es nicht richtig beheben. Zweitens ist Ihre Testsuite nun ausführlicher. Drittens werden Sie wahrscheinlich zu faul sein, um den Test zu schreiben, nachdem Sie bereits den Mangel behoben haben.
- Schreiben von Testfällen, die unabhängig voneinander sind. Zum Beispiel, wenn eine Klasse hängt von einer Datenbank, keinen Fall schreiben, die mit der Datenbank interagiert, die Klasse zu testen. Stattdessen eine abstrakte Schnittstelle um diese Datenbankverbindung erstellen und diese Schnittstelle mit Mock-Objekt implementieren.
- Ziel, alle Pfade durch das Objekt in der Abdeckung. Achten Sie besonders auf Schleifenbedingungen.
- Stellen Sie sicher, dass Sie ein Versionskontrollsystem werden mit Hilfe von Skripten, um zu verfolgen Ihre Tests.
- Zusätzlich Fälle Schreiben, das Verhalten zu überprüfen, schreiben Fälle Leistung des Codes zu gewährleisten.
- Führen Unit-Tests kontinuierlich und häufig.
Lässt Sie sagen, bestehend aus zwei Einheiten ein Programm haben, und der einzige Test, den Sie durchführen ist Systemtests. [Sie überspringen Modul- und Integrationstests.] Während des Tests Sie einen Fehler finden. Nun, wie finden Sie die Ursache des Problems ermitteln?
- Ist der Fehler aufgrund eines Fehlers in der Einheit 1?
- Ist der Fehler aufgrund eines Fehlers in der Einheit 2?
- Ist der Fehler aufgrund von Fehlern in den beiden Einheiten?
- Ist der Fehler aufgrund eines Fehlers in der Schnittstelle zwischen den Einheiten?
- Ist der Fehler aufgrund eines Fehlers im Test oder Testfall?
Unit-Tests werden oft vernachlässigt, aber es ist in der Tat der wichtigsten Ebene der Prüfung.