Blog

Alle Artikel

Automatisieren wir das Testen: wann, warum und wer braucht es

Automatisiertes Testen vereinfacht im Gegensatz zum manuellen Testen den Prozess der Fehlererkennung mit speziellen Programmen, was Kosten und Zeit für den Testzyklus reduziert.

Mit anderen Worten, dies ermöglicht es Ihnen, in kürzerer Zeit als mit manuellem Testen ein fertiges Softwareprodukt ohne Fehler zu erhalten.

Automatisierungsaufgaben

Eines der Hauptziele bei der Einführung von Automatisierung in den Testprozess besteht darin, die Effizienz zu steigern, die Abdeckung zu erhöhen und das Testen unter Bedingungen ständiger Wiederholung von Testszenarien zu beschleunigen. Autotests können regelmäßig während der Geschäftszeiten und außerhalb der Geschäftszeiten durchgeführt werden. Im Durchschnitt benötigt ein Tester etwa einen Tag, um manuelle Tests durchzuführen, Fehler zu finden und zu registrieren. Wenn dieser Vorgang automatisiert ist, dauert dieser Vorgang Minuten und ermöglicht es Ihnen auch, Fehler im Code zu dem Zeitpunkt zu finden, zu dem er in das Quellcode-Repository eingecheckt wurde.

Automatisierung ist erforderlich, um:

  • Zeitaufwendiges manuelles Testen von Workflows und vielen Szenarien zu ersetzen
  • Fehler durch den „menschlichen Faktor“ zu beseitigen
  • Transparente Kontrolle über den Testprozess zu bieten
  • Die Kosten für wiederverwendbare Skripte zu reduzieren 
  • Genaue und zuverlässige Testergebnisse zu erhalten 
  • Die Markteinführungszeit für ein fertiges Produkt zu verkürzen 
  • Das Entwicklungsprozess (Continuous Integration) zu verbessern

Wann wird Automatisierung benötigt

Woher wissen Sie, wann es Zeit ist, Tests zu automatisieren? Wird der Return on Investment in die Automatisierung immer gerechtfertigt sein?

Wenn das Projekt groß ist, es wächst, es mehrere Subsysteme umfasst und es bereits mehrere hundert „manuelle“ Testfälle gibt, erhöht die Automatisierung die Produktivität des Testers, der nicht wochenlang Testfälle überprüft.

Nicht nur ein großes Projekt, sondern auch ein großes Team von Programmierern benötigt automatisiertes Testen, um Fehler im Zusammenspiel verschiedener Code-Module schneller zu erkennen und schnell zu beheben.

Die Automatisierung von Testprozessen ist besonders relevant, wenn das Produkt die folgenden Kriterien erfüllt:

  • Szenarien wiederholen sich regelmäßig
  • Szenarien sind zeitaufwendig, komplex und nicht für eine manuelle Überprüfung geeignet
  • Die Prüfung von Testfällen dauert lange
  • Anwendungsszenarien mit hoher Last

Autotests sind keine geeignete Alternative, wenn die Testskripte neu und nicht manuell getestet sind, die Tests ständige Änderungen erfordern und Sie das Testskript nur einmal ausführen müssen.

Was wird automatisiert

Das Endprodukt besteht aus einer Vielzahl von Funktionalitäten und Prozessen, die es zum Funktionieren bringen. Meistens werden automatisiert:

  • Backend-Prozesse und -Dienste
  • API
  • Protokollierung
  • Datenbankbetrieb
  • Häufig verwendete Optionen und Tools einer Website, Anwendung, Ressource: Registrierungsformulare, Online-Zahlungssysteme usw.
  • Das Ausfüllen von Feldern, Speichern und Prüfen
  • Validierung der Eingabedaten
  • Datenspeicherung und -integrität

Welche Arten von Tests können automatisiert werden?

