Ich schreibe Tests, um meinen Lebensunterhalt zu verdienen. Na gut, teilweise um meinen Lebensunterhalt zu verdienen. Und das schambehaftete Geheimnis des Testberufs ist, dass die meisten von uns mehr Zeit damit verbringen, alte Tests zu warten, als neue zu schreiben. Ein Button ändert seinen Namen, ein Selektor ändert sich, eine Seite wird neu gestaltet — und plötzlich scheitern 40 Tests, keiner wegen echter Bugs. Einfach weil sich die Benutzeroberfläche geändert hat.
Als die AI-Testwerkzeuge „selbstheilende Tests“ versprachen, war ich skeptisch, aber verzweifelt optimistisch. Wie ein erschöpfter Feuerwehrmann, der von einem Gebäude hört, das sich von selbst löscht.
Es stellt sich heraus, dass einige von ihnen tatsächlich ihre Versprechen halten.
Wo AI-Tests tatsächlich funktionieren
Testgenerierung mit Copilot ist die nützlichste AI-Testfunktion, die ich bisher entdeckt habe. Eine Funktion schreiben, zum Testdatei wechseln, und Copilot schlägt Testfälle vor — einschließlich Grenzfällen, an die ich nicht gedacht hätte.
Letzte Woche schlug es einen Test für eine negative Zahleneingabe bei einer Funktion vor, die ich nicht in Betracht gezogen hatte. Die Funktion stürzte mit negativen Zahlen ab. Copilot fand einen echten Bug, indem es einen Test schrieb, den ich nicht geschrieben hätte. Das ist… ziemlich großartig.
Das Problem: Copilot generiert Tests, die durchgehen, aber „durchgehen“ und „die richtige Sache testen“ sind unterschiedliche Dinge. Es neigt dazu, die Implementierung anstelle des Verhaltens zu testen — also wenn die Implementierung falsch, aber konsistent ist, wird Copilot Tests schreiben, die das falsche Verhalten validieren. Sie müssen die generierten Tests immer noch lesen und sich fragen „prüft dieser Test wirklich das, was mir wichtig ist?“
Visuelle Tests mit Applitools haben ein Problem gelöst, das mich vor Frontend-Änderungen fürchtete. Visuelle Regressionstests bedeuteten früher einen pixelgenauen Vergleich, der ständig aufgrund von Glättungsunterschieden, Rendering-Engine-Updates und dynamischen Inhalten wie Zeitstempeln oder Werbung scheiterte.
Applitools nutzt AI, um Screenshots wie ein Mensch zu vergleichen — indem es irrelevante Unterschiede ignoriert und bedeutende erfasst. Ein Datum, das sich ändert? Ignoriert. Ein Button, der sich um 50 Pixel bewegt? Gemeldet. Eine Textfarbe, die sich ändert? Gemeldet. Dynamische Werbeinhalte? Ignoriert.
Wir sind von über 30 falschen visuellen Fehlschlägen pro Version auf etwa 2 gegangen. Mein QA-Team hat aufgehört, die Überprüfung visueller Tests zu fürchten.
Selbstheilende Tests mit Testim sind das Nächste zur Magie. Die AI verfolgt mehrere Attribute jedes UI-Elements — seinen Text, seine Position, seine CSS-Klasse, die umgebenden Elemente und mehr. Wenn sich eines der Attribute ändert (wie eine umbenannte CSS-Klasse), verwendet die AI die anderen Attribute, um das Element zu identifizieren.
Vor Testim: Ein CSS-Refactoring hat 120 Tests kaputtgemacht. Nach Testim: Der gleiche Typ von Refactoring hat 3 Tests kaputtgemacht (die, bei denen das Element tatsächlich entfernt wurde, nicht nur umbenannt). Das bedeutet eine Reduzierung von 97,5 % der falschen positiven Fehlschläge. Die Stunden, die bei der Wartung der Tests eingespart werden, sind erheblich.
Die Werkzeuge, die mich enttäuscht haben
Vollständig autonome Testagenten — die versprechen „leitet sie einfach in Ihre Anwendung und sie testen alles“ — sind noch nicht angekommen. Ich habe zwei verschiedene autonome Testwerkzeuge ausprobiert. Sie haben einige Probleme bei der Basisfunktionalität gefunden, aber Grenzfälle übersehen, fragilen Tests geschrieben und falsche Positiverzeugnisse generiert, die mehr Zeit für Untersuchungen benötigten als die Probleme, die sie gefunden hatten.
Die Technologie wird es schaffen. Nur ist es heute noch nicht so weit.
Von AI generierte Integrationstests sind mittelmäßig. Unit-Tests (die einzelne Funktionen testen) sind gut für die AI-Generierung geeignet, da der Umfang klein und die Erwartungen klar sind. Integrationstests erfordern das Verständnis, wie die Komponenten interagieren, welches das erwartete Systemverhalten ist und wo sich interessante Fehlermodi befinden. Die AI hat dafür noch nicht genug Kontext.
Mein aktueller Test-Stack
Unit-Tests: Copilot generiert erste Entwürfe, ich überarbeite und passe an. Die Abdeckung ist von 45 % auf 78 % gestiegen, ohne dass zusätzliche Testzeit hinzugefügt wurde. Die Qualität der einzelnen Tests ist nicht immer perfekt, aber das Volumen gleicht das aus.
E2E-Tests: Testim für wichtige Nutzerpfade. Die Selbstheilung hält die Wartung niedrig. Wir haben mehr als 200 E2E-Tests, die in CI laufen und tatsächlich grün bleiben.
Visuelle Tests: Applitools für wichtige Seiten und Komponenten. Erkennt CSS-Regresssionen, die funktionale Tests komplett übersehen.
Manuelle Tests: Immer noch unersetzlich für explorative Tests, UX-Bewertungen und Fragen wie „Sieht das richtig aus?“ auf die keine AI noch antworten kann.
Was ich den Teams sage, die anfangen
Beginnen Sie mit Copilot für Unit-Tests. Es ist die am wenigsten anspruchsvolle und rentabelste Investition in AI-Tests. Sie schreiben bereits Code in einer IDE — die Tests kommen im Wesentlichen kostenlos dazu.
Fügen Sie dann Applitools hinzu, wenn Sie eine visuelle Anwendung haben. Die Einrichtung dauert einen Tag, und die Reduzierung falscher visueller Fehlschläge ist sofort.
Erwägen Sie Testim oder Ähnliches, wenn die Wartung von E2E-Tests viel Zeit in Anspruch nimmt. Der Wert ist proportional zur Größe Ihrer Testsuite — wenn Sie 20 E2E-Tests haben, ist die manuelle Wartung handhabbar. Wenn Sie 200+ haben, ist die Selbstheilung ein Lebensretter.
Besorgen Sie sich noch keine autonomen Testwerkzeuge. Geben Sie ihnen noch ein Jahr.
Die unbequeme Wahrheit
AI-Testwerkzeuge machen das Testen schneller und weniger schmerzhaft. Sie machen das Testen jedoch nicht nachdenklich. Der schwierige Teil des Testens — zu entscheiden, was zu testen ist, die Risiken zu verstehen, die Testfälle, die wirklich zählen, zu priorisieren — bleibt vollständig menschliche Arbeit.
Eine Testsuite mit 95 % Codeabdeckung, die aus AI-generierten Tests stammt, kann immer noch den Bug übersehen, der die Produktion zum Absturz bringt, da die Codeabdeckung misst, was ausgeführt wurde, nicht was überprüft wurde. Die AI hat Tests geschrieben, die Rückgabewerte überprüften, aber keine Nebeneffekte. Es hat den „happy path“ überprüft, aber die Fehlerbehandlung übersprungen.
Verwenden Sie die AI für die langweilige Arbeit. Verwenden Sie Ihr Gehirn für die wichtige Arbeit. Das ist die Kombination, die tatsächlich funktioniert.
🕒 Published: