4 Blocker, die automatisierte Softwaretests scheitern lassen

Die Testautomatisierung hat in jüngster Zeit einen regelrechten Höhenflug erlebt – und das aus gutem Grund. Unternehmen stellen im Zuge des Aufbaus einer agilen Testumgebung fest, dass an Automatisierung kein Weg vorbeiführt, wenn man die gewünschte (und notwendige) Testabdeckung erzielen will, die zur Gewährleistung einer optimalen User Experience erforderlich ist.

Doch nicht immer ist klar, wie eine erfolgreiche Automatisierungsstrategie aussieht. Zu viele Unternehmen investieren in die Automatisierung von Softwaretests, nur um diese kurz darauf scheitern zu sehen. Im Folgenden nennen wir dir vier Blocker, die Automatisierungsprojekte scheitern lassen. Zudem erfährst du, worauf du bei der Planung achten solltest.

Auswahl der falschen Tools für die Testautomatisierung

Die erste und wichtigste Frage, die Unternehmen sich stellen sollten, ist, ob sie ihr Automatisierungs-Framework selbst entwickeln oder ein vorhandenes Framework nutzen wollen. Die Antwort hierauf ist allerdings weder schwarz noch weiß, denn jede Variante hat ihre Vor- und Nachteile. Im Endeffekt kommt es darauf an, was für dein Unternehmen konkret am besten funktioniert.

Vielleicht arbeitest du in einem kleineren Team, das sich erstmals mit dem Thema Testautomatisierung auseinandersetzt? Dann ist eine fertige Enterprise-Lösung für Testautomation vermutliche die beste Option. Eine solche Lösung vereinfacht die Suche nach einem geeigneten Testingenieur für den Aufbau und Betrieb. Zudem hast du so die Gewissheit, ein bereits erprobtes Tool einzusetzen und bei auftretenden Bugs den Support zu erhalten, den du benötigst.

Für ein Team mit einer etwas höheren Funktionsreife ist eine Open-Source-Lösung womöglich die bessere Variante. Ein erfahrenes Team weiß die Individualisierungsmöglichkeiten einer solchen Lösung zu schätzen, die schrittweise mit der Testautomatisierungs-Suite mitwachsen kann. Darüber hinaus sind Open-Source-Frameworks frei nutzbar. Sie erfordern allerdings häufig ein höheres Maß an Fachwissen, um dem eigenen Bedarf entsprechend angepasst werden zu können.

Die Entscheidung für den Mittelweg, der wiederum eigene Vorteile mit sich bringt, ist eine weitere Variante. Und natürlich sollte die Wahl einer Automatisierungslösung erst nach gründlicher Prüfung durch alle Teammitglieder erfolgen. Wenn du dich falsch entscheidest, könnte dich das zeitlich und finanziell weit zurückwerfen.

Zu viel, zu schnell

Sobald das Automatisierungs-Framework steht, ist der erste Impuls häufig, einen Großteil der Deployment-Pipeline sofort zu automatisieren. Doch durch Over-Engineering zu Beginn verzögert man jeglichen initialen Mehrwert, der sich durch die Testautomatisierung erzielen ließe. Ein solches Vorgehen ist nicht nur überehrgeizig, sondern verursacht meist mehr Probleme, als dass es Vorteile bringt.

Die Testautomatisierung sollte nicht direkt in die Entwicklungspipeline integriert werden, denn dies würde höchstwahrscheinlich Workflow- und Build-Probleme verursachen, wenn Fehler in den Testfällen behoben werden. Anfangs sollten Automatisierungstests parallel durchgeführt werden, und zwar solange, bis sie konsistente Ergebnisse liefern. Sobald du von den Ergebnissen überzeugt bist, kannst du die Testfälle schrittweise direkt in deine Pipeline einbinden.

Kürzlich sprach ich mit einem Kunden über seine anfänglich gescheiterten Bemühungen für Automatisierung. Nachdem er sich intensiv mit dem Entwicklungsteam ausgetauscht hatte, war das Problem offensichtlich. Sie hatten damit begonnen, die Ergebnisse der UI-Testautomatisierung direkt in die Pipeline zu integrieren, nachdem die Unit-Tests abgeschlossen waren und der Build in eine Integrationsumgebung implementiert wurde. Das Deployment und die UI-Tests wurden in einem Job zusammengefasst. Dadurch wurde die Verfügbarkeit der Umgebung bis zum Abschluss der Tests blockiert und sie riskierten bei einem Fehlschlagen der UI-Tests ein gescheitertes Deployment.

