Tipps und Best Practices für die Testautomatisierung

Das automatisierte Testen ist eine wichtige Testaktivität während des Softwareentwicklungszyklus, da es dem Team schnelles Feedback geben kann, wenn eine neue Funktion entwickelt wurde.

Es entlastet auch die Qualitätssicherung, wiederholt Regressionstests durchzuführen, was der Qualitätssicherung Zeit spart, sich auf andere Testaktivitäten zu konzentrieren.

Wenn die Testautomatisierung richtig durchgeführt wird, kann sie für das Team von großem Nutzen sein. Die folgenden Tipps helfen Ihnen dabei, den größtmöglichen Nutzen aus Ihrem automatisierten Testprozess und Ihrer Aktivität zu ziehen, und zeigen Fallstricke auf, die Sie vermeiden sollten, wenn Sie mit der Automatisierung Ihrer Tests beginnen.




Manuell vs Automatisiert - Testen vs Prüfen

Vermeiden Sie den Vergleich zwischen manuellen und automatisierten Tests. Sie werden beide benötigt, da jeder einen anderen Zweck erfüllt. Automatisierte Tests sind eine Reihe von Anweisungen, die von einer Person zur Ausführung einer bestimmten Aufgabe geschrieben wurden. Jedes Mal, wenn ein automatisierter Test ausgeführt wird, werden genau die gleichen Schritte wie angewiesen ausgeführt und nur nach Dingen gesucht, die überprüft werden sollen.

Andererseits ist während des manuellen Testens das Gehirn des Testers beschäftigt und kann andere Fehler im System erkennen. Die Testschritte müssen nicht jedes Mal gleich sein, da der Tester die Flüsse während des Tests ändern kann. Dies gilt insbesondere für Erkundungstests.




Regressionstests automatisieren

Der Hauptgrund, warum Sie einen Test automatisieren möchten ist, dass Sie den Test bei jeder neuen Version wiederholt ausführen möchten. Wenn der Test nur einmal ausgeführt werden muss, kann der Aufwand zur Automatisierung des Tests die Vorteile überwiegen.



Regressionstests müssen wiederholt ausgeführt werden, wenn sich die zu testende Software weiterentwickelt. Dies kann sehr zeitaufwändig und eine langweilige Aufgabe für die Qualitätssicherung sein, jeden Tag Regressionstests durchführen zu müssen. Regressionstests sind gute Kandidaten für die Testautomatisierung.



Entwerfen Sie Tests, bevor Sie sie automatisieren

Es wird immer empfohlen, die Testfälle und -szenarien zu erstellen, bevor Sie mit der Automatisierung der Tests beginnen. Es ist das gute Testdesign, das bei der Identifizierung von Fehlern helfen kann. Automatisierte Tests führen nur das Testdesign aus.

Die Gefahr beim direkten Wechsel zur Automatisierung besteht darin, dass Sie nur daran interessiert sind, das Skript zum Laufen zu bringen und normalerweise nur positive und glückliche Ablaufszenarien zu automatisieren, anstatt über die anderen möglichen Szenarien nachzudenken, die getestet werden können.


Reduzieren Sie auch nicht den Testumfang, nur um den Test zum Laufen zu bringen oder zu bestehen.



Entfernen Sie die Unsicherheit aus automatisierten Tests

Einer der wichtigsten Punkte beim automatisierten Testen ist die Fähigkeit, konsistente Ergebnisse zu liefern, damit wir sicher sein können, dass tatsächlich etwas schief gelaufen ist, wenn ein Test fehlschlägt.

Wenn ein automatisierter Test in einem Lauf erfolgreich ist und im nächsten Lauf fehlschlägt, ohne dass Änderungen an der zu testenden Software vorgenommen wurden, können wir nicht sicher sein, ob der Fehler auf die Anwendung oder auf andere Faktoren zurückzuführen ist, z. B. auf Probleme mit der Testumgebung oder auf Probleme in der Testcode selbst.

