Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

heise conferences GmbH

(vormals SIGS DATACOM GmbH)

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

Editorial JavaSPEKTRUM 6/25: Die Kunst des Testens – zwischen Anspruch und Wirklichkeit

Author Image
Michael Stal

Chefredakteur von JavaSPEKTRUM


  • 20.11.2025
  • Lesezeit: 5 Minuten
  • 82 Views

Laut der reinen Lehre sollten Entwickler Tests noch vor der Implementierung verfassen, um anhand dieser Spezifikation funktionierenden Code zu entwickeln. Ebenso müssten Architekten Integrations- und Systemtests entwerfen, bevor sie das System überhaupt implementieren. Ganz abgesehen davon wäre es überaus nützlich, eine Teststrategie zu definieren, anhand der sich die besonders kritischen Komponenten, Use Cases und die anderen Artefakte eruieren lassen, denen ein größerer Teil des Testbudgets zur Verfügung stehen sollte. Test-Driven Development, Behavior-Driven Development und andere methodische Ansätze versprechen nicht nur besseren Code, sondern auch ein tieferes Verständnis der fachlichen Anforderungen.

Nur Qualität kann überzeugen

Die Realität in unseren Projekten sieht jedoch oft anders aus. Leider gehört das Schreiben von Tests zu den weniger beliebten Verantwortlichkeiten, da es vermeintlich nicht zu den Features beiträgt. Was natürlich in der Praxis eine trügerische Annahme darstellt, weil am Ende die Qualität eines Systems eine herausragende Bedeutung besitzt – speziell bei den Systemanwendern. Ein System mag noch so viele innovative Funktionen bieten – wenn es instabil läuft, machen Anwender einen großen Bogen darum. Und in Zeiten von Social Media verbreitet sich der Ruf schlechter Software schneller als je zuvor.

Trotzdem finden sich immer wieder Code-Repositories, die aus Perspektive von Unittests wie ein Flickenteppich wirken. Hier ein bisschen Tests, dort schon mehr, da drüben fast keine. Das erinnert mich an den Witz vom Mann, der viele Bündel Geld erhält, das erste Bündel zählt und dann anmerkt: „Bis hierher stimmt's. Dann wird der Rest auch stimmen.“

Eine ungenügende Testabdeckung gleicht einem Blindflug durch unbekanntes Terrain bei Nacht und Nebel. Würden die dafür verantwortlichen Entwickler auch in ein ebenso „getestetes“ Flugzeug steigen? Vermutlich nicht – aber beim eigenen Code scheint diese Risikobereitschaft deutlich ausgeprägter zu sein. Interessanterweise sind es oft dieselben Entwickler, die sich über Bugs in fremder Software beschweren, während sie ihre eigenen Anwendungen nur sporadisch testen. Die Ausrede „Dafür haben wir keine Zeit“ hört man häufig – dabei kostet das Beheben von Produktionsfehlern ein Vielfaches der Zeit, die man für ordentliche Tests aufwenden würde.

Testen als Handwerkskunst

Testen ist weit mehr als eine lästige Pflichtübung. Es ist Handwerkskunst, die Disziplin, Sorgfalt und ein tiefes Verständnis für die Materie erfordert. Auch Testen unterliegt Qualitätsansprüchen. Wer Grenzfälle nicht abdeckt, manche End-to-End-Szenarien einfach ignoriert oder fehlerhafte Tests abliefert, braucht sich nicht zu wundern, dass er auf die Nase fällt.

Schlimmer noch: Schlechte Tests wiegen in falscher Sicherheit und können mehr Schaden anrichten als gar keine Tests. Ein grüner Build bedeutet eben nicht automatisch, dass alles funktioniert – er bedeutet nur, dass die Tests bestanden wurden. Und wenn diese Tests die falschen Dinge prüfen oder wichtige Szenarien auslassen, ist diese Sicherheit trügerisch. Tests, die bei jeder kleinen Änderung brechen, ohne dass tatsächlich ein Defekt vorliegt, verlieren schnell an Glaubwürdigkeit.

Entwickler können sich auch nicht darauf berufen, es gebe zu wenige Testwerkzeuge für Java – denn genau das Gegenteil ist der Fall. Die Java-Welt bietet eine beeindruckende Vielfalt an Frameworks und Tools, von JUnit über Mockito bis hin zu modernen Lösungen für Integrations- und Performance-Tests. Testcontainer ermöglichen realitätsnahe Integrationstests mit echten Datenbanken und Messaging-Systemen, ArchUnit prüft Architekturregeln automatisiert und Tools wie Cucumber bringen fachliche Stakeholder ins Spiel. AssertJ macht Assertions lesbarer, Awaitility hilft bei asynchronen Tests, und JMH ermöglicht präzise Performance-Messungen. Die Werkzeugkiste ist prall gefüllt – es liegt an uns, sie sinnvoll einzusetzen und die richtigen Tools für die jeweilige Aufgabe zu wählen.

Ohne Tests keine Innovation

In dieser Ausgabe von JavaSPEKTRUM widmen wir uns genau diesem spannenden und vielschichtigen Thema. Unsere Autoren beleuchten verschiedene Facetten des Testens: von bewährten Praktiken über innovative Ansätze bis hin zu konkreten Werkzeugen, die Ihren Entwickleralltag erleichtern. Sie erfahren, wie Sie eine durchdachte Teststrategie entwickeln, welche Testarten in welchen Situationen sinnvoll sind und wie Sie die Balance zwischen Testaufwand und Nutzen finden. Wir zeigen Ihnen, wie modernes Testen aussieht, wie Sie Ihre Teams für dieses wichtige Thema begeistern können und wie Sie eine Testkultur etablieren, die Qualität nicht als Bremse, sondern als Enabler versteht.

Denn eines ist klar: Gute Tests sind eine Investition in die Zukunft Ihrer Software. Sie ermöglichen Refactoring, erleichtern die Wartung und schaffen Vertrauen – bei Entwicklern wie bei Anwendern. Sie sind das Sicherheitsnetz, das uns erlaubt, innovativ zu sein, ohne ständig Angst vor Regressionen haben zu müssen. Sie dokumentieren das erwartete Verhalten und machen Systeme verständlicher für neue Teammitglieder. In diesem Sinne wünsche ich Ihnen eine erkenntnisreiche Lektüre und viel Erfolg beim Testen Ihrer Java-Anwendungen!

Ihr Prof. Dr. Michael Stal

-> zur Ausgabe

. . .

Author Image

Michael Stal

Chefredakteur von JavaSPEKTRUM
Zu Inhalten

Prof. Dr. Michael Stal beschäftigt sich bei der Corporate Technology der Siemens AG mit Software- und Systemarchitekturen, Digitalisierung und KI. An der University of Groningen hält er Vorlesungen und betreut Doktoranden. Außerdem ist er Chefredakteur von JavaSPEKTRUM.


Artikel teilen