Das Testen ist ein notwendiger Schritt bei der Erstellung eines Produkts. Die Automatisierung wird diesen Prozess einfacher und schneller machen. Aber nicht alle Arten von Tests müssen automatisiert werden, sondern nur solche, die auf sich wiederholenden Aktionen basieren.

Betrachten wir die Testtypen, deren Automatisierung empfohlen wird.

Leistungstests (Belastungstest, Volumentest) werden durchgeführt, um die Leistungsfähigkeit des Produkts unter möglichst realitätsnahen Bedingungen mit den zu erwartenden Belastungen und der Datenmenge zu überprüfen. Sie müssen beispielsweise den Betrieb der Seite mit viel Benutzerverkehr überprüfen, was sich auf die Ladegeschwindigkeit und den Betrieb einzelner Module auswirken kann. Leistungstest ist in erster Linie automatisiert, da manuelle Tester nicht künstlich Bedingungen schaffen können, die reale Situationen simulieren, um Codefehler zu identifizieren.

Regressionstests auf die Korrektheit der Funktionalität werden bei Diensten verwendet, die sich regelmäßig ändern (neue Builds, neue Softwareversionen). Die Aufgabe des RT besteht darin, sicherzustellen, dass neue Änderungen am Code die Software nicht beschädigen. Die RT-Automatisierung befreit den Tester vom ständigen manuellen Starten derselben Testfälle vor jeder neuen Anwendung oder jedem Software-Update. Und für den Fall, dass Sie dieselben Aktionen mit unterschiedlichen Daten ausführen müssen, können Sie mithilfe der Automatisierung eine einzige Datenbank verwenden, aus der Skripte automatisch Informationen auswählen und Tests durchführen.

Konfigurationstests werden verwendet, um die Leistung des Produkts auf verschiedenen Betriebssystemen und im Kontext von Konfigurationsänderungen zu überprüfen. Bei der Entwicklung mobiler Anwendungen können Sie mit KT den Betrieb des Produkts auf verschiedenen mobilen Geräten steuern, wobei die Größe und Auflösung des Bildschirms, Betriebssysteme, deren Versionen usw. berücksichtigt werden. Die KT-Automatisierung erfordert nicht viel Zeit für die Implementierung, beschleunigt aber gleichzeitig den Testprozess erheblich, indem Tests parallel mit verschiedenen Kombinationen von Konfigurationen (Browser – Betriebssystem – Datenbankmanagementsystem – Server) ausgeführt werden.

Lokalisierungstests sind für die Konfiguration des Produkts unter Berücksichtigung seiner Anpassung an das Land des Käufers verantwortlich – Übersetzung von Oberflächenelementen in die ausgewählte Sprache, Kontrolle der Zeitzone und des Datumsformats, Übersetzung von Texten, Tastaturlayout usw. Dazu gehören auch mehrsprachige Seiten, die im manuellen Modus nur sehr schwer und zeitaufwendig zu testen sind. Die LT-Automatisierung wird die Zeit für die Überprüfung möglicher Fehler aufgrund der Produktanpassung für verschiedene Versionen erheblich reduzieren.

Integrationstests werden für Gruppentests verwendet, die Softwaremodule, die von mehreren Programmierern erstellt wurden, kombinieren. Sie müssen beispielsweise überprüfen, wie das Warenkorbmodul in einem Online-Shop mit dem Zahlungsmodul interagiert. Darüber hinaus validiert die IT die Systemleistung in Kombination mit prozessexternen Abhängigkeiten (verwaltet und nicht verwaltet). Das Ergebnis der Automatisierung von Integrationstests ist ein zuverlässiger Schutz vor Ausfällen und ein Verzicht auf Nacharbeiten des Codes.

Es gibt viele Arten von Tests und die Wahl einer bestimmten Option hängt von den Aufgaben und dem erwarteten Ergebnis ab. Dafür wird eine Automatisierungsstrategie entwickelt.

