Unit Testing: Alles, was Sie wissen müssen

Unit-Tests sind die kleinste und gleichzeitig eine der größten Arten von Softwaretests. Schauen wir uns an, warum Unit-Tests so wichtig sind und welche Techniken sie auf das nächste Level heben können.

What is Unit Testing

Die Definition von Unit-Tests ist einfach: Sie testen den kleinsten Teil Ihrer Software, der isoliert werden kann. Sie kann so klein wie eine einzige Codezeile oder so groß wie ein Modul sein. Dies ist jedoch einer der Fälle, in denen kleiner besser ist, selbst wenn man an einem Großprojekt arbeitet.

Software Unit-Tests werden in der Regel von den Entwicklern selbst durchgeführt. In der Tat haben sie nicht die Zeit oder das Fachwissen zur Qualitätssicherung, um einen angemessenen Unit-Test Plan zu erstellen. Die Entwickler jedoch kennen ihren eigenen Code besser als jeder QA-Spezialist ihn verstehen könnte. Das Testen von Code vor der Weitergabe an die Qualitätssicherung ist seit Jahren ein bewährtes Verfahren.

Vorteile von Unit-Tests

Der Zweck von Unit-Tests lässt sich nicht auf eine einzige Sache eingrenzen. Entwickler zu haben, die kleine Codeeinheiten durchgehen, hat mehrere Vorteile:

    • Verbessert das Verständnis der Codebasis durch den Entwickler. Dies ist vor allem für Neuzugänge im Team von Bedeutung. Ganz gleich, wie viel Dokumentation man neuen Entwicklern zur Verfügung stellt, Übung macht immer alles einfacher.
    • Selbständig-nachhaltig, d. h. weder die Entwickler noch die QS-Spezialisten warten darauf, dass andere ihren Code zuerst fertigstellen
    • Erleichtert gute Regressionstests oder vielmehr eine gute Nachbereitung von Regressionstests. Wenn sie ein Problem aufdecken, ist es viel einfacher, die Ursache einzugrenzen und den Fehler zu beheben, wenn kleine Teile des Codes durch individuelle Testfälle abgedeckt werden
    • Verbessert die Qualität des Codes. Die Entwickler nicht in die Tests einzubeziehen, ist in vielerlei Hinsicht fehlerhaft und dem Projekt einen besseren Code vorzuenthalten, ist einer davon. Hastiges Umschreiben und Fehlerbeheben in letzter Minute tragen zur technischen Verschuldung bei und machen die Software anfälliger für Fehler als echte Lösungen. Regelmäßiges Testen in kleinen Abschnitten erhöht die Aufmerksamkeit zum Detail und verhindert die Anhäufung von Fehlern
    • Spart Zeit und Geld. Es ist ganz einfach: Gute automatisierte Unit-Tests bedeutet, dass viele Probleme ohne menschlichen Aufwand erkannt werden. Eine einmalige Investition plus einige Wartungsarbeiten entlasten den Zeitplan von Entwicklern und Testern erheblich

Advantages of unit testing

Testen Sie ein kollaboratives ALM-Tool für Entwickler und QA

Jetzt aqua ALM ausprobieren

Unit-Testing-Techniken

Die Unit-Testing-Techniken entsprechen den allgemeinen Testtechniken.

  • Black-Box-Technik deckt das Softwareverhalten aus der Sicht der Benutzer ab: der QS-Spezialist weiß nicht, wie die Lösung konzipiert ist
  • White-Box-Technik bezieht sich auf das Testen mit dem Wissen, wie die Software entwickelt wurde, um zu funktionieren
  • Die Grey-Box-Technik stellt einen Mittelweg dar: Sie testet die benutzerseitigen Funktionen wie Black-Box-Tests, jedoch mit dem Wissen um die Architektur der Lösung

Was die Art und Weise der Durchführung von Unit-Tests betrifft, so sind sowohl manuelle als auch automatisierte Ansätze sehr erfolgreich. Genau wie bei anderen Testarten ist letzteres nur dann sinnvoll, wenn Sie wissen, warum Sie QS automatisieren. Die Rolle der Entwickler beim Unit-Testing bedeutet, dass die QS-Arbeitsbelastung für Nicht-Tester steigt, so dass eine verstärkte Automatisierung kosteneffektiver denn je sein könnte.


Interessieren Sie sich für die verschiedenen Arten von Tests?

Lesen Sie unseren Artikel über Benutzer Akzeptanz Tests Definition, Verwendung und Herausforderungen


Es kann schwierig sein, Entwickler dazu zu bringen, in Unit-Tests zu investieren. Alan Mellor, der Autor von Java OOP Done Right mit mehr als 30 Jahren Erfahrung in der Software-Engineering, beschreibt die Vorteile für Entwickler folgendermaßen:

arrow

Ein Unit-Test besteht immer aus drei Teilen: Arrangieren, Handeln, Bestätigen. Die letzten beiden sind immer Einzeiler. Sie drücken auch ein Stück Designdenken aus, mit dem Sie vertraut sein werden: Die API Ihres Codes und wie sie mit dem Aufrufer kommuniziert. Unit-Tests sind nur in der Phase des Arrangierens wirklich schwierig zu schreiben. Hier erstellen Sie den Graphen von Objekten und Anfangszuständen, die für die Durchführung des Tests benötigt werden. Wenn sich in Ihr Code Fehler eingeschlichen hat, kann dies sehr schwierig sein. Dies ist das erste Anzeichen dafür, dass Ihr Design schlecht ist.

