Was ist Testautomatisierung? - Einfach und klar erklärt.

Es gibt es zwei Arten von Software-Tests: manuelle und automatisierte. Manuelle Tests, wie beispielsweise Entdeckungstests oder Usability-Tests sind von unschätzbarem Wert. Regressionstests und Funktionstests wiederum werden meist für die Automatisierung in Betracht gezogen. Wir sagen Ihnen warum. 
In der Welt der IT gibt es zwei Arten von Tests: manuelle und automatisierte. Einige Arten von manuellen Tests, wie z. B. Entdeckungstests oder Usability-Tests sind von glaublich wichtig. Andere Arten von Tests - wie z.B. Regressionstests oder Funktionstests - können manuell durchgeführt werden, aber es ist eine ziemlich verschwenderische Praxis, immer wieder dasselbe zu tun. Es sind diese sich immer wiederholenden Tests, die sich für die Testautomatisierung ideal eignen.

Kriterien für die Automatisierung

Ein Test muss einige Kriterien erfüllen, um automatisiert zu werden. Andernfalls kostet er möglicherweise mehr als er spart. Ein wichtiges Ziel der Automatisierung ist es schließlich, Zeit, Mühe und Geld zu sparen. Hier sind einige allgemeine Kriterien für die Testautomatisierung. Das sind wohlgemerkt Ausgangspunkte. Ihre Kriterien können je nach Ihren Umständen unterschiedlich sein.

Wiederholbar
Der Test muss wiederholbar sein. Es macht keinen Sinn, einen Test zu automatisieren, der nur einmal ausgeführt werden kann. Ein wiederholbarer Test besteht aus den folgenden drei Schritten:

  1. Richten Sie den Test einschließlich Daten und Umgebung ein.
  2. Führen Sie die Funktion aus und messen Sie das Ergebnis.
  3. Bereinigen Sie die Daten und die Umgebung.

Im ersten Schritt wollen wir die Umgebung in einen konsistenten Zustand versetzen können. Mit anderen Worten, wenn wir einen Test für den Versuch haben, einen vorhandenen Benutzer hinzuzufügen, müssen wir sicherstellen, dass der Benutzer vorhanden ist, bevor wir den Test durchführen. Nach Abschluss des Tests sollte die Umgebung in den Basiszustand zurückversetzt werden.

Bestimmend
Wenn eine Funktion bestimmend ist, bedeutet dies, dass das Ergebnis jedes Mal das gleiche ist, wenn sie mit derselben Eingabe ausgeführt wird. Gleiches gilt für automatisierbare Tests. Angenommen, wir möchten eine Additionsfunktion testen. Wir wissen, dass 1 + 1 = 2 und 394,19 + 5,81 = 400,00. Die Addition ist eine bestimmende Funktion.

Software hingegen verwendet möglicherweise eine so hohe Anzahl variabler Eingaben, dass es schwierig ist, im Laufe der Zeit das gleiche Ergebnis zu erzielen. Einige Variablen können sogar zufällig sein, was es schwierig machen kann, das spezifische Ergebnis zu bestimmen. Das Software-Design kann dies kompensieren, indem Testeingaben über einen Testkabelbaum ermöglicht werden.

Andere Merkmale einer Anwendung können additiv sein; Wenn Sie beispielsweise einen neuen Benutzer erstellen, erhöht sich die Anzahl der Benutzer. Zumindest wenn wir einen Benutzer hinzufügen, wissen wir, dass die Anzahl der Benutzer nur um eins wachsen sollte. Das parallele Ausführen von Tests kann jedoch zu unerwarteten Ergebnissen führen. Isolation kann diese Art von falschem Positiv verhindern.

Nicht geäußert
Sie können Meinungsfragen nicht automatisieren. Hier leuchten Usability-Tests, Beta-Tests usw. wirklich. Benutzerfeedback ist wichtig, kann aber nicht automatisiert werden. Entschuldigung!

Bei der Testautomatisierung werden Tests automatisch ausgeführt, Testdaten verwaltet und Ergebnisse zur Verbesserung der Softwarequalität verwendet. Es handelt sich in erster Linie um eine Qualitätssicherungsmaßnahme, zu deren Aktivitäten jedoch das Engagement des gesamten Software-Produktionsteams gehört. Von Geschäftsanalysten über Entwickler bis hin zu DevOps-Ingenieuren müssen alle einbezogen werden, um die Testautomatisierung optimal nutzen zu können.

In diesem Beitrag erhalten Sie ein umfassendes Verständnis dafür, worum es bei der Testautomatisierung geht. Es gibt alle Arten von Tests, aber nicht alle sollten automatisiert werden. Beginnen wir daher mit allgemeinen Kriterien für die Testautomatisierung.

Arten von automatisierten Tests

Es gibt so viele Arten von Tests, von denen viele automatisiert werden können, dass wir sie nicht alle in einem Beitrag zusammenfassen können. Aber hier sind genug, um Ihnen einen guten Ausgangspunkt zu geben.

Code-Analyse
Es gibt tatsächlich viele verschiedene Arten von Code-Analyse-Tools, einschließlich statischer Analyse und dynamischer Analyse. Einige dieser Tests suchen nach Sicherheitslücken, andere prüfen auf Stil und Form. Diese Tests werden ausgeführt, wenn ein Entwickler Code eincheckt. Abgesehen von der Konfiguration von Regeln und der Aktualisierung der Tools gibt es mit diesen automatisierten Tests nicht viel zu schreiben.

