Automatisierte vs. manuelle Software-Tests
Automatisierte vs. manuelle Software-Tests
|

GUI-Testautomatisierung: Chancen und Grenzen

In diesem Beitrag beleuchten wir Abnahme-Tests und Tests mit grafischer Benutzeroberfläche. Im Fokus stehen GUI-basierte Tests von Desktop-Applikationen, Web-Anwendungen und Mobile-Apps. Nicht betrachtet werden Unittests, Modultests, reine API-Tests, Last-, Performanz- und Hardware-Tests.

Vorteile von automatisierten Testsuiten gegenüber manuellen Tests

Automatisierte Testsuiten bzw. automatisierte Testfälle haben erfahrungsgemäß folgende Vorteile:

  • Automatisierte Tests sind besonders geeignet für Testfälle, bei denen sehr oft das Gleiche oder nahezu das Gleiche getan wird oder die sehr oft wiederholt werden.
  • Ein Testautomat ist immer einsatzbereit, er testet direkt ohne Ermüdungserscheinungen und vermeidet deshalb durch Ermüdung hervorgerufene Test-Fehler.
  • Ein Testautomat prüft genauer, er stellt z.B. immer fest, wenn im geprüften Text ein Leerzeichen zu viel enthalten ist. Ein manueller Tester kann das leicht übersehen. 
  • Ein automatisierter Testfall stellt zuverlässiger fest, wenn z.B. statt eines Einfachklicks ein Doppelklick nötig ist, während der manuelle Tester eventuell intuitiv doppelt klickt.
  • UI-Testautomatisierung eignet sich besonders für funktionale Tests.
  • Testautomatisierung kann automatische Testprotokolle in gleichbleibender Qualität erzeugen. Für manuelle Tester ist die Testprotokollierung hingegen ein manueller Zusatzaufwand.
  • Automatisierte Tests starten automatisch, auch nachts, an Wochenenden und Feiertagen.
  • Ein Testautomatisierungs-Ingenieur kann mehrere automatisierte Testsuiten zeitgleich durchführen, ein manueller Tester nur nacheinander.
  • Ist eine Testautomatisierung vorhanden, werden Testsuiten bzw. Testfälle tendenziell öfter ausgeführt als vor Einführung der Testautomatisierung, was zur Qualitätsverbesserung beitragen kann.
  • Automatisierte Testsuiten können ggf. Zeit und Kosten sparen.

Nachteile automatisierter Testsuiten gegenüber manuellen Tests

Wo Licht ist, ist auch Schatten - aus der Automatisierung von Testsuiten oder einzelnen Testfällen ergeben sich erfahrungsgemäß auch ein paar Nachteile:

  • Testautomatisierung eignet sich weniger gut zum Testen nicht direkt funktionaler Testkriterien, z.B. ob Button X den korrekten Farbton hat oder das Eingabefeld exakt so breit wie vorgegeben ist. Solche Testkriterien kann man auch automatisiert prüfen, der Aufwand ist jedoch höher und Fehlerraten (insbesondere Fehlalarme) kommen häufiger vor als bei manuellen Testern.
  • Neue Software oder neue Funktionen in bestehender Software können ggf. sofort mit Bereitstellung manuell getestet werden. Automatisierte Testsuiten müssen erst erstellt oder angepasst werden, was zeitaufwändiger ist.
  • Testautomatisierung erfordert Aufwand. Initial bei der Entwicklung von automatisierten Tests und später bei der laufenden Pflege und Wartung. Dieser Aufwand wird häufig unterschätzt und kann Schwierigkeiten hinsichtlich der Wirtschaftlichkeit oder bei feststehenden Testterminen verursachen.
  • Sollen automatisierte Testsuiten stabile und verlässliche Ergebnisse liefern, benötigen sie eine stabile und verlässliche Testumgebung. Ist diese nicht gegeben, werden oft die Ergebnisse verfälscht, z.B. weil Netzwerkprobleme als Nicht-Reaktion auf Eingaben missinterpretiert werden und zu Fehlalarmen führen.
  • Testautomatisierung erfordert Testautomatisierungsfachleute mit Erfahrung.

Testfälle automatisieren? Vorgehen zur Evaluierung