Während es einfach war, den Kunden wieder auf Erfolgskurs zu bringen (z. B. durch Verlagerung der UI-Tests in eine vorgelagerte, stabile Umgebung, während der Kunde seine Prozesse reifen ließ sowie Entkopplung der Tests von den Deployments), führte die ständige Unterbrechung des Entwicklungsprozesses dazu, dass das Vertrauen in die Initiative verloren ging und schließlich gestoppt wurde.

Undefinierter Triage-Prozess

Die Automatisierung von Tests ohne einen definierten Fehler-Triageprozess, bei dem Bugs nach Schwere eingeteilt werden, ist ein vergebliches Unterfangen. Mir sind schon viele Firmen begegnet, die Zeit vergeudeten, weil Fehler nicht konsequent dokumentiert wurden. Um den Triage-Prozess zu beschleunigen, benötigt dein Entwicklerteam einfachen Zugriff auf Protokolle, Screenshots und Testergebnisse. Alles andere reicht nicht aus.

Die automatischen Testergebnisse sollten nach dem gleichen Prinzip wie Bugs priorisiert werden. Bei automatisierten Tests auf Pass/Fail-Basis ist es üblich, dass man einen fehlgeschlagenen Test rückgängig macht, ohne sich weiter mit dem Thema zu beschäftigen. Derartige Probleme werden jedoch oft durch ein Testskript, das aktualisiert werden muss, oder ein Problem mit der Umgebung, in der getestet wird, und nicht durch den Code selbst verursacht. Dies unterstreicht die Notwendigkeit einer Zwischenstufe, die wir Triage nennen und die mit dem Priorisieren von Bugs vergleichbar ist.

Schlecht gewartete Frameworks und Testfälle

Die Testautomatisierung dient dazu, die Arbeit von Entwicklungsteams zu vereinfachen und zu beschleunigen, doch ohne die erforderliche Pflege erleben die Teams oft genau das Gegenteil. Testfälle werden nicht einmalig erstellt und dann nicht mehr angefasst, sondern müssen stetig angeglichen werden, etwa in Reaktion auf größere Veränderungen hinsichtlich UI, Betriebssystem, Browser, Automatisierungsbibliothek usw.

Wichtig ist auch, bei der Schaffung des Frameworks den Wartungsaspekt zu berücksichtigen. Komplexe Entwurfsmuster können zu schwierigen, zeit- und kostenintensiven Wartungsarbeiten führen (z. B. Locator-Strategien, Page Factories usw.), die deine Automatisierungsbemühungen beeinträchtigen. Besonders wichtig ist dies unter dem Gesichtspunkt der Mitarbeiterfluktuation und der Notwendigkeit für neue Entwickler, sich schnell in ein neues Framework einzufinden.

Ohne die Automatisierung von Tests können Unternehmen keine agile Entwicklung erzielen. Auch Firmen mit schlechten Automatisierungspraktiken werden niemals wirklich agil sein. Die Testautomatisierung ist sicher kein einfaches oder schnelles Unterfangen, doch wer die entsprechende Zeit investiert, um es schon beim ersten Mal richtig zu machen, wird langfristig profitieren. Crowdtesting in Verbindung mit automatisierten Tests kann dir dabei helfen, dieses Ziel zu erreichen.

Möchten Sie mehr wie dies anzeigen?
Brian Rock
Senior Director of Engineering
Lesedauer: 5 min

Deshalb scheitern Projekte zum maschinellen Lernen

In diesem Artikel: 5 Hauptgründe für das Scheitern von ML-Projekten und wie Unternehmen sie vermeiden.

Optimierung des Kundenerlebnisses beim Laden von Elektrofahrzeugen

So geht reibungsloses Aufladen: Testen von Funktionen, Zahlungen, UX und Barrierefreiheit.

Krypto-Wallets entwickeln: Worauf müssen Developer achten?

Kryptowährungen verzeichnen weiterhin eine steigende Popularität. Welche Features ein gelungenes Krypto-Wallet benötigt, erfahren Sie hier.

10 Tipps zur Optimierung des Nutzer-Onboardings beim Online-Glücksspiel

Wenn neue Spieler sich schnell registrieren und spielen können, gewinnen alle