Testautomatisierung
R 2.0.0
Beschreibung
Automatisierte Tests bringen enorme Vorteile für die Teameffizienz. Sie legen die Verantwortung in die Hände des Entwicklerteams. Die Testpläne werden zusammen mit der Entwicklung regelmäßiger Roadmap-Funktionen entwickelt und dann automatisch von Continuous-Integration-Tools ausgeführt. Automatisierte Tests begünstigen schlanke QS-Teams und ermöglichen es dem QS-Team, sich auf sensiblere Funktionen zu konzentrieren.
IT-Fachleute bezeichnen automatisiertes Testen und Testautomatisierung oft synonym. In Wirklichkeit gibt es aber einige praktische Unterschiede: Testautomatisierung hat typischerweise eine breitere Bedeutung.
Automatisiertes Testen ist das wiederholbare Testen ohne manuelle Eingriffe. Einige Softwareprofis betrachten automatisierte Tests als automatisierte Regressionstests, da sie Regressionstests als grundlegende Verifikation betrachten. Die Automatisierung dieses Prozesses ermöglicht es Testern, sich auf wichtigere Qualitätssicherungsaufgaben zu konzentrieren.
In der Regel bezieht sich Testautomatisierung auch auf den Gesamtansatz, den Teams mit Skripting Tools zur Entwicklung und Ausführung von Tests verwenden, anstatt selbst manuell zu testen. Daher beinhaltet die Testautomatisierung nicht nur die Ausführung, sondern auch die übergreifende Strategie.
Ziele
Erhöhung von Geschwindigkeit, Effizienz und Qualität bei reduzierten Testkosten
-
Durch eine passende Testautomatisierung kann eine Verbesserung der Test- und damit auch Softwarequalität erreicht werden. Voraussetzung dafür ist, dass ein zur Software passender Umfang an Testautomatisierung über alle Teststufen hinweg gewählt wird. Bei einem hohen Bedarf an Regressionstests beispielsweise werden sich auch Zeitgewinne realisieren lassen, da hunderte Testskripte im manuellen Tests ein Vielfaches an Zeit und Ressourcen kosten. Mit der Testautomatisierung können Sie Testfälle außerhalb der Hauptlastzeiten ausführen und parallel auf mehrere physische oder virtuelle Server verteilen. Ihr Team erhält dabei ein schnelles Feedback zur Qualität einer Softwareversion und deren Eignung für die Veröffentlichung.
Erhöhung von Motivation und Effektivität der Tester
-
Manuelle Tests können mühsam und fehleranfällig sein. Die häufige Wiederholung der gleichen Testfälle bei nur geringen Änderungen der Datenwerte ist arbeitsintensiv und zeitraubend. Durch Automatisierung von Tests verringern Sie Frustrationen Ihrer Tester bei anspruchslosen, sich wiederholenden Tests und erhöhen gleichzeitig die Wiederholbarkeit und Genauigkeit dieser Tests. Die Automatisierung ermöglicht es, den Schwerpunkt auf anspruchsvolle Tätigkeiten wie Risikoanalysen und Explorative Tests zu legen.
Verbesserte Testabdeckung
-
Eine ausreichende Testabdeckung zu erreichen erfordert häufig einen beträchtlichen Aufwand. Es können Hunderte von Testfällen erforderlich sein, um alle Anwendungsszenarien zu berücksichtigen. In solchen Fällen lassen sich durch den Einsatz einer geeigneter Testautomatisierung - verglichen mit manuellen Tests - mehr Bereiche abdecken und mehr Testfälle durchführen. So kann sichergestellt werden, dass die Tests alle Anwendungsteile prüfen, auch diejenigen, die bei manuellen Tests möglicherweise aus Zeitgründen weggelassen werden.
Wann lohnt sich eine Automatisierung?
Der Aufbau einer Automatisierung ist mit großem Aufwand und in der Regel hohen Kosten verbunden. Andererseits kann die Qualität des System under Test (SUT) und die Sicherheit durch eine Testautomatisierung stark profitieren. Wann lohnt sich der Aufwand für eine Automatisierung?
Letztendlich muss der zur Automatisierung benötigte Aufwand sich bei der Ausführung rentieren, d. h. die prognostizierten, eingesparten Kosten sollten die Kosten für die Automatisierung deutlich übersteigen. Hier gibt es mehrere wichtige Faktoren:
-
Stabilität - Maturity: Das SUT und die Testfälle sollten weitgehend stabil sein. Eine Automatisierung macht keinen Sinn, wenn die Testfälle nach jedem Release komplett überarbeitet werden müssen.
-
Ausführungshäufigkeit: Die Releasezyklen sollten eher kurz sein (Agile Entwicklung) und die Testfälle häufig ausgeführt werden. Ein mühsam automatisierter Testfall, der in seinem Lebenszyklus nur acht Mal läuft, ergibt keinen Sinn.
-
Zeitraum der Verwendung: Die prognostizierte Laufzeit des SUT ist lang genug, um eine Amortisation der Testautomatisierung zu ermöglichen.
-
Anzahl der Testfälle: Mit einer Automatisierung kann auch die Anzahl der Testfälle und damit die Testabdeckung zunehmen. Die Amortisation der Testautomatisierung wird dadurch ebenfalls erleichtert.
-
Stabilität der Testumgebung: Zur Ausführung der automatisierten Testfälle muss eine stabile Testumgebung mit passenden Testdaten zur Verfügung stehen.
Sollte einer dieser Faktoren gegen eine Automatisierung sprechen, muss kritisch geprüft werden, ob eine Automatisierung überhaupt sinnvoll ist.
Bedenken sollten zu einem frühen Zeitpunkt mit allen Beteiligten offen diskutiert werden.
Vor- und Nachteile
Vorteile der Testautomatisierung:
-
Schnellere Tests und frühere Rückmeldungen möglich
-
Effektive Nutzung der Testressourcen
-
Vergleichbarkeit der Ergebnisse
-
Höhere Testabdeckung
Nachteile der Testautomatisierung:
-
Initialkosten und zeitlicher Aufwand bei Einführung
-
Kosten für Wartung der Automatisierung
-
Steigerung der technischen Komplexität
-
Know-How Aufbau nötig
Video: Die 10 typischen Fehler in der Softwareentwicklung (Länge: 04:00)
Für viele Projekte kann Testautomatisierung durchaus Zeit- und Kostenersparnis bedeuten. Sie ist aber nicht pauschal in allen Projekten und bei allen Testarten zu empfehlen, da die genannten Vorteile nicht ohne initialen Mehraufwand zu haben sind. So dauert es üblicherweise länger, ein Testskript zu erstellen, als den manuellen Testfall zu schreiben. Die Wiederverwendbarkeit und flexible Einsatzmöglichkeit der automatisierten Tests kann sich jedoch im Projektverlauf bezahlt machen.
Voraussetzung dafür ist die o.g. Stabilität des Testobjekts, damit die Wartung der Testskripte überschaubar bleibt.
Testautomatisierung wird nie den manuellen Test komplett ersetzen können, wie z.B. bei explorativen Tests, die menschliches Urteilsvermögen erfordern. Dennoch ist es häufig ein gutes Instrument in der Software-Qualitätssicherung, welches in vielen komplexen und großen Software-Projekten eingesetzt wird.
Die meisten Fehler werden jedoch gefunden, wenn man beide Instrumente des Softwaretests kombiniert.
Allgemeine Grundsätze - Bevor man anfängt
Noch bevor die Arbeit an der Testautomatisierung starten kann, sollten einige wichtige Punkte geklärt werden:
-
Testfokus der Automatisierung: Was will ich eigentlich testen? Wie weit soll der Test reichen? Der Testfokus der Testautomatisierung kann ganz unterschiedlich aussehen. Der Testfokus sollte von Anfang an klar bestimmt werden, da er die Umsetzung der Testautomatisierung stark beeinflusst.
Es muss bereits im Vorfeld die Aufgabenverteilung abgesprochen und in der Ressourcenplanung berücksichtigt werden, damit nicht (wie so häufig) der Testautomatisierer für alle Aufgabenbereiche verantwortlich ist.
-
Die richtigen Ansprechpartner: Testautomatisierer sind in der Regel keine fachlichen Experten für das zu testende System und benötigen Unterstützung aus dem Kreis der fachlichen Tester, bzw. des Fachbereiches.
-
Trennung von manuellem und automatisierten Test: Automatisierte Tests haben den Vorteil, dass sie außerhalb der Geschäftszeiten, z.B. nachts oder am Wochenende durchgeführt werden können und die Ergebnisdokumentation automatisch generiert werden kann. In manchen Fällen kann eine aufwändigere Trennung der Tests nötig sein, wenn für bestimmte Tests die verwendeten Testuser, Testdaten und ggf. sogar Testumgebung getrennt werden müssen.
Methoden der Testautomatisierung
Behavior-Driven Development (BDD) hat sich nicht zuletzt durch die Ausbreitung agiler Entwicklungsprozesse in IT-Projekten als Methode zur Spezifikation automatisierter System- und Akzeptanztests etabliert. Andere Ansätze wie Model-Based Testing (MBT) und Keyword-Driven Testing (KDT), die vergleichbaren Ziele verfolgen, sind darüber in ihrer Wahrnehmung und Verbreitung scheinbar ins Hintertreten geraten.
Bei komplexen Testaufgaben (d.h. mit vielen Tests, vielen Ablauf- und/oder Datenvarianten, komplexen Spezifikationen) kann MBT sowohl hinsichtlich Testqualität als auch Wartbarkeit seine Stärken ausspielen. Für einfachere Aufgabenstellungen mag der Ansatz hingegen oft zu schwergewichtig sein. Wie eine „gewöhnliche“ Testautomatisierung auch bringt MBT eine Aufwandskurve mit sich, die anfangs hoch ausfällt und sich dann in der Pflege (komplexe Änderungen) auszahlt. Die nötigen Modellierungskenntnisse sind eine Haupt-Hürde bei der Definition und Einführung eines modellbasierten Testprozesses.
BDD sieht leichtgewichtig aus und entwickelt des halb schnell Charme, gerade auch für fachliche Stakeholder. Zu beachten ist die längerfristige Perspektive: Wie regelt man das Tracing der Tests zu den getesteten Anforderungen? Wie achtet man auf hohe Wiederverwendbarkeit? Wie verwaltet man eine große Zahl solcherart spezifizierter Tests? Die Gefahr besteht (vielleicht vergleichbar mit Capture-Replay-Automatisierungen), dass man sich für BDD entscheidet, weil schnelle Automatisierungs-Ergebnisse möglich sind und sowohl Tool- als auch Lernkurve sehr gering ausfallen, man sich aber zu wenige Gedanken über Pflege und Skalierung des Ansatzes macht.
KDT ergänzt sich ausgezeichnet mit beiden Ansätzen und sorgt für die Minimierung von Pflege- und Automatisierungs-Kosten. Akzeptanz muss durch definierte Ownership der „erlaubten“ Keywords und durch geeignete Editor-Unterstützung geschaffen werden. Und das mehrschichtige Design von Keywords ist eine Aufgabe, die nicht unterschätzt werden darf.
Des Weiteren sei darauf hingewiesen, dass - unabhängig vom Ansatz- die Arbeit mit der Erstellung automatisierter Testfälle nicht getan ist. Die Automatisierungs-Praxis zeigt, dass mehrere weitere Themen zu bearbeiten sind, insb. die Kontrollierbarkeit der späteren Testumgebung und Testdaten für die Durchführung, sowie die Testbarkeit und Automatisierbarkeit des Testobjekts. Dies sind typische „Stolpersteine“ für jede Testautomatisierung.
Weitere Informationen
Ein Test muss einige Kriterien erfüllen, um automatisiert werden zu können. Sie können dann in unterschiedlichen Arten von Tests umgesetzt werden.
Vertiefende Informationen zu Kriterien für die Testautomatisierung sowie Arten von automatisierten Tests finden Sie in diesem Artikel.
Reifegradbestimmung & Entscheidungshilfen
-
Bestimmung des Reifegrades und Entscheidungshilfen sind unter folgender Seite zu finden → Reifegradbestimmung & Entscheidungshilfen → Testautomatisierung
-
Beschreibung des Reifegrades → zum Reifegrad der Testautomatisierung
Quellen
-
Abbildungen Anwendungsbeispiel: FLATICON, Freepik Company S.L. Autor*in: juicy_fish, abgerufen am 27.11.2024
-
ISTQB Glossary Testautomatisierung, abgerufen am 19.08.2024
-
ISTQB Glossary Testskript, abgerufen am 19.08.2024
-
Imbus AG, Testautomatisierung, abgerufen am 01.02.2024
-
Q-Centric GmbH, Was ist Testautomatisierung?, abgerufen am 01.02.2024
-
Atlassian Pty Ltd, Automatisierte Softwaretests, abgerufen am 01.02.2024
-
TEQS Consulting GmbH (Testing Board) Abb. 1 und 2, Testautomatisierung, abgerufen am 01.02.2024
-
YouTube Imbus AG, Die 10 typischen Fehler in der Softwareentwicklung, abgerufen am 01.02.2024
-
TechTarget Germany GmbH, Was sind Testautomatisierung und automatisierte Tests?, abgerufen am 01.02.2024