Bevor man prüft, ob sich für die eigenen Zwecke manuelles Testen, automatisierte Tests oder eine Kombination aus beidem besser eignet, müssen die Testaufgaben feststehen. Ohne zu wissen, welche Tests durchzuführen sind, ist eine Evaluierung „manuelle vs. automatisierte Tests“ schwierig.

Sind durchzuführende Tests definiert, wird zunächst geprüft, ob „harte“ Kriterien eine Automatisierung ausschließen. Es sind auch Ausschlussgründe für manuelles Testen denkbar, das kommt in der Praxis aber seltener vor.

Liegen keine „harten“ Ausschlussgründe vor und eine Automatisierung kommt in Frage, sollten Sie Kosten, Nutzen, Vor- und Nachteile automatisierter und manueller Tests bzw. Testaufgaben vergleichen. Dann können Sie die Frage beantworten, ob sich die Automatisierung für Sie und die anstehenden Tests eignet. Häufig ist das auch verbunden mit der Frage „Haben wir mit automatisierten Testsuiten die Testergebnisse früher als mit manuellen Tests?“.

Testautomatisierung: harte Grenzen, technische Machbarkeit, technische Grenzen

Einige Faktoren können eine Testautomatisierung in der Praxis verhindern, stellen also eine „harte Grenze“ dar. Sei es, weil der Aufwand unangemessen hoch wäre oder weil eine Automatisierung nach heutigem Stand mit vertretbarem technischem Aufwand nicht möglich ist.

Eine solche Grenze ist der Zugriff auf die zu testende Anwendung (= AUT = Application Under Test). Ist der Zugriff auf die AUT nur möglich, wenn ein Captcha gelöst wird und kann das Captcha nicht umgangen werden, kann das eine Testaustomatisierung verhindern. Erfordert die Anmeldung in der AUT eine Zwei-Faktor-Authentifizierung und mindestens einer der beiden Faktoren ist nicht automatisierbar, verhindert auch das eine Test-Automatisierung.

In der Praxis können fehlende Testautomatisierungs-Werkzeuge eine UI-Testautomatisierung verhindern, z.B. wenn die Desktop-Anwendung ein exotisches, wenig gebräuchliches Entwicklungs-Framework zur GUI-Erstellung nutzt und die am Markt verfügbaren GUI-Testautomatisierungs-Werkzeuge diese nicht unterstützen.

Bei Testfällen für Mobilanwendungen, wie Android- oder iOS-Apps scheitern Testwerkzeuge mitunter daran, dass sie nur auf Elemente des eigenen App-Paketes zugreifen können. Nutzt die App jedoch intensiv Dritt-Software, wie Google Maps oder YouTube, kann dies mit manchen Testwerkzeugen nicht getestet werden, weil diese nicht darauf zugreifen können. 

Wir raten deshalb dazu, unbedingt genau zu prüfen, ob es am Markt geeignete Testautomatisierungs-Werkzeuge für die Testfälle gibt, für die Sie eine Automatisierung in Betracht ziehen.

Ein hartes Ausschlusskriterium für eine konkrete Testaufgabe kann auch zeitlich bedingt sein. Dies kann unter anderem zutreffen, wenn Testsuiten oder einzelne Testfälle z.B. wegen eines nicht verschiebbaren Release-Termins bis Zeitpunkt X durchgeführt sein müssen, die erforderlichen Testsuiten oder Testfälle bis dahin jedoch nicht automatisiert werden können.

Befassen Sie sich also möglichst frühzeitig mit der Frage , ob die Automatisierung anstehender Softwaretests möglich und vorteilhaft ist.

Testautomatisierung: weiche Grenzen und Wirtschaftlichkeit

Betrachten Sie rein wirtschaftliche Faktoren, müssen z.B. erst Personentage berechnet werden. Zunächst müssen die Aufwände, also z.B. Personentage, für Erstentwicklung und laufende Wartung der automatisierten Testsuiten bzw. Testfälle geschätzt werden. Dann erfolgt der Vergleich mit den Aufwänden/Personentagen für manuelle Tests.

Bei der Testautomatisierung müssen außerdem auch eventuellen Lizenzkosten der Testwerkzeuge in die Kalkulation einbezogen werden. Ist eine Einbeziehung externer oder interner Dienstleister bei der Testautomatisierung erwünscht, sind auch diese Kosten oder Personentage in der Kalkulation zu berücksichtigen.

