Definition

Unit-Test

Unit-Test, auch Modultest oder Komponententest, ist ein Softwareentwicklungsprozess, bei dem die kleinsten prüfbaren Teile oder Einheiten  einer Anwendung, die so genannten Units, einzeln und unabhängig voneinander auf ihren ordnungsgemäßen Betrieb hin untersucht werden.

Diese Testmethodik wird während des Entwicklungsprozesses von den Softwareentwicklern und manchmal auch von Mitarbeitern der Qualitätssicherung (Quality Assurance, QA) durchgeführt. Das Hauptziel von Unit-Tests besteht darin, den zu testenden Code zu isolieren und festzustellen, ob er wie beabsichtigt funktioniert.

Unit-Tests sind ein wichtiger Schritt im Entwicklungsprozess, denn wenn sie korrekt durchgeführt werden, können sie dazu beitragen, frühzeitig Fehler im Code aufzudecken, die in späteren Testphasen möglicherweise schwieriger zu finden sind.

Unit Testing ist ein Bereich der testgetriebenen Entwicklung (Test-driven Development, TDD), einer Methodik, die einen sorgfältigen Ansatz zur Erstellung eines Produkts durch kontinuierliches Testen und Überarbeiten verfolgt. Diese Testmethode ist auch die erste Stufe des Softwaretestens, die vor anderen Testmethoden wie Integrationstests durchgeführt wird. Unit-Tests werden typischerweise isoliert gemacht, um sicherzustellen, dass sich eine Unit nicht auf externen Code oder Funktionen stützt. Das Testen kann manuell durchgeführt werden, ist aber oft automatisiert.

Wie Unit-Tests funktionieren

Ein Unit-Test besteht typischerweise aus drei Stufen: Planung, Testfälle und Skripting sowie dem Unit-Test selbst. Im ersten Schritt wird der Unit-Test vorbereitet und überprüft. Im nächsten Schritt werden die Testfälle und Skripte erstellt, dann wird der Code getestet.

Die testgetriebene Entwicklung erfordert, dass Entwickler zunächst fehlgeschlagene Unit-Tests schreiben. Dann schreiben sie Code und refaktorisieren die Anwendung, bis der Test bestanden ist. TDD führt in der Regel zu einer expliziten und vorhersehbaren Codebasis.

Jeder Testfall wird unabhängig in einer isolierten Umgebung getestet, um sicherzustellen, dass keine Abhängigkeiten im Code bestehen. Der Softwareentwickler sollte Kriterien zur Verifizierung jedes Testfalls codieren, und ein Test-Framework kann verwendet werden, um alle fehlgeschlagenen Tests zu melden.

Entwickler sollten nicht jede Codezeile testen, da dies zu viel Zeit in Anspruch nimmt. Die Entwickler sollten Tests erstellen, die sich auf Code konzentrieren, der das Verhalten der zu entwickelnden Software beeinflussen könnte.

Unit-Tests umfassen nur solche Merkmale, die für die Leistung der zu testenden Unit entscheidend sind. Dies ermutigt die Entwickler, den Quellcode zu modifizieren, ohne sich unmittelbar Gedanken darüber machen zu müssen, wie sich solche Änderungen auf das Funktionieren anderer Einheiten oder des Programms als Ganzes auswirken könnten.

Nachdem festgestellt wurde, dass alle Units in einem Programm so effizient und fehlerfrei wie möglich arbeiten, können größere Komponenten des Programms mit Unterstützung von Integrationstests evaluiert werden. Unit-Tests sollten häufig erfolgen. Sie lassen sich manuell oder automatisiert ausführen.

Arten von Unit-Tests

Unit-Tests können manuell oder automatisiert ablaufen. Diejenigen, die eine manuelle Methode anwenden, können ein Dokument anfertigen lassen, in dem jeder Schritt im Prozess detailliert beschrieben wird.

Automatisierte Tests sind jedoch die gebräuchlichere Methode für Unit-Tests. Bei automatisierten Ansätzen wird üblicherweise ein Test-Framework zur Entwicklung von Testfällen verwendet. Diese Frameworks sind so eingestellt, dass sie alle fehlgeschlagenen Testfälle kennzeichnen und melden und gleichzeitig eine Zusammenfassung der Testfälle liefern.

Vor- und Nachteile von Unit-Tests

Zu den Vorteilen von Unit-Tests gehören:

  • Je früher ein Problem erkannt wird, desto weniger zusammengesetzte Fehler treten auf.
  • Die Kosten für die frühzeitige Behebung eines Problems können die Kosten für die spätere Behebung schnell aufwiegen.
  • Debugging-Prozesse werden erleichtert.
  • Entwickler können schnell Änderungen an der Codebasis vornehmen.
  • Entwickler können auch Code wiederverwenden und ihn in neue Projekte migrieren.

Zu den Nachteilen gehören:

  • Tests decken nicht jeden Fehler auf.
  • Unit-Tests testen nur Datensätze und deren Funktionalität – es werden keine Fehler bei der Integration entdeckt.
  • Möglicherweise müssen mehr Zeilen Testcode geschrieben werden, um eine Zeile Code zu testen – was eine potenzielle Zeitinvestition darstellt.
  • Unit-Tests können eine steile Lernkurve haben, da man zum Beispiel lernen muss, wie man bestimmte automatisierte Tools benutzt.
Diese Definition wurde zuletzt im Oktober 2020 aktualisiert

Erfahren Sie mehr über Business-Software

ComputerWeekly.de
Close