Blog

5 Wege zu kontinuierlich verbesserten Tests

Lennart Tange

Lennart Tange

Aktualisiert Oktober 16, 2025
6 Minuten

In vielen Unternehmen hinken die automatisierten Tests hinterher und werden zu einem Engpass für eine erfolgreiche kontinuierliche Bereitstellung. Entweder bieten die Tests nicht genügend Sicherheit oder die Unternehmen verfolgen einen sehr traditionellen Ansatz, was dazu führt, dass die Releases entweder erhebliche Risiken mit sich bringen oder sehr kostspielig werden. Diese Situationen scheinen oft schwer zu beheben zu sein und "Fix Testing" wird zu einem schmerzhaften Epos irgendwo in Ihrem Backlog.
Dieser Artikel hilft Ihnen, Ihre automatisierten Tests in Frage zu stellen und sie kontinuierlich zu verbessern.

Die Testautomatisierung ist eine der Praktiken, die den Teams helfen, früher im Entwicklungsprozess Vertrauen zu gewinnen. Sie senkt die Kosten für das Testen und unterstützt die Aufrechterhaltung einer langfristigen, hohen Entwicklungsgeschwindigkeit. Testautomatisierung ist kein Projekt oder eine einmalige Sache - sie ist Teil des Entwicklungslebenszyklus und sollte als eigenes System betrachtet werden, das sich im Laufe der Zeit weiterentwickeln muss, wenn sich die Anforderungen und das zu testende System ändern und reifen.

Voraussetzungen

Um mit der Verbesserung zu beginnen, muss das Team eine Basis und eine Vereinbarung haben. Es ist in Ordnung, einfach anzufangen und nicht zu viel nachzudenken, aber diese beiden Dinge sind entscheidend:

  • Führen Sie Tests durch - einige Tests sind besser als keine Tests, da sie einen Feedback-Mechanismus für Verbesserungen bieten.
  • Definition von Erledigt - ein Team muss sich darauf einigen, dass die Ausführung dieser Tests Teil der Bereitstellung von Änderungen ist und dass bei Codeänderungen neue Tests hinzugefügt werden sollten. Dies führt dazu, dass eine stetig wachsende Anzahl von Tests Teil des Entwicklungszyklus wird. Wenn dies nicht allgemein als Teil von "Fertig" akzeptiert wird, könnten Sie feststellen, dass automatisierte Testfälle zu einem Ding am unteren Ende Ihres Backlogs werden, das schwer zu planen oder zu budgetieren ist.

Wenn Sie Tests schreiben, sollten Sie sich an die F.I.R.S.T.-Prinzipien für Tests halten (bekannt geworden durch das Buch Clean Code von Robert C. Martin). Diese Prinzipien besagen, dass unsere Tests sein sollten:

  • Schnell
  • Unabhängig
  • Wiederholbar
  • Selbstbestätigung
  • Gründlich

"Unabhängig" ist ein besonders häufiger Fallstrick - es ist sehr verlockend, Tests vom Programmzustand, seiner Umgebung oder von anderen Tests abhängig zu machen. Auf lange Sicht führt dies zu Tests, die schwer zu pflegen und zu verstehen sind.

5 Wege zur Verbesserung

Wenn wir die Grundlage für unsere automatisierten Tests haben, können wir uns selbst ständig herausfordern, uns zu verbessern. Wenn die Anzahl der Tests wächst oder sich andere Parameter ändern, haben Sie vielleicht das Gefühl, dass Ihr derzeitiger Ansatz nicht mehr gut genug skaliert (z.B. weil er langsam, teuer oder schwer zu verstehen ist). Diese 5 Möglichkeiten sollten Ihnen helfen, Ihre derzeitigen Tests zu hinterfragen und Möglichkeiten zu erkennen, wie Sie den Durchsatz Ihres Teams langfristig sichern können.

  1. Tests früher ausführen

Im Idealfall möchten Sie, dass Ihre Tests gleichzeitig mit der Änderung ein Feedback geben. Aus Sicht der Entwickler sollten die Tests lokal und schnell ausgeführt werden können. Aus der Sicht des Prozesses sollten Sie sicherstellen, dass die Tests ausgeführt werden, bevor der Code zusammengeführt wird. Dies ist der einfachste Weg, um einen Fehler mit einer Codeänderung in Verbindung zu bringen und gleichzeitig den Hauptzweig stabil (und freigebbar) zu halten. Auslieferungspipelines und Quellcode-Verwaltungssysteme helfen dabei - so können Sie beispielsweise Pull-Anfragen auf einen fehlgeschlagenen Test abweisen.

  1. Deckung erhöhen