Unsere Erfahrung zeigt, dass sich automatisierte Testsuiten oder Testfälle nur dann wirtschaftlich „lohnen“, wenn die Tests häufig durchgeführt werden. Die Wirtschaftlichkeit der Automatisierung steigt mit der Häufigkeit des Einsatzes der automatisierten Tests. Werden Testfälle hingegen nur jährlich, halbjährlich oder vierteljährlich durchgeführt, ist der Gesamtaufwand in Personentagen, bei manuellem Ausführen der Testfälle manchmal geringer.

Automatisierte Testsuiten sparen nicht nur Kosten, sie testen tendenziell besser und genauer als ein manueller Tester. Liegen hohe Qualitätsanforderungen vor, kann es trotz eventueller Mehrkosten bei automatisierten Testsuiten oder Testfällen, sinnvoll sein, ganz oder teilweise automatisiert zu testen statt „per Hand“.

Bei bestimmten Entwicklungsmethoden wie z.B. SCRUM bietet es sich an, die in kurzfristigen Abständen erstellten Softwareversion automatisiert, statt manuell zu testen. Die Häufigkeit der Testausführung wirkt sich hier auf die damit verbundenen Wirtschaftlichkeit aus.

Automatisierte Tests ermöglichen besonders dann Zeitersparnis bzw. schnellere Testergebnisse, wenn mehrere automatisierte Testsuiten oder Testfälle parallel durchgeführt werden. Beispiel: Anstatt von einem Tester manuell nacheinander die englische, deutsche und spanische Version einer Software testen zu lassen, startet ein Tester gleichzeitig die Auto-Testsuiten für die drei Sprachen in drei verschiedenen Autotest-Umgebungen. In der Regel führt das deutlich früher zu Testergebnissen, als beim sequenziellen und manuellen Testen.

Wird bei Tests häufig das Gleiche oder Ähnliches wiederholt, z.B. Testfall T123 in elf verschiedenen Sprachen ausführen und das auf drei verschiedenen Betriebssystemvarianten, sinkt relativ gesehen der Aufwand für die Entwicklung und Wartung der Testautomatisierung, wodurch sich die Wirtschaftlichkeit automatisierter Tests verbessert.

Fazit: Chancen und Grenzen bzw. „Testfälle automatisieren oder nicht?“

Dass komplexe Fragen wie „soll ich Testfälle automatisieren oder nicht“ sich meist nicht mit einer pauschalen Aussage beantworten lassen, ist eine Binsenweisheit. Chancen der Testautomatisierung sind bessere Qualität der Testergebnisse und Testprotokolle und je nach Sachlage, Zeit- und/oder Kostenersparnis. Zudem können automatisierte Testsuiten früher Testergebnisse liefern und „verleiten“ dazu, öfter zu testen. Das kann ebenfalls zur Qualitätsverbesserung beitragen.

Nachteilig ist, dass die Automatisierung von Testsuiten oder Testfällen nicht immer möglich ist. Außerdem kann die Wirtschaftlichkeit gegen eine Automatisierung sprechen, wenn die Testfallausführung in zu wenigen Varianten wie Sprachen, Browserversionen, Betriebssystemversionen etc. verfügbar ist.

Unsere jahrelange Erfahrung bestätigt, dass in jedem Einzelfall genau geprüft, evaluiert und kalkuliert werden muss, welche Art zu Testen die beste für die jeweilige Software und die einzelnen Testfälle ist. Der Aufwand einer genauen Prüfung, Evaluierung und Kalkulation zahlt sich so gut wie immer aus. Das Ergebnis kann mitunter überraschen und gibt Entscheidungen eine solide und belastbare Grundlage. Automatisierung von Testfällen bieten viele Chancen. Doch wenn nicht regelmäßig geprüft wird, ob man diese Chancen für sich selbst nutzen kann, verschenkt man diese eventuell.

Wir testen seit Jahren und unterstützen Sie gerne im konkreten Anwendungsfall oder bei offenen Fragen - nehmen Sie Kontakt mit uns auf.

  • BDU - Bundesverband Deutscher Unternehmensberater e.V.
  • Top Empleyer - Automotive Deutschland 2016
  • kununu - Top Company
  • EY Entrepreneur des Jahres 2013
  • Fair Company 2015
  • TÜV Süd - ISO 9001
  • Beste Berater 2015
  • Deutschlands kundenorientierte Dienstleister 2011
  • Top 100 - 2011
  • TOP Consultant