Wann sich Testautomatisierung rechnet und wann sie Geld verbrennt
Die Kosten stehen nicht in der Erstellung, sondern in der Pflege. Wer das einpreist, automatisiert weniger Fälle und hat am Ende mehr davon.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Automatisierung wird als Werkzeugkauf entschieden und als Dauerlast bezahlt
Der übliche Einstieg: Die manuelle Regression vor jeder Auslieferung frisst drei Tage, jemand rechnet vor, dass sich das automatisieren lässt, und ein halbes Jahr später existieren zweihundert Tests. Danach beginnt der Teil, den die Rechnung nicht enthielt. Die Oberfläche wird umgebaut, achtzig Tests schlagen fehl, und die Person, die sie geschrieben hat, ist inzwischen in einem anderen Projekt. Ab hier kostet die Suite jeden Monat Zeit, ohne dass jemand diese Zeit geplant hätte.
Der zweite Fehler liegt im Zuschnitt. Automatisiert wird, was sich manuell am unangenehmsten anfühlt, und das ist fast immer ein langer Ablauf über die Oberfläche. Genau diese Tests sind aber die teuersten in der Wartung, die langsamsten in der Ausführung und die unzuverlässigsten im Ergebnis. Dieselbe fachliche Prüfung eine Ebene tiefer, direkt gegen die Schnittstelle, kostet einen Bruchteil und hält Jahre.
Der dritte Punkt ist der stille Wertverlust. Sobald eine Suite regelmäßig ohne Codeänderung rot wird, gewöhnt sich das Team an, den Lauf zu wiederholen. Von da an ist Rot keine Information mehr, sondern ein Geräusch. Die Suite läuft weiter, kostet weiter Rechenzeit und Aufmerksamkeit und schützt niemanden mehr. Das ist der teuerste Zustand von allen, weil er sich anfühlt, als wäre alles in Ordnung.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Wer entscheidet, wer umsetzt
An der Technik scheitert selten ein Automatisierungsvorhaben. Es scheitert daran, dass niemand benannt ist, wenn die Suite Pflege braucht. Diese sechs Zeilen decken die Fälle ab, die in einem echten Projekt auflaufen.
| Thema | Wer entscheidet | Wer setzt um | Stolperfalle |
|---|---|---|---|
| Welche Fälle überhaupt automatisiert werden | Die Testleitung zusammen mit der technischen Leitung, entlang der Kriterien Häufigkeit, Änderungsrate und Ebene | Wer den Testfall schreibt, mit einer kurzen Begründung im selben Pull Request | Automatisiert wird, was manuell am lästigsten war, und das ist fast immer der lange Weg über die Oberfläche. |
| Besitz und Pflege der Testsuite | Die Bereichsleitung beim Zuschnitt der Teams, nicht das Team im Nachhinein | Das Entwicklungsteam, indem Testcode dieselbe Behandlung bekommt wie Produktivcode, also Review, Versionsverwaltung und Aufräumzeit | Die Suite gehört einer getrennten Automatisierungsgruppe, und die Entwicklung erfährt von einem Bruch erst, wenn er im Bericht steht. |
| Reaktion auf einen roten Lauf | Vorab als Regel festgelegt, nicht im Einzelfall diskutiert | Wer die Änderung eingebracht hat, innerhalb einer vereinbarten Frist, notfalls durch Zurücknehmen der Änderung | Der Lauf wird wiederholt, bis er grün ist, und ab da ist Rot keine Information mehr. |
| Testdaten und Testumgebungen | Die technische Leitung gemeinsam mit dem Datenschutz, weil echte Daten in Testumgebungen eine Rechtsfrage sind | Das Team über einen automatisierten Aufbau der Umgebung samt Ausgangsdaten | Die Daten werden einmalig eingespielt und wachsen danach, bis niemand mehr weiß, welcher Zustand eigentlich der erwartete ist. |
| Auswahl von Werkzeug und Framework | Die technische Leitung anhand einer schriftlichen Kriterienliste, damit die Wahl nicht von der Vorliebe einer Person abhängt | Das Team mit einem zeitlich begrenzten Vorlauf an einem echten Ausschnitt, nicht an einem Demobeispiel | Entschieden wird nach der Sprache der Anwendung statt nach der Sprache derer, die die Tests später pflegen. |
| Aufräumen und Stilllegen alter Tests | Das Team, aber mit einem festen Termin, sonst passiert es nie | Wer die Suite besitzt, mit einer regelmäßigen Durchsicht auf doppelte, nie fehlschlagende und dauerhaft übersprungene Tests | Tests werden nur ergänzt. Nach drei Jahren dauert der Lauf vierzig Minuten, und ein Drittel davon prüft nichts mehr. |
Welche Fälle überhaupt automatisiert werden
- Wer entscheidet
- Die Testleitung zusammen mit der technischen Leitung, entlang der Kriterien Häufigkeit, Änderungsrate und Ebene
- Wer setzt um
- Wer den Testfall schreibt, mit einer kurzen Begründung im selben Pull Request
- Stolperfalle
- Automatisiert wird, was manuell am lästigsten war, und das ist fast immer der lange Weg über die Oberfläche.
Besitz und Pflege der Testsuite
- Wer entscheidet
- Die Bereichsleitung beim Zuschnitt der Teams, nicht das Team im Nachhinein
- Wer setzt um
- Das Entwicklungsteam, indem Testcode dieselbe Behandlung bekommt wie Produktivcode, also Review, Versionsverwaltung und Aufräumzeit
- Stolperfalle
- Die Suite gehört einer getrennten Automatisierungsgruppe, und die Entwicklung erfährt von einem Bruch erst, wenn er im Bericht steht.
Reaktion auf einen roten Lauf
- Wer entscheidet
- Vorab als Regel festgelegt, nicht im Einzelfall diskutiert
- Wer setzt um
- Wer die Änderung eingebracht hat, innerhalb einer vereinbarten Frist, notfalls durch Zurücknehmen der Änderung
- Stolperfalle
- Der Lauf wird wiederholt, bis er grün ist, und ab da ist Rot keine Information mehr.
Testdaten und Testumgebungen
- Wer entscheidet
- Die technische Leitung gemeinsam mit dem Datenschutz, weil echte Daten in Testumgebungen eine Rechtsfrage sind
- Wer setzt um
- Das Team über einen automatisierten Aufbau der Umgebung samt Ausgangsdaten
- Stolperfalle
- Die Daten werden einmalig eingespielt und wachsen danach, bis niemand mehr weiß, welcher Zustand eigentlich der erwartete ist.
Auswahl von Werkzeug und Framework
- Wer entscheidet
- Die technische Leitung anhand einer schriftlichen Kriterienliste, damit die Wahl nicht von der Vorliebe einer Person abhängt
- Wer setzt um
- Das Team mit einem zeitlich begrenzten Vorlauf an einem echten Ausschnitt, nicht an einem Demobeispiel
- Stolperfalle
- Entschieden wird nach der Sprache der Anwendung statt nach der Sprache derer, die die Tests später pflegen.
Aufräumen und Stilllegen alter Tests
- Wer entscheidet
- Das Team, aber mit einem festen Termin, sonst passiert es nie
- Wer setzt um
- Wer die Suite besitzt, mit einer regelmäßigen Durchsicht auf doppelte, nie fehlschlagende und dauerhaft übersprungene Tests
- Stolperfalle
- Tests werden nur ergänzt. Nach drei Jahren dauert der Lauf vierzig Minuten, und ein Drittel davon prüft nichts mehr.
Fünf Fragen je Kandidat, und die Entscheidung steht
- 01 Wie oft läuft dieser Test in einem Jahr? Unter zwanzig Ausführungen lohnt sich die Pflege selten.
- 02 Wie oft ändert sich die geprüfte Fachlogik? Häufige Änderung heißt: später automatisieren.
- 03 Geht dieselbe Aussage eine Ebene tiefer? Dann gehört sie dorthin und nicht auf die Oberfläche.
- 04 Ist das Ergebnis eindeutig prüfbar? Wo ein Urteil nötig ist, bleibt der Test manuell.
- 05 Gibt es definierte Testdaten und einen Weg, sie zurückzusetzen? Ohne beides entstehen instabile Läufe.
Woran ihr entscheidet, was automatisiert wird
Sechs Festlegungen, die vor dem ersten Test getroffen gehören. Sie beantworten, welche Fälle sich rechnen, auf welcher Ebene sie geprüft werden, wer die Suite besitzt und woran ihr merkt, dass sie ihren Wert verliert.
Die Ausführungshäufigkeit als ersten Faktor ansetzen
Ein Test, der bei jedem Commit läuft, sammelt in einem Jahr tausende Ausführungen. Ein Test, der nur vor einer Quartalsauslieferung gebraucht wird, kommt auf vier. Die ersparte manuelle Zeit multipliziert sich mit dieser Zahl, der Wartungsaufwand nicht. Deshalb ist die Frage nach der Häufigkeit wichtiger als die Frage nach der Dauer des manuellen Durchlaufs.
Die Änderungsrate der Fachlogik prüfen
Ein Fall, dessen erwartetes Ergebnis sich alle zwei Sprints verschiebt, muss jedes Mal nachgezogen werden. Solche Bereiche automatisiert ihr später, wenn die Fachlogik steht. Umgekehrt sind Kernabläufe, die seit Jahren gleich funktionieren und trotzdem bei jeder Änderung mitgeprüft werden müssen, die besten Kandidaten überhaupt.
Die tiefstmögliche Ebene wählen
Frag bei jedem Kandidaten, ob sich dieselbe Aussage eine Ebene tiefer treffen lässt. Eine Preisberechnung gehört in einen Unit-Test, die Antwort einer Schnittstelle in einen Schnittstellentest, und über die Oberfläche prüfst du nur, ob die Teile zusammen den Weg tragen. Diese eine Regel erklärt den größten Teil des Unterschieds zwischen einer schnellen und einer zähen Suite.
Testdaten und Umgebung vor dem ersten Test klären
Ein automatisierter Test braucht einen definierten Ausgangszustand und muss ihn hinterlassen können. Wer das nicht regelt, baut Abhängigkeiten zwischen Testfällen ein, die später als scheinbar zufällige Fehlschläge zurückkommen. Klärt vorher, woher die Daten kommen, wie sie zurückgesetzt werden und ob personenbezogene Daten überhaupt in die Testumgebung dürfen.
Eine Rückmeldezeit festlegen und verteidigen
Automatisierte Tests wirken nur, wenn ihr Ergebnis vorliegt, solange die Änderung noch im Kopf ist. Als Richtwert gilt eine Rückmeldung in unter zehn Minuten für den Lauf, der bei jeder Änderung startet. Alles, was länger dauert, gehört in einen zweiten Lauf, der seltener und asynchron läuft, aber nicht in den Weg zwischen Entwicklung und Rückmeldung.
Die Suite jemandem geben, der sie besitzt
Eine Testautomatisierung ist Software mit allen Folgen: Sie wird gelesen, umgebaut und aufgeräumt. Sie braucht deshalb eine benannte Zuständigkeit und einen Platz im Sprint, nicht nur im Testplan. Die Auswertung von DORA zeigt, dass Teams besser abschneiden, wenn die Entwicklung die automatisierten Tests selbst erstellt und pflegt, statt sie an eine getrennte Gruppe abzugeben.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Die Rechnung, die tatsächlich gilt
Auf der Kostenseite stehen drei Posten, nicht einer. Der erste ist die Erstellung, und der ist der kleinste. Der zweite ist die Wartung: jede Änderung an der Oberfläche, an der Schnittstelle oder an der Fachlogik zieht Anpassungen nach sich. Der dritte ist die Analyse von Fehlschlägen, und der wird fast immer vergessen. Ein Test, der einmal im Monat ohne echten Fehler rot wird, kostet jedes Mal die Zeit, die jemand braucht, um das festzustellen.
Auf der Nutzenseite steht die ersparte manuelle Zeit, multipliziert mit der Zahl der Ausführungen, plus ein zweiter Posten, der schwerer zu beziffern ist: die Fehler, die früher gefunden werden. Ein Fehler, der in der Pipeline auffällt, kostet eine Korrektur. Derselbe Fehler nach der Auslieferung kostet eine Meldung, eine Analyse, einen Notfalltermin und im Zweifel eine Entschuldigung beim Kunden. Diesen zweiten Posten unterschätzen Rechnungen regelmäßig genauso stark, wie sie die Wartung unterschätzen.
Daraus folgt eine unbequeme Konsequenz: Der Schwellenwert liegt höher, als die meisten annehmen. Ein Testfall, der zwanzigmal im Jahr läuft und jedes Quartal angepasst werden muss, ist kein guter Kandidat, auch wenn er sich technisch leicht automatisieren lässt. Ein Testfall, der bei jedem Commit läuft und seit zwei Jahren unverändert ist, rechnet sich schon nach wenigen Wochen.
Was zuerst automatisiert gehört
Ganz oben stehen die Kernabläufe, die bei jeder Änderung mitgeprüft werden müssen, weil ihr Ausfall das Produkt unbenutzbar macht: Anmeldung, der wichtigste fachliche Vorgang, der Abschluss einer Bestellung oder Buchung. Diese Wege ändern sich selten, laufen ständig und haben ein eindeutiges Ergebnis. Sie sind auch die Fälle, bei denen ein Fehlschlag sofort ernst genommen wird, und das ist für den Aufbau einer Kultur wichtiger als Abdeckungszahlen.
Direkt danach kommt alles, was sich rechnerisch prüfen lässt: Preisermittlung, Fristen, Berechtigungen, Umrechnungen, Formatierungen. Diese Fälle haben klare Eingaben und klare Ausgaben, sie brauchen keine Oberfläche und keine Umgebung, und ein Test dafür läuft in Millisekunden. Genau hier lassen sich Äquivalenzklassen und Grenzwerte systematisch abdecken, statt zwei Beispiele zu prüfen und zu hoffen.
Die dritte Gruppe sind Schnittstellen. Eine Prüfung gegen die API deckt fachliche Fehler ab, ohne die Oberfläche zu berühren, sie ist deutlich schneller als ein Oberflächentest und wesentlich stabiler, weil sie nicht an Gestaltung hängt. Wenn eure Anwendung eine Schnittstelle hat, ist das der Ort mit dem besten Verhältnis zwischen Aufwand und Aussagekraft.
Der Fall, den viele zuerst angehen und der eigentlich zuletzt gehört, ist der lange Weg über die Oberfläche. Er ist nicht falsch, aber er ist teuer, und er sollte auf die wenigen Wege beschränkt bleiben, die wirklich das Zusammenspiel aller Teile prüfen.
Was manuell besser aufgehoben ist
Alles, was ein Urteil verlangt, bleibt manuell. Ob eine Oberfläche verständlich ist, ob eine Fehlermeldung hilft, ob ein Ablauf sich unnötig umständlich anfühlt, das kann kein Vergleich zweier Werte beantworten. Automatisierte Prüfungen sagen dir, ob das System tut, was ihr erwartet habt. Sie sagen dir nicht, ob eure Erwartung sinnvoll war.
Ebenfalls manuell bleibt exploratives Testen. Der Wert dieser Arbeit liegt darin, dass jemand während des Testens seine Hypothesen ändert und Wege geht, die niemand vorher aufgeschrieben hat. Genau das lässt sich nicht in ein Skript gießen, denn ein Skript kann nur prüfen, was jemand vorher gedacht hat. Teams, die alles automatisieren, verlieren diese Funde und merken es erst, wenn Kunden sie stattdessen machen.
Und manuell bleibt fast alles, was einmal passiert. Eine Abnahme nach einer Migration, die Prüfung eines Zwischenstands, die einmalige Kontrolle eines Datenbestands. Dafür einen automatisierten Test zu bauen, kostet mehr, als ihn dreimal von Hand durchzuführen, und danach steht ein Test in der Suite, den niemand mehr braucht, aber auch niemand löscht.
Der Ebeneneffekt: dieselbe Aussage, sehr unterschiedliche Kosten
Google hat für die eigene Praxis lange eine Verteilung von etwa siebzig Prozent Unit-Tests, zwanzig Prozent Integrationstests und zehn Prozent Ende-zu-Ende-Tests als Orientierung veröffentlicht. Die Zahlen sind kein Naturgesetz und passen nicht auf jede Anwendung, aber die Richtung hält jeder Prüfung stand: Je weiter oben ein Test ansetzt, desto langsamer läuft er, desto mehr Ursachen kann ein Fehlschlag haben und desto mehr Umgebung muss stimmen.
Der Grund ist nicht Geschmack, sondern Kombinatorik. Ein Ende-zu-Ende-Test bindet die Oberfläche, die Anwendungslogik, die Datenbank, das Netz und meistens noch einen fremden Dienst ein. Wenn jede dieser Schichten in neunundneunzig von hundert Läufen tut, was sie soll, dann schlägt der Gesamttest trotzdem in etwa fünf von hundert Läufen aus einem Grund fehl, der nichts mit eurem Code zu tun hat. Genau diese Rechnung ist der Grund für scheinbar zufällige rote Läufe.
Die praktische Konsequenz ist ein zweistufiger Aufbau. Ein schneller Lauf bei jeder Änderung mit Unit- und Schnittstellentests, dessen Ergebnis in Minuten vorliegt, und ein zweiter, langsamerer Lauf mit den wenigen Ende-zu-Ende-Wegen, der nachts oder vor der Auslieferung startet. Wer beides in einen Lauf packt, bekommt entweder einen langsamen Lauf oder eine gestutzte Abdeckung.
Woran ihr merkt, dass die Suite ihren Wert verliert
Das erste Zeichen ist der Wiederholungsknopf. Sobald es normal ist, einen fehlgeschlagenen Lauf einfach noch einmal zu starten, hat die Suite ihre wichtigste Eigenschaft verloren, nämlich dass ein rotes Ergebnis eine Aussage ist. Ab da baut sich Gewöhnung auf, und die betrifft nicht nur die instabilen Tests, sondern auch die zuverlässigen.
Das zweite Zeichen ist die Laufzeit. Wenn niemand die Suite lokal startet, weil sie zu lange dauert, dann wandert die Rückmeldung in die Pipeline und kommt zu spät. Der Ausweg ist nicht mehr Rechenleistung, sondern eine ehrliche Durchsicht: Welche Tests prüfen dasselbe zweimal, welche laufen über die Oberfläche, obwohl sie es nicht müssten, welche sind seit zwei Jahren nie rot geworden und tragen deshalb keine Information mehr.
Das dritte Zeichen ist eine Zahl ohne Deckung. Eine hohe Codeabdeckung sagt aus, welcher Code ausgeführt wurde, nicht welches Verhalten geprüft wurde. Eine Suite, die jede Zeile durchläuft und dabei kaum Zusicherungen macht, erzeugt eine beruhigende Zahl und keine Sicherheit. Wenn eine Abdeckungsvorgabe zur Zielgröße wird, entstehen genau solche Tests, und dann arbeitet die Kennzahl gegen euch.
Dazu passende Kurse
Weil sich die Werkzeugfrage erst nach der Zuschnittfrage stellt, lohnt der Blick auf Kurse zum Aufbau einer Testautomatisierung mit dem eigenen Fallkatalog in der Hand.
Eine Suite ohne verlässliche CI/CD-Strecke bleibt ein lokales Werkzeug, deshalb gehören Kurse zu Pipelines und automatisierten Auslieferungen in dieselbe Planung.
Wie sicher bist du beim Thema wirklich?
Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.
Wo du genau das übst
Sehr umfangreicher Überblick über Zusammenhänge und Anwendungsbereiche. Sehr zu empfehlen.
Effektives, gemeinsames Erarbeiten der Aufgaben mit vielen praktischen Tipps.
Sehr guter Trainer und gute Aufbereitung der Inhalte und auch eingehen auf Fragen der Beteiligten.
Häufige Fragen
Ab welcher Zahl von Ausführungen lohnt sich ein automatisierter Test?
Sollen wir zuerst automatisieren oder zuerst unsere manuellen Tests aufräumen?
Brauchen wir dafür eine eigene Automatisierungsgruppe?
Lohnt sich Automatisierung für eine Anwendung, die bald abgelöst wird?
Wie gehen wir mit Tests um, die nur manchmal fehlschlagen?
Deine Ansprechpartner
Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Hilft dir, aus dem Programmierung-Programm den passenden Kurs für deinen Stand zu finden.
Norbert Jansen
Beratung & Inhouse
Plant mit dir Inhouse-Trainings, die auf eure Abläufe und euren Datenbestand zugeschnitten sind.
Den Zuschnitt an eurer eigenen Suite durchgehen
Ob ihr mit einem Keyword-getriebenen Rahmenwerk auf Python-Basis, mit einem Werkzeug für Oberflächentests oder mit der Architekturfrage des ISTQB-Aufbaumoduls anfangt, hängt davon ab, wo ihr steht. Alle drei Kurse gibt es bei cmt als offene Termine und als Inhouse-Variante am eigenen System.