Vier Dinge, die Ihre Testautomatisierung verlangsamen

Brian Rock Brian Rock
Lesezeit Min.
Applause Blog Logo

Die Testautomatisierung hat in jüngster Zeit einen regelrechten Höhenflug erlebt – und das aus gutem Grund.

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 Ihnen vier Gründe, warum Automatisierungsprojekte fehlschlagen. Zudem erfahren Sie, worauf Sie bei der Planung achten sollten.

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 Ihr Unternehmen konkret am besten funktioniert.

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

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 Sie sich falsch entscheiden, könnte Sie 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 Sie von den Ergebnissen überzeugt sind, können Sie die Testfälle schrittweise direkt in Ihre Pipeline einbinden.

Kürzlich sprach ich mit einem Kunden über seine anfänglich gescheiterten Automatisierungsbemühungen. Nachdem man sich intensiv mit dem Entwicklungsteam ausgetauscht hatte, war das Problem offensichtlich. Man hatte 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 man riskierte 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 man das Vertrauen in die Initiative verlor und sie schließlich stoppte.

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 Ihr 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 Ihre 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 kann Ihnen dabei helfen, dieses Ziel zu erreichen.

Applause Circle Logo