Im Fachbereich der Qualitätssicherung ist das Interesse an automatisierten Oberflächentests (im Folgenden häufig nur noch automatisierte Tests oder Testsuite genannt) aktuell so groß wie noch nie. So erfreut sich das Thema nicht nur bei Kunden steigender Beliebtheit. Auch im Sinne der in|sure Ecosphere sollen künftig automatisierte Oberflächentests dabei helfen, produktübergreifende End-2-End-Szenarien zu kontrollieren.
Aber auch innerhalb der Produktentwicklungsteams wird Testautomatisierung häufig eingesetzt, um den Qualitätssicherungsprozess zu verbessern, denn das Potenzial ist groß und die Grundidee einfach: Automatisierte Tests sind schneller, kosteneffizienter und zuverlässiger als manuelle Tests. Klingt doch gut, oder? Let’s automate!
Automatisierte Tests sind schneller … oder?
Klar ist, Computer arbeiten schneller als Menschen. Stellen wir uns eine fertig automatisierte Testsuite vor, die einen festgeschriebenen, sich nicht ändernden Ablauf an Anwendungsinteraktionen durchführt und dabei immer das gleiche, absehbare Ergebnis erwartet. Eine solche Testsuite ist nicht nur schneller, sie prüft den Ablauf auch jederzeit, nach jeder Änderung und über mehrere Browser gleichzeitig hinweg. Selbst erfahrene Expert*innen im Bereich Softwaretest können das nicht leisten.
Die Umsetzung braucht Zeit
Ein inkrementelles Entwicklungsprojekt ist während seiner Laufzeit jedoch häufig geprägt von sich ständig ändernden Anforderungen. Kombiniert man dies mit der beinahe typischen Abwesenheit vollständiger und eindeutiger Anwendungsspezifikationen, so werden die idealen Umgebungsbedingungen für eine florierende Testautomatisierung häufig erst mit einem gewissen Produktreifegrad erreicht.
Versuchen wir automatisierte Oberflächentests nun frühzeitig im Entwicklungsprozess zu berücksichtigen, so ist das durchaus ein interessanter Ansatz. Es sind schließlich die ständigen Änderungen und Anpassungen an der Software, die ein feinfühliges Regressionskonzept so wichtig machen. Allerdings entpuppt sich das Vorhaben dann möglicherweise als Kanada-Roadtrip mit einem 1.0 Liter 3-Zylinder Toyota Yaris: Kann man machen, allerdings nur langsam und man bleibt womöglich stecken. Denn mit jeder Änderung an der Anwendung geht potenziell eine Anpassung der automatisierten Tests einher. So wird es mitunter äußerst zeitaufwendig, eine komplexe Testsuite aufzubauen, und dieser initiale Mehraufwand wird gerne unterschätzt. Dedizierte Software-Tester*innen sind auf der anderen Seite flexibel und verstehen sich darauf, in kürzester Zeit die Testaufwände den sich ständig ändernden Anforderungen und Prioritäten anzupassen.
Ein gezieltes Vorgehen ist wichtig
Um sich also bei einer frühen Umsetzung einer automatisierten Testsuite nicht zu verrennen, ist es absolut notwendig, sich über den initialen Umfang der Testautomatisierung im Klaren zu sein. Idealerweise beginnt man mit der Schnittmenge aus den wichtigsten Prozessen sowie solchen, die voraussichtlich den wenigsten Anpassungen und Änderungen unterzogen sein werden.
Automatisierte Tests sind kosteneffizienter … oder?
Um den durch eine automatisierte Testsuite erreichten Mehrwert beziffern zu können, werden automatisierte Tests häufig gegen die Kosten für manuelle Tests aufgewogen. Dabei sollte jedoch immer bedacht werden, dass es sich um völlig verschiedene Testmethoden handelt und deren konzeptionelle Grundlage sich unterscheidet. Betrachten wir die Aufwendungen für Testautomatisierung, so geht es zum einen um die ggf. anfallenden Lizenz- und direkten Betriebskosten für die Infrastruktur, zum anderen aber natürlich und vor allem um die Aufwands- und damit Personalkosten für die Umsetzung. Diese lassen sich dann auch noch unterteilen in offensichtliche Kosten sowie Kosten, die gerne schon mal unter den Tisch fallen.
Was selten bedacht wird
Ein weiterer Punkt, der an dieser Stelle erwähnt sein muss, sind Personalgehälter selbst. Für die Umsetzung einer umfangreichen, automatisierten Testsuite sind häufig Vollzeit-Testingenieur*innen mit fundamentalen Programmiererfahrungen gefragt. Unter den (manuellen) Software-Tester*innen dagegen tummeln sich häufig auch Personen mit weniger technischem Background bzw. Quereinsteiger (Servus!). Ein Blick in die gängigen Vergleichsportale zeigt, dass die Durchschnittsgehälter für Testingenieur*innen durch das benötigte technische Know-how einfach höher sind als bei Software-Tester*innen. Dies gilt es zu berücksichtigen.
Automatisierte Tests sind zuverlässiger … oder?
Sobald der erste Automat eigenständig eine Krankmeldung einreicht, haben wir vermutlich ganz andere Probleme. Subtile Zukunftsdystopie mal außen vorgelassen … den menschlichen Faktor aus einer Prüfung heraus zu subtrahieren ist wahrlich kein neuer Ansatz und bringt eben auch viele Vorteile mit sich. Allerdings ist es doch so, dass sowohl das Testobjekt, der Testfall als auch der Testautomatismus selbst von Menschen beschrieben werden und daher der komplette Prozess der Testautomatisierung in sich fehleranfällig ist („false negatives“). Davon können sich auch manuelle Tests nicht freisprechen. Es ist daher absolut notwendig, dass die automatisierte (und manuelle) Testsuite selbst einem Reviewprozess unterzogen wird, idealerweise regelmäßig (wie war das noch gleich mit den Kosten?). Viel zu häufig werden Testautomatisierungsbestrebungen nach dem „fire and forget“-Prinzip betrieben, wodurch deren Zuverlässigkeit und Nachhaltigkeit in Frage gestellt werden muss.
Automatisierte Tests geben Sicherheit
Aber worin genau sind automatisierte Tests jetzt gut? Sobald ein automatisierter Test durchgelaufen ist, ohne einen Fehler zu finden, so wird dieser niemals einen neuen Fehler finden. Es sei denn, der zugrunde liegende Anwendungscode ändert sich. Wobei auch hier immer noch geprüft werden muss, ob es sich wirklich um Fehler oder um gewollte Änderungen handelt („false positives“ – apropos Kosten). Aber genau das ist der Punkt. Automatisierte Tests sind wie Bewegungsmelder, die die gangbaren und offensichtlichen Gehwege beleuchten. Und in dem Moment, in dem sich dort etwas tut, geht ein (rotes) Licht an. Genau damit geben sie Software-Tester*innen die Sicherheit und Möglichkeit, sich um die verborgenen Mängel rund um das Bauvorhaben zu kümmern.
Automatisierte Tests sind kein Ersatz – aber ein wichtiges Werkzeug
In einem Entwicklungsprojekt, indem sowohl manuelle als auch automatisierte Tests zum Einsatz kommen, wird mit Sicherheit eine große Mehrheit der entdeckten Fehler auf manuelle Aufwände zurückzuführen sein. Und das häufig trotz Monaten und Jahren an in Testautomatisierung geflossenen Aufwänden. Man sollte die beiden für sich stehenden Testmethoden nicht gegeneinander aufwiegen. Das kann auch gar nicht gelingen, da sie jeweils mit gänzlich eigenen Anforderungen, Dynamiken und Zielsetzungen einhergehen. Indem automatisierte Tests den „Happy Path“ kontrollieren, geben sie Software-Tester*innen die Möglichkeit, sich auf das Aufspüren neuer Bugs zu konzentrieren und den generellen Qualitätsverbesserungsprozess anzutreiben. Die Testmethoden ergänzen sich also und bilden zwei wichtige Grundpfeiler einer ausgewogenen Teststrategie.
Die zwei wichtigsten Erkenntnisse – einmal zum Mitnehmen bitte
Grundsätzlich gilt, eine automatisierte Testsuite ist wichtig. Dennoch eilt ihr guter Ruf häufig etwas zu weit voraus. Damit sie jedoch eine sinnvolle Ergänzung in einer durchdachten Teststrategie darstellen kann, sollten zwei Dinge meiner Meinung nach besonders berücksichtigt werden:
Erstens: Den Testautomatisierungsprozess (inkl. Tooling) sorgfältig durchdenken und dokumentieren. Dabei sicherstellen, dass der Produktentwicklungsprozess bzw. das zu testende Produkt einen gewissen Reifegrad erreicht hat. Die potenziell entstehenden Aufwände für das ständige Nachziehen der Testsuite verschlingen sonst jeglichen Mehrwert.
Zweitens: Die Testautomatisierung sollte immer nur als Erweiterung der Teststrategie und im Verbund mit manuellen Tests gesehen werden. Keinesfalls als Ersatz.
Testautomatisierung genießt ein gutes Image. Ein Stück weit auch zurecht! Auf dem Weg zu einer nachhaltigen Investition gibt es aber einige gern übersehene Schlaglöcher, die es zu umfahren gilt. Ich hoffe, ich konnte euch mit dieser kritischen Reflexion auf einige dieser Schlaglöcher hinweisen.
Der adesso Blog hält einige interessante Artikel zum Thema Testautomatisierung bereit. Sei es bezüglich Tooling oder umgesetzte Projekte – Stöbern lohnt sich.
Sie möchten mehr darüber erfahren, wie in|sure- Software dabei hilft, Versicherungsunternehmen zukunftsfit zu machen? Dann wenden Sie ich gerne an Karsten Schmitt, Head of Business Development.
Sie haben Fragen oder Anmerkungen? Dann hinterlassen Sie uns gerne einen Kommentar.