Die Wahl einer bestimmten Strategie hängt davon ab, mit welcher Art von Projekt das Testunternehmen konfrontiert ist. Wenn kein automatisches Testen (AT) durchgeführt wurde, die genauen Ziele nicht festgelegt wurden, empfiehlt es sich, mit den Vorbereitungsphasen zu beginnen, die Auswahl der Werkzeuge sorgfältig zu überdenken und von der obersten Ebene aus zu arbeiten, ohne zu tief in die AT bestimmter Module einzutauchen.

Wenn AT bereits konfiguriert ist, Vorarbeiten geleistet wurden, Ergebnisse in Form von Testplänen und -fällen vorliegen, Werkzeuge ausgewählt wurden – dann basiert die Strategie auf einem schrittweisen Voranschreiten, das Modul für Modul automatisiert und Ziele in jeder neuen Phase aktualisiert.

Wie läuft der Testautomatisierungsprozess

Betrachten wir das Verfahren stufenweise:

Erste Stufe. Autotests werden basierend auf manuellen Tests ausgeführt, die mit validierten Skripts durchgeführt werden. Um den Prozess zu automatisieren, müssen Sie je nach Produkttyp ein Testtool auswählen: Website, mobile Anwendung, API, Software usw. Bei der Auswahl achten wir auf die Einhaltung des Budgets (wie viel das Unternehmen dafür zu zahlen bereit ist), auf die technischen Eigenschaften und die Unterstützung der im Produkt verwendeten Technologien, auf die Anforderungen an die Qualifikation der mit ihr arbeitenden Spezialisten dieses Tools und die Qualität der Berichte, die dieses Tool generiert.

Zweite Stufe. Bestimmen Sie den Umfang der Automatisierung. Die Volumina hängen davon ab, welche Produktstrategie entwickelt wird – wenn dies das Hauptprodukt ist, ist es besser, mit automatisierten Tests eine maximale Abdeckung zu gewährleisten. Wenn es sich um einen Prototypen handelt, spielt hier das Timing eine große Rolle, nicht die Qualität des Produkts.

Dritte Stufe. Wir entwickeln eine Automatisierungsstrategie und -planung. Dazu wird die Infrastruktur für die Automatisierung entworfen (die notwendigen Stände werden vorbereitet), der Zeitplan für den Start der Skripte wird genehmigt. Vor der Ausführung automatisierter Tests werden Testdaten vorbereitet. Nach Durchführung von Tests, Analyse des Testberichts und Behebung von Fehlern, werden Nachverfolgung, Korrektur und erneutes Testen durchgeführt.

Vierte Stufe. Wir bieten Tests an, um die Qualität der Automatisierung zu überprüfen. Dies ist notwendig, um die Effizienz bestehender Szenarien und Entwicklung neuer Szenarien zu verbessern.

Automatisierungstools

Die Wahl dieses oder jenes Tools hängt direkt von den Anforderungen an Testszenarien ab. In den meisten Fällen werden mehrere Tools gleichzeitig verwendet, von denen jedes seine eigene Systemarchitekturebene testet.

Bei der Auswahl spielt das Vorhandensein solcher Funktionen eine wichtige Rolle:

  • Benutzerfreundlichkeit und intuitive Benutzeroberfläche
  • Integrierte Unterstützung für die wichtigsten Testarten – Produktion, Regression, Funktional usw.
  • Einfach zu debuggen und Skriptunterstützung
  • Erstellung aussagekräftiger Prüfberichte

Es gibt eine Liste zuverlässiger und empfohlener Testtools, die den Prozess für verschiedene Produkte automatisieren.

Selenium

Selenium wurde zum Testen von Websites und Webanwendungen auf verschiedenen Betriebssystemen und Browsern entwickelt. Sein Vorteil ist, dass Tester ihre Programmiersprache zum Schreiben von Tests wählen können. Zu den wichtigsten gehören Python, Perl, PHP, Java, C # usw.