Eine Möglichkeit, das Vertrauen in Ihre Tests zu erhöhen, besteht darin, mehr davon durchzuführen. Wenn beispielsweise Regressionen häufig bei derselben Funktionalität oder Komponente auftreten, könnte es sich lohnen, mehr in diesen Bereich zu investieren, wenn es um die Testabdeckung geht. Denken Sie daran, dass Tests nicht umsonst sind (Schreibzeit, Ausführungszeit, Wartung). Stellen Sie also sicher, dass der Aufwand in einem realistischen Verhältnis zum Risiko steht.

  1. Verbessern Sie die Testbarkeit

Dies ist oft die schwierigste, aber auch die lohnendste Aufgabe. Wenn Sie Ihr zu testendes System so verbessern, dass es zu mehr Tests einlädt, wird das Testen auf verschiedene Weise einfacher. Sie könnten zum Beispiel einen wichtigen Teil umstrukturieren, so dass er (oder ein Teil davon) isoliert getestet werden kann. Gleichzeitig wird durch die Verbesserung der Einsatzfähigkeit die Durchführung von Tests einfacher. A. Tarlinder sagt in seinem Buch "Developer Testing" viel über Testbarkeit und gibt gute Einblicke, worauf Sie achten sollten.

Testbarkeit durch Entwicklertests

 

  1. Tests auf unterer Ebene

Wenn sich Ihre Tests nicht mehr skalieren lassen, können Teile in Tests extrahiert werden, die sich auf einen kleineren Teil Ihrer Anwendung konzentrieren. Wie weit dies möglich ist, hängt von der Testbarkeit des Systems ab. Wenn die Personen, die für die Tests zuständig sind, nicht über den Code verfügen, brauchen sie eine sehr gute Kommunikation mit denjenigen, die für die Tests zuständig sind. Wenn Sie sich in einer Situation befinden, in der nur ein Teil Ihres Teams für automatisierte Tests zuständig ist, z. B. die QA-Abteilung, ist das Testen im Schichtbetrieb sinnvoll.

  1. Schreiben Sie Tests früher

Obwohl das Testen ein Teil von 'Done' ist, kann es immer noch als ein nachträglicher, letzter Schritt angesehen werden. Das kann zu Problemen mit der Testbarkeit führen, die das Testen erschweren, und dazu, dass die Tests enger an die Implementierung gekoppelt werden. Wenn Sie Tests früher schreiben, finden Sie bessere Möglichkeiten, die Testbarkeit zu berücksichtigen.

Fazit

Testautomatisierung ist der Schlüssel zu einer langfristigen, hohen Entwicklungsgeschwindigkeit. Sie ist jedoch nicht etwas, das Sie einfach nur implementieren. Sie sollte ein zentraler Bestandteil des Entwicklungszyklus werden und große Test-Epen in Ihrem Backlog verhindern. Auf Ihrem Weg werden Sie die Möglichkeit haben, sich zu verbessern:

  • Früheres Ausführen von Tests für schnelleres Feedback
  • Erweitern Sie die Abdeckung auf alle relevanten Anwendungsfälle
  • Verbessern Sie die Testbarkeit, um sowohl die Tests als auch das System besser wartbar zu machen.
  • Testen Sie auf einer niedrigeren Ebene für besser skalierbare Tests
  • Schreiben Sie Tests früher, damit sie wirklich Teil Ihrer User Story werden

Wenn wir noch einen Schritt weiter gehen und die Testautomatisierung nicht nur als Werkzeug zur Validierung unserer Arbeit betrachten, sondern als eine Möglichkeit, selbsttestenden Code zu schreiben, kommen wir zu Praktiken wie der testgetriebenen Entwicklung (TDD). Wie Dave Farley und Arjan Molenaar schrieben: "Bei TDD geht es nicht darum, Unit-Tests zu schreiben". Vielmehr ist es ein Design-Tool, das zu testbaren Designs mit gründlich getesteten Codes führt. Bei TDD werden die Tests in einem sehr frühen Stadium (vor dem Schreiben des Codes) geschrieben. Da der Rückkopplungszyklus zwischen dem Schreiben des Codes und der Tests so kurz ist, besteht ein natürlicherer Anreiz, die Tests schnell durchzuführen.

Wenn Ihnen also die Vorstellung, Ihre Testautomatisierung ganz bewusst und kontinuierlich verbessern zu müssen, Angst macht, ist die testgetriebene Entwicklung vielleicht genau das Richtige für Sie.

Verfasst von

Lennart Tange

Contact

Let’s discuss how we can support your journey.