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.
Automatisierte Testsuiten bzw. automatisierte Testfälle haben erfahrungsgemäß folgende Vorteile:
Wo Licht ist, ist auch Schatten - aus der Automatisierung von Testsuiten oder einzelnen Testfällen ergeben sich erfahrungsgemäß auch ein paar Nachteile:
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?“.
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 man eine Automatisierung in Betracht zieht.
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.
Man sollte sich also möglichst frühzeitig mit der Frage befassen, ob die Automatisierung anstehender Softwaretests möglich und vorteilhaft ist.
Betrachtet man 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.
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 gerne im konkreten Anwendungsfall oder bei offenen Fragen - jetzt Kontakt mit uns aufnehmen!