Testautomatisierung

R 2.0.0

Was ist Testautomatisierung?

Was ist Testautomatisierung?

Testautomatisierung ist der Einsatz von Software zur Durchführung oder Unterstützung von Testaktivitäten. [ISTQB]

Testskript ist eine Abfolge von Anweisungen für die Durchführung eines automatisierten Tests. [ISTQB]

In der Welt der IT gibt es zwei Arten von Tests: manuelle und automatisierte. Mit Testautomatisierung kann man eine große Zahl von Testfällen immer wieder durchführen. Es ist jedoch auf jeden Fall eine Anfangsinvestition erforderlich und nicht bei allen Tests ist die Automatisierung die wirtschaftlichste Lösung. Es gibt viele verschiedene Testarten und es ist wichtig, dass Sie die richtige Mischung einsetzen. Die Testpyramide ist eine einfache Faustregel, um dies richtigzumachen. Die meisten Tests sollten Unit Tests sein. Sodann eignen sich insbesondere Tests von Serviceschnittstellen und Interaktionen über Benutzeroberflächen.

Ein Testautomatisierungssystem koordiniert sämtliche Testaufgaben, umfasst somit die Verwaltung von Testdaten, die Ausführung von Tests und die Verfolgung von Ergebnissen. Die Testautomatisierung ist der konsequente Schritt für Teams, die von der Last überwältigt werden, dieselben manuellen Tests immer wieder auszuführen.

Anwendungsbeispiel

Anwendungsbeispiel
ALT MISSING

Die Vorhänge öffneten sich und gaben den Blick auf den trüben Novembertag frei. Graue Wolken schoben sich übereinander und der für die Gegend typische Nieselregen lief in dünnen Rinnsalen über die Fenster. Eddy blickte nach draußen und versuchte sich an den Gedanken zu klammern, dass jenseits dieser schier endlos anhaltenden Schlechtwetterperiode auch irgendwo die Sonne scheinen müsste.

ALT MISSING

Seine Gedanken kehrten zu dem Vortrag zurück, den die Kollegin aus dem Referat für Verwaltungsmodernisierung gerade gehalten hatte. Dort war man damit beschäftigt, herkömmliche papiergebundene Verwaltungsabläufe zu digitalisieren. Diesem „Leuchtturmprojekt" standen anscheinend unbegrenzte Mittel zur Verfügung, sodass auch für sein besonderes Anliegen, der Qualitätssicherung, genügend abfiel. Mit besonderem Interesse hatte er den Ausführungen der Kollegin zum Einsatz des neuen agilen Vorgehensmodells zugehört. Das Arbeiten in kleinen Inkrementen, sogenannten Sprints, erforderte ein Neudenken im Test: Jetzt musste während des Sprints die relevanten Softwarequalitätsmerkmale sichergestellt werden, denn schließlich war das Ziel der agilen Vorgehensweise, am Sprintende lauffähige Software zu erzeugen. Das, so stellte die Kollegin überzeugend dar, war nur durch häufige Regressionstests und Testautomatisierung möglich.

ALT MISSING

Sogleich verfinsterte sich seine Miene und das scheußliche Wetter verstärkte noch seine schlechte Laune. Er musste daran denken, wie sie das Thema bis jetzt in seinen Komponenten behandelt hatten: Sicher, der externe Dienstleister entwickelte für den Komponententest zahlreiche Unittestfälle und führte diese auch regelmäßig aus. Aber die fachliche Tiefe auf dieser Teststufe war naturgemäß nicht sehr ausgeprägt. Außerdem war ihm völlig unklar, welche Teile der Software bzw. der Anforderungen überhaupt durch die Unittests abgedeckt waren. Aus den mageren, überwiegend generierten Testausführungsprotokollen ging das nicht hervor. „Wie konnten wir nur so leichtsinnig sein und auf die Vergabe eindeutiger Anforderungs-IDs verzichten, die in jedem Software-Artefakt referenziert werden", denkt Eddy. Das nun im Nachhinein gerade zu ziehen ist ein aufwändiges und teures Unterfangen. Mithilfe dieser konsequenten Referenzierung wäre es nun sehr einfach gewesen, Lücken im Test aufzudecken. „Aber wir setzen ja mittlerweile die Technik des Risikobasierten Testens ein, damit können wir unsere Aufwände besser verteilen und das Thema Testautomatisierung vielleicht auch nachträglich noch in den Griff kriegen", überlegte er.

