Testautomatisierung in einer digitalen Welt


Mit der zunehmenden Digitalisierung in wohl allen Bereichen des Lebens, stieg auch die Nachfrage nach Testautomatisierung. Dies resultiert aus dem Streben die notwendige Testabdeckung zu erreichen, um eine bestmögliche User-Experience (das Erlebnis des Nutzers) zu gewährleisten. Ihr Ziel liegt primär auf der Reduzierung der manuell vom Menschen durchgeführten Testfälle. Hierbei geht es nicht darum den Tester zu ersetzen, sondern vielmehr ihn um Massentests zu entlasten. Damit sich der Tester auf die komplexeren, schwereren oder nicht wirtschaftlich zu automatisierbaren Testfällen, wie z.B. Release-/Versionsspezifische Testfälle, konzentrieren kann. Beschäftigt man sich mit der Testautomatisierung, so muss man sich auch mit den Vor- und Nachteilen der Testautomatisierung beschäftigen sowie der Frage: Welche Tests sollten überhaupt automatisiert werden?

Vor- und Nachteile der Testautomatisierung

Die Einführung einer automatisierten Testumgebung bringt natürlich nicht nur Vorteile mit sich. Bei der Gegenüberstellung der prinzipiellen Vor- und Nachteile wird schnell ersichtlich, welche Testfälle im Fokus der Testautomatisierung liegen.

Vorteile der Testautomatisierung:

  • Automatisierte Tests werden stets identisch ausgeführt. Besonders bei einer hohen Anzahl von Regressionstests (wiederholbare Tests) kann dieses bei der manuellen Ausführung zu Flüchtigkeitsfehlern führen.
  • Die Durchführung der automatisierten Tests ist in der Regel weniger zeit- und kostenintensiv. Aufgrund der geringeren Kostenstruktur amortisieren sich durch die wiederholten Ausführungen, die höheren Aufwandskosten zum Beginn der Automatisierung, die z.B. bei der Erstellung der Testfälle anfallen.
  • Vollautomatisierte Tests benötigen keine menschliche Unterstützung und können automatisiert starten. Ihr Ausführungszeitpunkt ist somit nicht wie beim manuellen Testen durch die Arbeitszeit eingeschränkt. Dies ermöglicht eine deutlich höhere Anzahl an Testdurchführungen pro Tag. Ebenfalls kann durch die Auslagerung der Testdurchführungen außerhalb der regulären Arbeitszeiten die Performance des Systems im Regelbetrieb hochgehalten werden und/oder Ressourcen eingespart werden.

Nachteile der Testautomatisierung:

  • Kommt es zu einer Veränderung im Prozessablauf, können manuelle Testabläufe jederzeit kurzfristig angepasst werden, wohingegen automatisierte Tests nur begrenzte Reaktionsmöglichkeiten haben und auf menschliches Eingreifen angewiesen sind.
  • Automatisierte Test eignen sich nicht für explorative bzw. spontane Tests, bei der es sich z.B. um die Suche nach einer unbekannten Fehlerursache handelt, da hierbei eher viele verschiedene Tests durchgeführt werden müssen.

Welche Tests sollten demnach automatisiert werden?

Demzufolge ist es sinnvoll die Bereiche in die Testautomatisierung auszulagern, bei denen ein klarer Testfall vorhanden ist und dieser sich in einer gewissen Häufigkeit wiederholt. Dieses spiegelt auch die klassische Testpyramide (Organe Pyramide) von Mike Cohn wider, die hier noch um die oft zu findenden Darstellungen der manuellen und explorativen Tests, sowie der Last- und Performancetests erweitert wurde.

affinis_Testautomatisierung-Pyramide-in-Anlehnung-an-Cohn-1190x672

Quelle: Eigene Darstellung in Anlehnung an Mike Cohn.

Nicht funktionalen Last- und Performancetests können sehr gut automatisiert getestet werden. Sie sind nicht in der klassischen Testpyramide von Cohn enthalten, sind aber durchaus wichtig. Die Basis der Pyramide bilden dann im besten Fall eine Vielzahl von schnellen und einfach zu wartenden Unit-/Komponententests. Diese lassen sich gut automatisieren und es kann eine hohe Testabdeckung erreicht werden. Auch die sich in der mittleren Ebene befindenden System- und Integrationstests lassen sich noch gut automatisieren. Aufgrund ihrer steigenden Komplexität und der längeren Testlaufzeiten sollten Integrationstest zielgerichtet zur Prüfung kritischer Schnittstellen eingesetzt werden. Systemtests zu automatisieren ist vor allem bei agilen Projekten mit häufiger Durchführung von Regressionstests sinnvoll.

Auf der obersten Ebene sieht Cohn die UI (User Interface) Tests. Diese werden oftmals über grafische Testumgebungen automatisiert. Hierzu wird in der Regel über das Frontend (Benutzeroberfläche) gesteuert. Die Tests werden oftmals auch für System- & Integrationstest verwendet, welche die Gefahr einer niedrigen Testabdeckung mit sich bringt, da über das Frontend nicht alle Funktionalitäten erreicht werden können. Das UI Tests meistens sehr komplex und zeitintensiv sind, sollte in diesem Bereich sehr genau geprüft werden, ob sich eine Automatisierung lohnt.

Prozessdokumentationen und Reporting-Funktionalität in der Testautomatisierung

Sind Testfälle einmal automatisiert, bedeutet dies aber nicht, dass sich diese nicht mehr verändern. Wie bereits oben erwähnt, leben wir zu einer Zeit, in der besonders der IT Bereich kontinuierlich weiterentwickelt wird. Dieses Streben nach Verbesserung verändert über kurz oder lang auch die Programmierung und die Prozesse der Testfälle. Werden hierbei Bereiche nicht auf die Änderungen angepasst, führt dies zu Fehlern in der Software. Um die aktuelle Softwarequalität zu überprüfen ist neben einer guten Testarchitektur ein gutes Reporting unumgänglich.

Um ein effektives Reporting zu ermöglichen ist es wichtig, dass die Funktionalität hierfür bereits bei der Testerstellung berücksichtigt wird. Mit Hilfe der Testautomatisierung und einem guten Reporting können beim Auftreten eines Fehlers die Bereiche schnell ausgemacht werden, in denen noch Entwicklungs- bzw. Anpassungsbedarf besteht oder der Testfall selbst noch an die Veränderungen der Software angepasst werden muss. Hierzu ist besonders bei komplexeren Tests eine detaillierten Testdokumentation mit den relevanten Ablaufprozessen ausschlaggebend, um schnell auf Veränderungen reagieren zu können. Besonders bei automatisierten Tests sollten die Prozesse selbsterklärend dokumentiert werden, damit das Know-how des Testverfahrens und dessen Zweck nicht verloren geht.

Quellen:

  • the-forgotten-layer-of-the-test-automation-pyramid
  • Cohn 2009: Cohn, Mike. „The forgotten layer of the test automation pyramid.“ Mike Cohns Blog ucceeding with Agile, http://blog. mountaingoatsoftware. com/the-forgotten-layerof-the-testautomation-pyramid (2009).
  • Bucsics 2015: Bucsics, Thomas, et al. Basiswissen Testautomatisierung: Konzepte, Methoden und Techniken. dpunkt. verlag, 2015.
  • Güldali 2017: Güldali, Baris, and Masud Fazal-Baqaie. „Test-und Qualitätsmanagement in agilen Projekten.“ Test, Analyse und Verifikation von Software–gestern, heute, morgen (2017): 111.