Home » Automatisiertes Testen von Software: Vor- und Nachteile
In unseren letzten Blogbeiträgen zum Thema Software-Testing ging es eher um Testen im Allgemeinen sowie um das Thema Testen und KI.
Heute widmen wir uns den automatisierten Tests.
Das Testen von Software ist ein Teil des Entwicklungsprozesses und dient dazu, die Software auf verschiedene Mängel zu prüfen und diese zu beseitigen. Es gibt eine Vielzahl von hilfreichen Tools, mit welchen das Testing manuell oder auch automatisiert durchgeführt werden kann.
Das Testen von Software ist eine wichtige Phase im gesamten Zyklus der Softwareentwicklung und sollte kontinuierlich durchgeführt werden, idealerweise werden die Software-Tester von Beginn an in den Entwicklungsprozess integriert. Aufgrund ihrer Erfahrung können so gängige Fehler in der Entwicklung direkt vermieden werden.
Nur wenn der Kunde eine Lösung erhält, die weitestgehend frei von Bugs ist, aus Usabilitysicht einwandfrei nutzbar ist und keine Ausfälle zu erwarten sind, wird er mit der Software zufrieden sein. Aus diesem Grund arbeiten bei VIALUTIONS die Software-Tester und die Entwickler eng zusammen.
Beim manuellen Testen führen Menschen die Tests ohne den Einsatz von Automatisierungstechologien Schritt für Schritt selbst durch, wohingegen man beim automatisierten Testen Tools und Scripte verwendet, um Tests wiederholt und automatisiert durchzuführen.
Dadurch kann man beispielsweise die monotone und repetitive Arbeit des “Durchklickens” durch eine Software oder App vom Computer erledigen lassen. Statt das der Tester selbst die Software öffnet, sich z.B. anmeldet oder eine Webseite öffnet, wird dies vom jeweiligen Tool erledigt, welches wiederum einer Liste an vorher festgelegten Instruktionen folgt. Beispiele für solche Instruktionen können sein: “Finde den Login Button.”, “Gib Passwort xy ein.”, “Klicke auf den Einloggen Button” usw.
Die großen Vorteile der automatisierten Tests liegen in der Geschwindigkeit, der Effizienz und der Genauigkeit. Unser Tester Bernhard bringt es wie folgt auf den Punkt:
“Der Computer wird nicht müde, sich immer wieder durch die gleichen Schritte zu klicken, weil er noch keinen Kaffee hatte. Außerdem erledigt er die meisten Aufgaben wesentlich schneller, als ein Mensch das könnte.”
Tester können müde werden oder unkonzentriert sein, was zu übersehenen Fehlern oder inkonsistenten Ergebnissen führen kann. Zudem ermöglichen es Automatisierungstechnologien, Tests statt mit wenigen mit hunderten Stichproben durchzuführen. Dies führt zu einem großen Gewinn bei der Skalierung. Die Automatisierung eignet sich besonders für Regressionstests, bei welchen dieselben Testfälle immer wieder ausgeführt werden müssen. Automatisierte Tests können zudem auf mehreren Plattformen, Geräten und Browsern gleichzeitig ausgeführt werden, was manuell sehr zeitaufwendig wäre.
Nachteile können sich bei der Genauigkeit der Tests ergeben. Möchte man beispielsweise eine SharePoint-Seite testen, dann ist der ganze Test vom externen Dienst und dessen Geschwindigkeit abhängig. Wenn dieser für eine Antwort einmal willkürlich länger benötigt, können automatisierte Tests ohne zunächst ersichtlichen Grund und unnötig abgebrochen werden. Daraufhin müssen Toleranzen für die Tests angepasst werden, was sich wiederum negativ auf die Geschwindigkeit auswirkt.
Eine weitere Einschränkung ergibt sich in der Abdeckung: Nicht alle Testfälle lassen sich sinnvoll automatisieren, z.B. Usability-Tests oder Tests, die menschliche Intuition erfordern. Manuelle Tester können spontan auf Änderungen oder unerwartetes Verhalten der Software reagieren und explorative Tests durchführen. Für kleine Projekte oder neue Software, die sich schnell ändert, kann manuelles Testen eine praktikable und kosteneffiziente Lösung sein.
Anders gesagt: automatisiertes Testen ist sehr sinnvoll für positive Testfälle, welche die Funktionalität nachweisen (“Happy Path Testing”), doch negative Testfälle sind schwerer abzubilden.
Wichtig beim automatisierten Testen ist vor allem, dass alles, was man testen lässt, deterministisch ist. Wenn man zum Beispiel 20 Mal 1:1 dieselben Schritte in einer festgelegten Reinfolge durchläuft , wird einem in der Regel 20x dasselbe Ergebnis geliefert.. Dies ist bei normaler Software normalerweise selbstverständlich, aber bei Webseiten, die von externen Diensten abhängig sind oder bestimmten Arten von Spielen kann dies wiederum alles andere als gegeben sein.
Auch bei der Wahl der Test-Software gibt es Eigenschaften, die in Erwägung gezogen werden sollten. So ist es zum Beispiel für das Debugging der Tests sehr hilfreich, wenn die Software dem Tester die Möglichkeit gibt, den vollzogenen Test wie ein Video “Bild für Bild” Vor- und Zurückspulen zu können, um zu sehen und zu verstehen, warum ein Test nicht das Ergebnis geliefert hat, dass man erwartet hat. Diese Funktion erfordert aber unweigerlich, dass die Software nach jedem Schritt einen “Snapshot” der gesamten Seite macht, damit sie den Zustand zu jedem Zeitpunkt im Test wiederherstellen und einem das Vor- und Zurückspulen ermöglichen zu kann.
Beim Testen von Webseiten in Isolation oder einzelner Komponenten ist dies normalerweise kein Problem. Wenn aber eine Seite von externen Diensten abhängig ist und die Test-Software keine Option bietet, deren statischen Inhalt aus den Snapshots auszuschließen, kann es passieren, dass der benötigte Arbeitsspeicher den verfügbaren schnell übersteigt und man gezwungen ist, diese Funktion zu deaktivieren.
Besonderheiten wie diese sollten beim Wählen der Test-Software berücksichtigt werden, denn nur weil eine Test-Software “Industrie Standard” ist, muss das noch nicht bedeuten, dass sie auch für jeden Anwendungsfall passt.
Denn am Ende des Tages hilft es den Testern nicht, wenn die Software eine 50/50 Chance hat beim Testen zu scheitern, einfach nur weil der Speicherverbrauch mal wieder überschritten wurde. Hier wäre eine Alternative ohne “Vor- und Zurückspielen” mit gewährleisteter Stabilität eine begründete Wahl.
Automatisiertes Testen eignet sich besonders gut für große, komplexe Projekte, die häufige Regressionstests und schnelle Release-Zyklen erfordern. Manuelles Testen ist hingegen besser geeignet für kleinere Projekte, explorative Tests oder Bereiche, in denen menschliche Intuition und Erfahrung wichtig sind. In der Praxis nutzen viele Teams eine Kombination aus beiden Ansätzen, um die Vorteile beider Methoden zu maximieren.
Sie wollen mehr wissen? Kontaktieren Sie uns gerne!