icon gruppendiskussion

Zunächst dachte er jedoch darüber nach wie er und sein Team bei der Automatisierung sinnvoll weitermachen sollten. Volker hatte sich da schon einmal schlau gemacht und mehrere Kollegen angeschrieben, die über das Thema im „Forum für Test und Qualitätssicherung" des Amtes berichtet hatten. „In vielen Projekten werden, um auch mehr fachliche Tiefe zu erreichen, GUI-basierte automatische Tests entwickelt. Dazu setzen die Kollegen capture-replay-Werkzeuge ein, mit denen Benutzerinteraktionen über die Anwendungsoberfläche aufgezeichnet und beliebig oft abgespielt werden können. Das heißt für uns, dass wir vorhandene fachliche Testfallspezifikationen verwenden können!". Diese Aussicht begeisterte Volker. Christiane war da etwas vorsichtiger: „Da brauchen wir noch Rat und Expertise der Kollegen, scheint mir. Schließlich ist jede Automatisierung auch mit Aufwänden für Wartung und Pflege verbunden. Wir sollten genau überlegen, wo wir die knappen Ressourcen platzieren." Eddy nickte. „Aufwand und Nutzen müssen gerade bei diesem Thema in einem akzeptablen Verhältnis zueinander stehen."

ALT MISSING

Er war erleichtert. Das Team zeigte Interesse und Motivation an dem Thema zusammenzuarbeiten. Er war sich sicher, dass sie durch Kombination von unterschiedlichen Automatisierungsstrategien ein bestmögliches Ergebnis erzielen würden. Während er seine Notizen von dem Vortrag auf Vollständigkeit überprüfte, musste er ein paarmal blinzeln, denn plötzlich riss die Wolkendecke auf und ein Sonnenstrahl wurde sichtbar.

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.

ALT MISSING
Abb. 1: Pyramide der Testautomatisierung

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.

ALT MISSING
Abb. 2: Qualität vs. Kosten

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

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.

Die Zuständigkeiten und die Aufgabenverteilung: Beim Aufbau und Betrieb der Testautomatisierung kommen vier Rollen vor:

  • Testdesigner hat fachliches Wissen als Tester (SUT, ISTQB) und definiert/erstellt die zu testenden Testfälle.

  • Testautomatisierer hat technisches Wissen (Aufbau einer Testautomatisierung) und erstellt die Keywords.

  • Testmanager/ Tester hat fachliches und (hoffentlich) technisches Wissen und steuert die Testausführung. Er analysiert die Ergebnisse und klassifiziert die fehlgeschlagenen Testfälle in die folgenden Kategorien:

    • Fehler der Testumgebung, z.B. Server ausgefallen, Prozess abgebrochen, Queue voll etc.

    • Fehler in Testdaten, z.B. vorbereitete Testdaten nicht komplett durchgelaufen.

    • Fehler im Testfall, ein falsch spezifizierter Testfall.

    • Fehler im SUT eine echte Abweichung, also ein Softwarebug oder ein Fehler in der Anforderung.

  • Fachbereich hat fachliches Wissen über das SUT und unterstützt den Testdesigner bei der Erstellung von Testfällen und den Tester/Testmanager bei der Auswertung fehlgeschlagener Tests.

Mit steigender Zahl der Testfälle verlängert sich die Zeit zur Kontrolle der Ergebnisse des letzten Runs und zur Klassifizierung der fehlgeschlagenen Testfälle. Diese Rolle wird daher mit zunehmender Zahl von Testfällen immer stärker belastet. Während die Testausführung durch ein gutes Framework weitgehend automatisiert werden kann, muss die Analyse fehlgeschlagener Testfälle manuell durchgeführt werden und wird viel Zeit verschlingen. Besonders bei akuten Problemen mit der Testumgebung und den Testdaten kann dies zum Problem werden.

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

Quellen