Wenn es Fehler gibt, müssen wir die Ergebnisse analysieren, um festzustellen, was schief gelaufen ist. Wenn wir viele inkonsistente oder falsch positive Ergebnisse haben, verlängert sich die Analysezeit.


Haben Sie keine Angst, instabile Tests aus Regressionspaketen zu entfernen. Streben Sie stattdessen nach konsistenten, sauberen Ergebnissen, auf die Sie sich verlassen können.



Überprüfen Sie die automatisierten Gültigkeitstests

Sie werden alarmiert sein über die schiere Anzahl veralteter automatisierter Tests, prüfen Sie einfach nichts oder überprüfen Sie nicht die wichtigsten Überprüfungen!

Dies könnte ein Symptom dafür sein, direkt zur Automatisierung zu springen, ohne vorher genügend Zeit damit zu verbringen, zu planen, was zu tun ist, und gute Testszenarien zu entwerfen.

Lassen Sie die automatisierten Tests immer von einem Kollegen auf Gültigkeit und Vernunft überprüfen. Stellen Sie sicher, dass die Tests auf dem neuesten Stand sind.




Automatisieren Sie keine instabilen Funktionen

Während der Entwicklung eines neuen Features oder einer neuen Funktion können viele Dinge schief gehen, und selbst das Feature ist möglicherweise nicht mehr anwendbar, da das Unternehmen seine Meinung geändert hat.

Wenn Sie während der Entwicklung des Features mit der Automatisierung von Tests begonnen haben, müssen die Tests im Verlauf der Weiterentwicklung des Features mehrmals aktualisiert werden. Der Versuch, mit allen Änderungen Schritt zu halten, kann ziemlich entmutigend sein. Und wenn die Funktion nicht mehr anwendbar ist, wird all dieser Aufwand für die Testautomatisierung verschwendet.

Daher ist es immer am besten, ein Feature zu automatisieren, sobald es stabilisiert wurde und weniger Änderungen unterworfen ist.



Erwarten Sie keine Magie von der Testautomatisierung

Der Hauptgrund für die Testautomatisierung besteht darin, QS-Zeit für interessante Erkundungstests freizugeben und dem Team das Vertrauen zu geben, dass die Anwendung bei der Bereitstellung neuer Änderungen noch in gutem Zustand ist.


Erwarten Sie nicht, dass die Automatisierung viele Fehler findet . Tatsächlich ist die Anzahl der durch die Automatisierung gefundenen Fehler immer viel geringer als bei manuellen und explorativen Tests.



Verlassen Sie sich nicht nur auf die Automatisierung - bestehen Sie keine Tests

Automatisierte Regressionstests können dem Team ein Gefühl des Vertrauens vermitteln, da Regressionstests immer noch bestehen sollten, wenn neue Funktionen bereitgestellt werden. Das Team verlässt sich auf die Tests und verfügt über eine gute Reihe von Regressionstests, die als Sicherheitsnetz dienen können.

Beachten Sie jedoch, dass nicht alle Tests automatisiert sind oder automatisiert werden können. Begleiten Sie daher automatisierte Tests immer mit Erkundungstests.

Manchmal sollte eine Änderung in der Software einen Test nicht bestehen. Wenn jedoch alle Tests bestanden wurden, bedeutet dies, dass der Fehler übersehen wurde und der Fehler unbemerkt blieb, da kein Aufruf zum Handeln bestand.



Schnelles Feedback anstreben

Schnelles Feedback ist eines der Ziele automatisierter Tests, da Entwickler gerne wissen möchten, ob das, was sie entwickelt haben, funktioniert und die aktuelle Funktionalität nicht beeinträchtigt hat.

Um diese schnelle Rückkopplungsschleife zu erhalten, müssen die Tests auf Komponenten- oder API-Ebene automatisiert werden, ohne auf die Benutzeroberfläche angewiesen zu sein.