TestingWhiz

Mit diesem Tool können Sie automatisierte Tests für Webprodukte und mobile Anwendungen, Software, Datenbanken und Anwendungsprogrammierschnittstellen (API) einrichten. Unter den Tests werden Regression und Cross-Browser-Tests unterstützt.

HPE UFT

Lizenziertes Tool von Hewlett Packard. Entwickelt für Funktionstests von Softwareanwendungen. Verfügt über einen integrierten Fehlerbehandlungsmechanismus, erkennt intelligente Objekte, steuert den generierten Skripttext direkt bei Benutzeraktionen.

JMeter

Es wurde zum Testen von Webanwendungen entwickelt, aber heute ermöglicht seine Funktionalität das Ausführen von Lasttests für Verbindungen wie FTP, HTTP, JDBC, POP3, LDAP usw. Damit können Sie eine Gruppe von Anfragen von mehreren PCs gleichzeitig erstellen. Die Testergebnisse werden mit Infografiken präsentiert.

TestComplete

Eine Plattform von SmartBear Software, die für die Automatisierung von Desktop- und mobilen Produkten mit Unterstützung für die folgenden Programmiersprachen konfiguriert ist: C ++ Script, Python, C # Script, JavaScript, DelphiScript, JScript, VBScript.

TestNG

Ein Java-Testautomatisierungs-Framework, das JUnit- und NUnit-Funktionen mit neuen Funktionen und Multithread-Tests kombiniert. Dieses benutzerfreundliche Tool bietet Unterstützung für die wichtigsten Arten von Tests, einschließlich Funktionstests, Integrationstests und mehr.

Sahi

Ein Tool für automatisierte Tests von in Java und JavaScript geschriebenen mobilen Anwendungen. Die Plattform bietet integrierte Unterstützung für Frameworks wie Dojo, ExtJS, YUI usw. Eine der Funktionen ist das browserübergreifende Testen.

Ranorex

Ein benutzerfreundliches Produkt für plattformübergreifende automatisierte Tests mit Objektidentifikation und integriertem Analysesystem.

Webload

Eine hochfunktionale Testautomatisierungsplattform mit der Möglichkeit, im Fall von Cloud-Tests von Amazon EC2 zu laden. Generiert mehr als 80 Optionen (zur Auswahl) Berichte mit Infografiken.

Postman

Das Programm dient zum Erstellen und Testen des Betriebs von Anwendungsprogrammierschnittstellen (APIs) und Websites sowie zum Senden von Anfragen an den Server. Dank der grafischen Oberfläche können Sie alle notwendigen Daten für die Tests einfach konfigurieren.

Zusammenfassung

Zusammenfassend stellen wir fest, dass nicht alle Projekte eine vollständige Automatisierung benötigen. Für einige Unternehmen ist es effizienter und kostengünstiger, mit „manuellen“ Tests zu arbeiten, die durch das Schreiben zusätzlicher Skripte beschleunigt werden. In vielen Projekten wird die Automatisierung mit der fundierten Arbeit von QS-Spezialisten kombiniert.

Wenn Automatisierung erforderlich ist:

  • Bei der Entwicklung einer groß angelegten Anwendung, Software oder Website mit einem großen Funktionsumfang
  • Für langfristige Projekte
  • Bei der Implementierung von CI / CD, Herausgabe regelmäßiger Releases

Die Vorteile der Automatisierung:

  • Kostenoptimierung
  • Beschleunigung des Testprozesses
  • Verbesserung der Softwarequalität
  • Reduzierung von Zeit und Ressourcen für die Durchführung von Testfällen
  • Verbesserung der Teamleistung
  • Breite Testabdeckung
  • Unterstützung und Aktualisierung von Autotests

Automatisierung im Bereich von IT-Projekten, mit der richtigen Strategie und einem ausgewählten Spezialistenteam, zahlt sich immer aus.