Ein Unit-Test besteht immer aus drei Teilen: Arrangieren, Handeln, Bestätigen. Die letzten beiden sind immer Einzeiler. Sie drücken auch ein Stück Designdenken aus, mit dem Sie vertraut sein werden: Die API Ihres Codes und wie sie mit dem Aufrufer kommuniziert. Unit-Tests sind nur in der Phase des Arrangierens wirklich schwierig zu schreiben. Hier erstellen Sie den Graphen von Objekten und Anfangszuständen, die für die Durchführung des Tests benötigt werden. Wenn sich in Ihr Code Fehler eingeschlichen hat, kann dies sehr schwierig sein. Dies ist das erste Anzeichen dafür, dass Ihr Design schlecht ist. Wahrscheinlich haben Sie immer wieder Teile zusammengefügt, herumgeschrieben und zu viel auf einmal gemacht. Das tun wir alle. Die Antwort ist, diesen Teil des Codes neu zu gestalten. Teilen Sie einige Objekte so auf, dass jedes einzelne einen kleineren Teil der Arbeit erledigt. Dies verringert die Komplexität des Anordnungsschritts und auch des Produktionscodes. Wenn Sie Tests früher schreiben, verkürzen Sie den Feedback-Zyklus. Man wird sich der Unordnung früher bewusst. Außerdem bekommen Sie ein Gespür dafür, wie Sie Ihren Code von vornherein richtig aufteilen können, was auch das Testen erleichtert.

arrow
- Alan Mellor, Autor von Java OOP Done Right

Bewährte Praktiken

Hier finden Sie einige Ideen für Unit-Tests, damit Sie von den Versuchen und Fehlern anderer lernen können.

  • Wenden Sie das Protokoll „Geben/Wenn/Dann“ für die Organisation von Einheitstests an. Dieser Ansatz ist auch bekannt als Arrangieren (der Testaufbau), Handeln (auf der Unit für den Test), Bestätigen(das Ergebnis verifizieren), beschrieben von Alan Mellor
  • Halten Sie die Tests einfach. Wenn Sie zum Beispiel versuchen, alle möglichen Eingaben in einem Testfall zu berücksichtigen, haben Sie möglicherweise einen Test geschrieben, der den zu testenden Code weitgehend wiederholt.
  • Legen Sie sich eine gute Namenskonvention zurecht. Die Navigation all Ihrer Tests kann manchmal entmutigend sein, vor allem, wenn auch Entwickler an den Tests beteiligt sind. Mit der Namensgebung auf einer Wellenlänge zu sein, ist ein langer Weg

aqua tool für Unit-Tests

Testmanagementsysteme und Lösungen für das Application Lifecycle Management wie aqua werden nicht unbedingt für Unit-Tests verwendet. Die Entwickler schreiben die Tests und führen sie in einer IDE (integrierte Entwicklungsumgebung) aus, die nicht mit dem Server der Testmanagementlösung verbunden ist.

Auf der anderen Seite hilft ein Fehler-Reporting-Tool dabei, viele Konzepte zu erreichen und zu verstärken, die beim Unit-Testing angestrebt werden. Ein gutes Beispiel ist die Verfolgung der Testabdeckung. aqua bietet das schon seit Jahren, aber wir haben es nur mit einer übersichtlichen Spalte auf dem Anforderungsbildschirm visualisiert. Es gibt noch viele andere Funktionen, die die Zusammenarbeit zwischen Entwicklern und QA fördern, ähnlich wie bei den Unit-Tests.

aqua tool of unit testing

Schlussfolgerung

Unit-Tests sind ein großer Gewinn für jedes Softwareprojekt. Entwickler dazu zu bringen, ihren eigenen Code frühzeitig zu testen, hat sowohl kurz- als auch langfristige Vorteile für Ihr Unternehmen. Auch wenn Testmanagementlösungen wenig mit Unit-Tests zu tun haben, helfen sie Ihnen, die gleiche Zusammenarbeit zwischen Entwicklung und Qualitätssicherung sowie die Gründlichkeit und Prägnanz zu kultivieren, die Unit-Tests mit sich bringen.

Erreichen einer Testabdeckung von 90%+

Jetzt aqua ALM ausprobieren
Zum Thema passende Artikel

Fällt es Ihnen schwer, Ihre Qualitätssicherung mit dem Tempo und den Arbeitsabläufen Ihrer Entwicklung in…

photo
Denis Matusovskiy
17 mins read

Das Testen der Benutzeroberfläche ist wohl der wirkungsvollste Typ des Testens, jedenfalls für B2C-Unternehmen. Es…

photo
Robert Weingartz
11 mins read

In der schnelllebigen Zeit, in der wir leben, bedeuten langsame oder bröckelnde Websites und Anwendungen…

photo
Denis Matusovskiy
9 mins read