Tests, die auf der Benutzeroberfläche ausgeführt werden, sind viel langsamer und aufgrund von Änderungen an der Benutzeroberfläche fehleranfällig. Mit anderen Worten, die Funktionalität funktioniert weiterhin wie erwartet, aber die Tests schlagen aufgrund von Änderungen in der Benutzeroberfläche fehl. Daher können die Tests unzuverlässig werden.



Verstehe den Kontext

Tests können auf jeder Ebene, Einheit, API, Service, GUI automatisiert werden. Jede Schicht dient einem anderen Testzweck.
Unit Tests stellen sicher, dass der Code auf Klassenebene funktioniert, kompiliert wird und die Logik den Erwartungen entspricht. Tests auf dieser Ebene sind eher eine Verifizierung als eine Validierung.

API-Tests oder Integrationstests stellen sicher, dass eine Reihe von Funktionen und Klassen zusammenarbeiten und Daten von einer Klasse an eine andere übergeben werden können.

GUI-Tests hingegen testen Benutzerströme und -reisen. Im Allgemeinen würden wir die Funktionalität nicht über die Benutzeroberfläche testen. Dies sollte in unteren Schichten erfolgen.

Der Hauptzweck von UI-Tests besteht darin, sicherzustellen, dass das gesamte System gemäß einigen gängigen Benutzerszenarien und Anwendungsfällen funktioniert. Das Testen auf dieser Ebene ist eher eine Validierung als eine Verifizierung

Auf UI-Ebene automatisieren wir eher Szenarien als Storys.



Automatisieren Sie nicht jeden Test

Eine 100% ige Testabdeckung ist nicht möglich, da es Millionen von Kombinationen geben kann. Wir führen immer eine Teilmenge möglicher Tests durch. Das gleiche Prinzip gilt für automatisierte Tests.

Das Erstellen eines automatisierten Skripts erfordert Zeit und Mühe. Um jeden Test zu automatisieren, benötigen wir viel Ressourcen und Zeit, was in vielen Fällen nicht möglich ist.

Verwenden Sie stattdessen einen risikobasierten Ansatz, um zu bestimmen, welche Tests automatisiert werden sollen. Um den größtmöglichen Nutzen aus der Automatisierung zu ziehen, automatisieren Sie nur die wichtigsten Geschäftsfälle und -szenarien.

Eine hohe Anzahl automatisierter Tests erhöht die Wartungskosten und ist schwierig zu warten.

Ein weiterer zu beachtender Hinweis ist, dass nicht alle Tests automatisiert werden können. Einige Tests sind sehr komplex und erfordern viele nachgeschaltete Systemprüfungen und können inkonsistent sein. In diesen Fällen ist es am besten, diese Überprüfungen für manuelle Tests zu belassen.



Verwenden Sie Testtechniken in der Testautomatisierung

Die Testtechniken, die Sie in ISTQB gelernt haben, dienen nicht nur dem manuellen Testen. Sie gelten auch für automatisierte Tests. Techniken wie die Grenzwertanalyse, die Äquivalenzpartitionierung, das Testen von Zustandsübergängen und das paarweise Testen können beim automatisierten Testen viele Vorteile bieten.



Automatisieren Sie das Chaos nicht

Um Ihre automatisierten Tests optimal nutzen zu können, sollte ein guter QS-Prozess vorhanden sein. Wenn der QS-Prozess chaotisch ist und wir diesem Chaos automatisierte Tests hinzufügen, erhalten wir nur ein schnelleres Chaos.

Versuchen Sie, Fragen zu beantworten wie: Was ist zu automatisieren? Wann automatisieren? , Wann werden die automatisierten Tests ausgeführt? Wer soll die Tests automatisieren? Welche Tools sollten für die Testautomatisierung verwendet werden?

Diese Tipps stammen hauptsächlich aus der Erfahrung als Automatisierungstester und einigen bewährten Methoden, gefolgt von anderen.

Haben Sie Tipps zur Testautomatisierung, die dieser Liste hinzugefügt werden sollen?