Die Grundlagen für eine erfolgreiche Testautomatisierung
Die Digitalwirtschaft wächst rasant und Unternehmen stehen vor der unliebsamen Aufgabe, mit diesem Tempo Schritt zu halten. In einem stark umkämpften Wettbewerbsumfeld, in dem eine immer höhere Qualität und stetig kürzere Release-Zyklen gefordert werden, sehen Entwicklungsteams sich einem enormen Druck ausgesetzt.
Infolgedessen gelten automatisierte Tests inzwischen nicht mehr als „nice to have“, sondern sind schlichtweg eine Notwendigkeit. Mit einer Testautomatisierungssuite werden schier unlösbare Aufgaben wie die Verdopplung der Codeabdeckung, der Geräteabdeckung und der Testoberfläche zur tragfähigen, kosteneffizienten Realität. Der Trick besteht darin, Automatisierungslösungen zu implementieren, die langfristig Bestand haben, insbesondere wenn der Einsatz erhöht wird.
Wie in einem früheren Artikel über typische Blocker von automatisierten Tests erläutert gibt es mehrere Bereiche, in denen Unternehmen bei Automatisierungsprojekten immer wieder Schwierigkeiten haben oder scheitern. Aspekte wie operative Effizienz, Kostenmanagement, Risikominderung und personelle Grenzen sollten von Anfang an als Teil des Automatisierungs-Rollouts berücksichtigt werden, um weiterhin eine reibungslose Entwicklungspipeline zu gewährleisten.
Das richtige Framework
Der Einstieg in die Testautomatisierung ist relativ einfach, da Abdeckung, Umfang und Risiko zunächst minimal sind. Während zu Beginn noch kein Grund besteht, alarmiert zu sein, ergeben sich spätestens mit der Intensivierung der Automatisierungspraxis Probleme, sofern für das Framework nicht die richtigen Tools gewählt werden.
Ich habe schon viele Unternehmen erlebt, die es versäumt haben, eine Lösung zu wählen, die ihrem Bedarf zu diesem Zeitpunkt gerecht wurde und gleichzeitig skalierbar war. Beispielsweise berieten wir ein amerikanisches E-Commerce-Unternehmen, das ein großes, internes Mobile Device Lab im Rahmen einer ersten Maßnahme zur Automatisierung von App-Tests aufbauen wollte. Das ist ein extrem kompliziertes, teures Unterfangen, das im Anschluss an eine erfolgreiche Implementierung bei einem Mobile Device Cloud Anbieter hätte ausgelotet werden können.
Schrittweise automatisieren
Sobald das Framework steht, liegt es nahe, voll durchstarten zu wollen und einen Großteil der manuellen Funktionstests in automatisierte Tests umzuwandeln. Die Absicht ist zwar löblich, doch der Übergang gelingt selten so reibungslos wie erwartet. Allzu häufig werden Tests zu schnell in die Delivery Pipeline integriert, was zu Workflow- und Build-Problemen führt.
Meine Erfahrung hat gezeigt, dass der beste Ansatz darin besteht, die automatisierten Tests schrittweise in die Pipeline einzubinden und nach und nach Selbstvertrauen aufzubauen. Wenn Ihre Entwickler von dem Testverfahren überzeugt sind und in der Anfangsphase wertvolles Feedback erhalten, werden Sie mit ihrer Unterstützung rechnen können, sobald der Prozess weiter skaliert wird.
Fehlerpriorisierung einfach halten
Häufig herrscht eine falsche Vorstellung davon, wie Bugs, die durch automatisierte Tests gefunden wurden, zu priorisieren sind. Es wird dann die Ansicht vertreten, dass diese Fehler anders behandelt werden sollten als solche, die durch manuelle Funktionstests aufgedeckt werden. Dadurch macht man den Prozess der Bug-Triage jedoch komplizierter als notwendig.
Handel nach dem Motto „Keep it simple“ und behandel die im Rahmen von automatisierten Tests gefundenen Bugs wie alle anderen Fehler auch. Ein Bug, der durch einen automatisierten Test gefunden wurde, verdient genauso viel Aufmerksamkeit, als wenn er durch einen manuellen Tester gemeldet worden wäre.
Eine skalier- und wartbare Lösung
Häufig liegt der Fokus so sehr auf dem Aufbau des Automatisierungs-Frameworks, dass der Wartungsaufwand, der erforderlich ist, um einen reibungslosen Betrieb zu gewährleisten, unterschätzt wird. Die Erweiterung und Aktualisierung des Frameworks, aber auch die Anpassung der Testfälle an sich verändernde Testbedingungen (z.B. neuer Browser, neue mobile Betriebssystemversion, usw.) ist keine Kleinigkeit.
Eine Möglichkeit besteht darin, für diesen kontinuierlichen Prozess interne Ressourcen aufzuwenden. Eine Alternative, mit der sich der Ressourcenbedarf einfach skalieren lässt, ist der Einsatz von Crowdtestern. Eine solche Tester-Crowd (z. B. die Automatisierungs-Crowd von Applause) kann flexibel skaliert werden, um den jeweiligen Anforderungen an die Testfallpflege gerecht zu werden.
Drittsysteme, die den Automatisierungsprozess erleichtern (z. B. Selenium, Appium, Device Cloud Integrationen, Reporting Tools, usw.), müssen regelmäßig gewartet und getestet werden, bevor sie für „produktive“ Testläufe verwendet werden. Wenn dein Framework es dir nicht SEHR einfach macht, Tests durchzuführen, Ergebnisse auszuwerten, Fehler zu beseitigen und Statusmeldungen zu generieren, solltest du gegebenenfalls stärker in dein Framework investieren oder die entsprechenden Ressourcen in umsatzwirksame Produkte investieren und kommerzielle Lösungen in Betracht ziehen.
Im Bemühen von QA-Teams, mit der Entwicklung Schritt zu halten, scheinen schnelle Automatisierungslösungen häufig verlockender als solide Ansätze. Eine erfolgreiche Automatisierungspraxis stellt sich jedoch nicht über Nacht ein. Auf lange Sicht kostet dich eine schnelle Lösung höchstwahrscheinlich mehr Zeit und Geld, als wenn du die Sache von vornherein richtig angehst. Erspare dir den Ärger und implementiere die Lösung, die für dich am besten funktioniert.
Wie führen wir von Applause eigentlich automatisierte Tests für unsere Kunden durch? Erfahre mehr auf unserer Übersichtsseite.