Unit Tests
Sie können auch eine Unit-Test-Suite automatisieren. Unit-Tests dienen dazu, eine einzelne Funktion oder Einheit des Betriebs isoliert zu testen. Sie werden normalerweise auf einem Build-Server ausgeführt. Diese Tests hängen nicht von Datenbanken, externen APIs oder Dateispeicher ab. Sie müssen schnell sein und dienen nur zum Testen des Codes, nicht der externen Abhängigkeiten.

Integrationstests
Integrationstests sind eine andere Art von Tier, wenn es um Automatisierung geht. Da ein Integrationstest - manchmal auch als End-to-End-Test bezeichnet - mit externen Abhängigkeiten interagieren muss, ist die Einrichtung komplizierter. Oft ist es am besten, gefälschte externe Ressourcen zu erstellen, insbesondere wenn Sie mit Ressourcen arbeiten, die außerhalb Ihrer Kontrolle liegen.

Wenn Sie beispielsweise über eine Logistik-App verfügen, die von einem Webdienst eines Anbieters abhängt, schlägt Ihr Test möglicherweise unerwartet fehl, wenn der Dienst des Anbieters nicht verfügbar ist. Bedeutet das, dass Ihre App kaputt ist? Möglicherweise, aber Sie sollten genügend Kontrolle über die gesamte Testumgebung haben, um jedes Szenario explizit zu erstellen. Verlassen Sie sich niemals auf einen externen Faktor, um das Ergebnis Ihres Testszenarios zu bestimmen.

Automatisierte Abnahmetests
Heutzutage gibt es mehrere Praktiken, die automatisierte Abnahmetests (AAT) verwenden, aber im Grunde tun sie dasselbe. Die verhaltensgesteuerte Entwicklung (BDD) und die automatisierte akzeptanztestgesteuerte Entwicklung (AATDD) sind ähnlich. Beide folgen der gleichen Vorgehensweise beim Erstellen des Abnahmetests, bevor die Funktion entwickelt wird.

Am Ende wird der automatisierte Abnahmetest ausgeführt, um festzustellen, ob die Funktion die vereinbarten Ergebnisse liefert. Daher ist es für Entwickler, Unternehmen und Qualitätssicherung wichtig, diese Tests zusammen zu schreiben. Sie dienen in Zukunft als Regressionstests und stellen sicher, dass die Funktion den Erwartungen entspricht.

Regressionstests
Ohne AATs müssen Sie nachträglich Regressionstests schreiben. Während beide Formen von Funktionstests sind, ist die Art und Weise, wie sie geschrieben werden, wann sie geschrieben werden und von wem sie geschrieben werden, sehr unterschiedlich. Wie AATs können sie über eine API per Code oder einer Benutzeroberfläche gesteuert werden. Es gibt Tools zum Schreiben dieser Tests über eine GUI.

Leistungstests
Es gibt viele Arten von Leistungstests, aber alle testen einen Aspekt der Leistung einer Anwendung. Wird es extremem Druck standhalten? Testen wir das System auf hohe Hitze? Ist es eine einfache Reaktionszeit unter Last, nach der wir suchen? Wie wäre es mit Skalierbarkeit?

Manchmal erfordern diese Tests die Emulation einer großen Anzahl von Benutzern. In diesem Fall ist es wichtig, eine Umgebung zu haben, die in der Lage ist, eine solche Leistung zu erbringen. Für diese Art von Tests stehen Cloud-Ressourcen zur Verfügung. Es können jedoch auch lokale Ressourcen verwendet werden.

Rauchtests
Was ist ein Rauchtest? Dies ist ein grundlegender Test, der normalerweise nach einem Bereitstellungs- oder Wartungsfenster durchgeführt wird. Mit einem Rauchtest soll sichergestellt werden, dass alle Dienste und Abhängigkeiten betriebsbereit sind. Ein Rauchtest ist kein vollständiger Funktionstest. Es kann als Teil einer automatisierten Bereitstellung ausgeführt oder durch einen manuellen Schritt ausgelöst werden.

Das Fazit

Das Fazit lautet: Testautomatisierung hilft, die Qualität mit Geschwindigkeit zu verbessern. Es können jedoch nicht alle Tests automatisiert werden. Es ist definitiv eine Investition erforderlich. Bei so vielen Arten von Tests ist es wichtig, dass Sie die richtige Mischung erhalten. Die Testpyramide ist eine einfache Faustregel, um dies richtig zu machen. Die meisten Tests sollten Unit-Tests sein, gefolgt von Servicetests und UI-Tests.

Ein Testautomatisierungssystem koordiniert Testprobleme, einschließlich der Verwaltung von Testdaten, der Ausführung von Tests und der Verfolgung von Ergebnissen. Die Testautomatisierung ist der nächste Schritt für Teams, die von der Last überwältigt werden, dieselben manuellen Tests zu wiederholen, die automatisiert werden sollten.

Biografie des Autors: Dieser Beitrag wurde von Phil Vuollet verfasst. Phil verwendet Software zur Automatisierung von Prozessen, um die Effizienz und Wiederholbarkeit zu verbessern. Er schreibt über technologie- und wirtschaftsrelevante Themen, hält gelegentlich Vorträge zu denselben Themen und ist ein Familienvater, der gerne mit seinen Kindern Fußball und Brettspiele spielt.