Testowanie automatyczne-poznaj 9 kroków do stworzenia framework'a

9 Schritte zur Erstellung eines optimalen Rahmens für die Testautomatisierung

/ 05.08.2024 Qualitätssicherung (QA)

Wenn Sie auf diesem Artikel gelandet sind, ist Ihnen wahrscheinlich schon geläufig, dass eine effektive Testautomatisierung kein Luxus mehr ist, sondern unerlässlich für die Softwareentwicklung. Da die Anwendungen immer komplexer und umfangreicher werden, wird der Bedarf an effizienten, wiederholbaren und zuverlässigen Tests immer wichtiger. 

Praktisch jeder hat von dem von CrowdStrike am 19. Juli 2024 veröffentlichten Update gehört, das 8,5 Millionen Windows-Computer lahmlegte. Die Ursache war eine Testsoftware, die Inhaltsupdates, die an Millionen von Computern gesendet wurden, nicht korrekt prüfte. Welche Lehren lassen sich daraus für das Testen neuer Patches für kritische Software ziehen?   

Konstantin Klyagin, Gründer der Softwareunternehmen Redwerk und QAwerk, sagte in einer Presseerklärung:  

„Automatisierte Tests stellen sicher, dass selbst kleine Änderungen keine neuen Fehler einbringen. Dies ist besonders wichtig für größere Updates wie CrowdStrike, bei denen manuelle Tests allein nicht ausreichen würden.”  

Um eine solche Situation zu verhindern, betonte Tom Warren (leitender Redakteur und Autor von Notepad, der seit über zwanzig Jahren über alles rund um Microsoft, PC und Technologie berichtet), dass CrowdStrike verspricht, seine Rapid Response Content-Tests zu verbessern. Es wird lokale Entwicklertests, Inhaltsaktualisierungstests und Rollback-Tests sowie Lasttests, Fuzzing und Fault Injection einsetzen. CrowdStrike wird auch Stabilitäts- und Inhaltsschnittstellentests für Rapid Response Content durchführen. 

Überraschenderweise haben jedoch viele Unternehmen diesen Ansatz noch nicht in ihrer Produktionsumgebung umgesetzt.   

Warum ist eine detaillierte Testautomatisierungsstrategie so wichtig? In diesem Artikel konzentrieren wir uns auf das Erstellen eines geeigneten Testautomatisierungsrahmens als Teil einer QA-Strategie. 

Aber lassen Sie uns zunächst einige grundlegende Begriffe klären. 

Was ist Testautomatisierung? 

Testautomatisierung bedeutet, Testwerkzeuge zu konfigurieren, Tests durchzuführen, Ergebnisse zu sammeln und sie mit den Erwartungen zu vergleichen. Dazu gehören auch die Gestaltung der Architektur und die Wahl des richtigen Frameworks.  

Automatisierung können zu jeder Tageszeit auf verschiedenen Hardware- oder Softwareplattformen und in unterschiedlichen Umgebungen durchgeführt werden und liefern die gleichen Ergebnisse. Ihr Hauptzweck besteht darin, manuelle Tester von der Durchführung sich wiederholender Aufgaben zu entlasten und sicherzustellen, dass kritische Bereiche der Anwendung in Echtzeit geprüft werden

Testautomatisierungs-Tools können: 

  • Datensätze vorbereiten, 
  • die erwarteten Ergebnisse mit den tatsächlichen Ergebnissen während der Tests zu vergleichen, 
  • Testergebnisse aufzeichnen und für später speichern.  

Testautomatisierung kann den gesamten SDLC abdecken, von Unit-Tests über Integrationstests bis hin zu System- und Akzeptanztests. 

Die folgende Abbildung zeigt die „Testpyramide” als wesentliches Konzept der Softwareentwicklung. Sie hilft bei der Erstellung einer automatisierten Teststruktur, um effektive und effiziente Softwaretests zu gewährleisten. Die Pyramide zeigt die Arten von Tests, ihre Bedeutung und das Gleichgewicht zwischen ihnen. 

test automatisierung_test piramide

Unit-Tests sind die Basis der Pyramide. Sie testen einzelne Komponenten oder Funktionen isoliert und konzentrieren sich in der Regel auf die kleinsten Teile des Codes (z. B. Funktionen, Methoden). Sie sind schnell auszuführen, einfach zu schreiben und zu pflegen und helfen, Fehler frühzeitig im Entwicklungsprozess zu finden. 

Integrationstests konzentrieren sich auf die Interaktionen zwischen verschiedenen Komponenten oder Systemen. Im Vergleich zu Unit-Tests sind Integrationstests weniger, komplexer und können externe Abhängigkeiten wie Datenbanken oder Dienste von Drittanbietern beinhalten. 

End-to-End-Tests: E2E-Tests, die sich an der Spitze der Pyramide befinden, simulieren reale Benutzerszenarien und testen die Anwendung als Ganzes. Mit diesen Tests wird überprüft, ob das gesamte System, einschließlich der Benutzeroberfläche, des Backends und der Datenbanken, wie vom Benutzer erwartet funktioniert. Sie sind am komplexesten und haben die längste Ausführungszeit. 

9 Schritte zur Erstellung eines robusten Testautomatisierungsrahmens  

Der Entwurf einer Testautomatisierungsumgebung umfasst mehrere Schritte, von der Festlegung des Umfangs und der Auswahl der Tools bis hin zur Implementierung und Wartung. Im Folgenden erörtern wir die entscheidenden Schritte. 

1. Definition des Umfangs und der Ziele 

Definition der Ziele: Der erste Schritt beim Erstellen der Testautomatisierung besteht darin, zu entscheiden, welche Tests automatisiert werden sollen. Dazu sollten Kriterien festgelegt werden (z. B. schnelleres Feedback, bessere Testabdeckung), die von den Anforderungen des Unternehmens abhängen. 

Es ist auch wichtig zu erwähnen, dass wir nicht immer Tests automatisieren. Dies hängt von vielen Faktoren ab, wie z. B. dem Budget, der Zeit oder der Umgebung. 

Automatisierung sollte immer in eine umfassende Produktteststrategie integriert werden. Dieser einheitliche Ansatz rationalisiert die QS-Aktivitäten und gewährleistet Konsistenz und Effizienz im Entwicklungsprozess. Eine Strategie für automatisierte Tests definiert Schlüsselbereiche wie Zweck, Testebenen, Testarten, Tools, Umfang und Testumgebung. 

2. Die richtigen Tools wählen 

Bewerten Sie Ihre Optionen: Berücksichtigen Sie Faktoren wie die Projektanforderungen, die Erfahrung des Teams und das Technologiepaket. Zur Festlegung des Testumfangs gehört auch die Entscheidung über die Testumgebungen, Plattformen und Geräte, die für die Automatisierung verwendet werden sollen. 

Wahl des Rahmens: Wählen Sie die geeigneten Tools für jede Art von Tests (z.B., Selenium für UI-Tests, Appium für mobile Anwendungen). Die Frameworks sollten in erster Linie: 

  • Kompatibel mit dem Technologiestapel sein,  
  • einfach zu bedienen und viele Arten von Tests unterstützen, 
  •  durch die Community und der Dokumentation supportet werden.  

Hier sind einige der beliebtesten Frameworks für die Testautomatisierung in verschiedenen Kategorien: 

Testautomatisierung - beliebte Werkzeuge

3. Die Architektur des Frameworks entwerfen. 

Die Architektur umfasst die Konfiguration von Testumgebungen, die Integration mit CI/CD und die Auswahl von Testautomatisierungstools. Eine gute Architektur gewährleistet die Skalierbarkeit, Wartbarkeit und Leistung der automatisierten Tests. 

  • Modularer Aufbau: Organisieren Sie Tests und Komponenten auf modulare Weise, um die Wiederverwendbarkeit und Wartbarkeit zu erhöhen.  
  • Ebenen der Abstraktion: Umfasst die Schaffung verschiedener Ebenen wie z. B.:  

 – Die Testebene ist der Ort, an dem sich die eigentlichen Testfälle befinden. 

 – Eine Geschäftslogikschicht, die Methoden zur Durchführung von Aktionen in der Anwendung enthält.  

 – Page Object Model (POM), das Webseiten als Objekte darstellt. 

4. Konfigurieren der Umgebung 

Die Testumgebung sollte die Produktionsumgebung imitieren. Sie umfasst Hardware-, Software-, Netzwerk- und Datenkonfigurationen.  

  • Zur Verwaltung der Codebasis wird ein Versionskontrollsystem (z. B. Git) verwendet. 
  • Integration mit CI/CD-Tools (z. B. Jenkins, GitLab CI) für kontinuierliche Tests.  
  • Implementierung einer Strategie zur Verwaltung von Testdaten mit Hilfe von Datenbanken oder Datendateien. 

5. Implementieren des Testrahmens 

  • Erstellen Sie eine Projektstruktur, die von einem Projekt zum anderen übertragen werden kann und einfach zu verwenden ist. 
  • Implementieren Sie Dienstleistungsklassen für allgemeine Aktivitäten wie Protokollierung, Konfigurationsverarbeitung usw.  
  • Entwickeln Sie die grundlegenden Komponenten, wie z. B.: 

 – Konfigurieren Sie die Konfigurationsdateien für umgebungsspezifische Einstellungen.  

 – Einführung der Initialisierung und Entfernung von Treibern (für Selenium/Appium).  

 – Erstellen Sie eine Basisklasse, die von anderen Testklassen erweitert werden kann. 

6. Testfälle erstellen und organisieren  

  • Schreiben von Testskripten auf der Grundlage identifizierter Testszenarien.  
  • Verwenden Sie POM (Page Object Model), um Webseitendetails aus Testskripten zu extrahieren. 
  • Test mit mehreren Datensätzen 

7. Berichterstattung und Protokollierung einführen 

  • Integration von Berichtswerkzeugen (z. B. Allure, Extent Reports) zur Erstellung detaillierter Testberichte.  
  • Implementierung von Protokollierungsmechanismen, um detaillierte Informationen über Testläufe zu erhalten (z. B. Log4j). 

8. Prüfung und Validierung durchführen  

  • Führen Sie lokale Tests durch, um sicherzustellen, dass sie wie erwartet funktionieren. 
  • Konfigurieren Sie Tests so, dass sie im Rahmen der kontinuierlichen CI/CD-Integration automatisch ausgeführt werden.  
  • Identifizieren und beheben Sie alle Probleme und optimieren Sie die Tests hinsichtlich Stabilität und Leistung. 

9. Pflegen des Test-Frameworks  

  • Aktualisieren Sie das Framework und die Abhängigkeiten regelmäßig.  
  • Regelmäßiges Refactoring des Codes zur Aufrechterhaltung der Qualität.  
  • Fügen Sie ständig neue Testfälle hinzu, um die Testabdeckung zu verbessern. 

Vorteile der Verwendung eines Testautomatisierungs-Frameworks  

Zu den Vorteilen der Testautomatisierung gehören: 

  • Zeitersparnis 

Automatisierte Tests können jederzeit komplexe Szenarien ausführen und Funktionen abdecken, die bei manuellen Tests möglicherweise übersehen werden. 

  • Verbesserte Teamleistung und Produktivität 

Durch die Automatisierung sich wiederholender Testaufgaben können sich Entwickler und Tester auf strategischere Aktivitäten konzentrieren, z. B. auf das Design neuer Funktionen, die Optimierung des Codes und die Verbesserung der Benutzerfreundlichkeit.  

Außerdem werden durch die Automatisierung menschliche Fehler reduziert und konsistente und zuverlässige Testergebnisse sichergestellt. 

  • Kosteneinsparungen 

Testautomatisierung spart auf lange Sicht Kosten. Durch das frühzeitige Erkennen von Fehlern im Entwicklungszyklus vermeiden Sie Nacharbeiten und mögliche Umsatzeinbußen aufgrund von Softwarefehlern.  

Außerdem können Sie durch die Durchführung von Tests ohne manuelle Eingriffe Produkte schneller auf den Markt bringen, was den Unternehmen hilft, in einer sich schnell verändernden digitalen Welt wettbewerbsfähig zu bleiben. 

  • Test-Skalierung  

Mit der Testautomatisierung können Teams Testszenarien in verschiedenen Umgebungen und Konfigurationen wiederholen und eine konsistente Bewertung der Softwarefunktionalität erhalten.  

Dies ist nützlich für Projekte mit komplexen Architekturen oder häufigen Aktualisierungen und ermöglicht es den Teams, hohe Teststandards einzuhalten. 

Wann ist es sinnvoll, ein eigenes Framework für automatisierte Tests zu erstellen?  

Tester verwenden häufig Testwerkzeuge wie Selenium oder Playwright, mit denen sie Tests schreiben und diese direkt zur Erstellung automatisierter Testszenarien verwenden.  

Zunächst ist das inkrementelle Wachstum automatisierter Tests großartig, doch dahinter verbirgt sich ein ernstes Problem. Wenn wir diese Tools direkt einsetzen, werden unsere Tests bei der inkrementellen Softwareentwicklung sehr schnell veraltet sein. Ihre Behebung nimmt einen beträchtlichen Teil der Zeit der Automatisierungstester in Anspruch und führt manchmal sogar dazu, dass die Tests deaktiviert und nicht wiederhergestellt werden. Außerdem wirkt sich dies negativ auf die Testabdeckung neuer Funktionen aus. 

Die Schaffung einer Rahmenarchitektur für automatisierte Tests, die den Anforderungen von Unternehmen und Projekten gerecht wird, ist oft eine große Herausforderung. Dies wird oft übersehen, was zur Schaffung mehrerer Frameworks oder verschiedener Implementierungen grundlegender Funktionen führt, was Kosten verursacht und die Notwendigkeit ihrer Pflege mit sich bringt, die die Beteiligung vieler Personen erfordert.  

  Was kann man tun, um einen Rahmen für automatisierte Tests zu schaffen? 

  1. Standardisierung des Prozesses der Testentwicklung sowie der Vorbereitung gemeinsamer Anbieter und Testbasen, um Tests zu entwickeln und wiederverwendbare Tests besser zu erstellen. 
  1. Trennen Sie Teile des Codes, die für mehrere Projekte gelten, ab und versionieren Sie sie, damit neue Projekte einen schnellen Start in Bezug auf die Automatisierung haben. 

Das Automatisierungsframework ist so praktisch, dass diese Testbasis alles sammelt, was wir für die Durchführung eines einzigen Tests benötigen. Der Browser initialisiert all diese Dienste, Seiten usw., um das Testszenario sofort zu starten.  
 

Wie wir einem Firmenkunden geholfen haben, seinen Testprozess zu verbessern 

Lassen Sie uns nun von der Theorie zur Praxis übergehen. In dieser Fallstudie zeigen wir, wie wir einem unserer Kunden aus der Finanzbranche bei der schrittweisen Implementierung eines QA-Automatisierungsrahmens geholfen haben. 
 

  1. Überprüfung des internen Prüfverfahrens und Verbesserungsvorschläge 

Wir führten einen Workshop durch, um den aktuellen Stand des Qualitätsmanagementprozesses (QA) des Kunden zu untersuchen, und entwickelten eine Teststrategie, die die grundlegenden Testannahmen festhielt.  

Um die Qualität zu überprüfen, mussten wir unter anderem die entsprechenden Metriken bereitstellen:  

  • Wir erstellten benutzerdefinierte Datenvisualisierungen, um ein klareres Bild des aktuellen Zustands des Produkts zu vermitteln.  
  • Wir boten auch die Möglichkeit, die Umsetzung der Anforderungen während des gesamten SDLC-Zyklus zu verfolgen. 
  • Wir kombinierten alle Anforderungsmanagement-Tools mit Test-Frameworks, um alle Qualitätsinformationen an einem Ort verfügbar zu machen.  
  1. Vorbereitung des PoC für die Implementierung eines funktionalen Automatisierungsframeworks mit Java 

Auf dieser Grundlage haben wir auf Grundlage u.a. folgender Fragen einen Testplan und ein Modell für die Durchführung der Tests in jedem Projekt erstellt: 

  • Welche Tests fielen im Geltungsbereich des Kunden an?  
  • Welche Aufgaben haben innerhalb des Projekts die einzelnen Rollen? 
  • Was sind die QA-Risiken, wenn z. B. Entwickler ihren Code oder ihre Tools testen?     
  1. Erstellen des QA-Handbuchs 

In Zusammenarbeit mit dem Kunden entwickelten wir einen umfassenden und professionellen QA-Prozess, der im QA-Handbuch dokumentiert ist und einen umfassenden Leitfaden für Software-Test-Experten und Projektteams darstellt. 

Es wurden bewährte Verfahren, Ansätze und Techniken für das Testen verschiedener Arten von Software, einschließlich Web- und Desktop-Anwendungen, vorgestellt. 

  1. Umsetzung der Strategie   

Sobald die QS-Dokumentation erstellt war, bestand der nächste Schritt in der Umsetzung des Plans und der Richtlinien. Dazu gehörte die Analyse und Validierung der Anforderungen sowie die Erstellung und Ausführung von Testszenarien und Testberichten. 

Fazit  

Die Wahl des richtigen Automatisierungs-Frameworks ist entscheidend für den Erfolg eines jeden Projekts. Es ist wichtig, verschiedene Faktoren zu berücksichtigen und ein Werkzeug zu wählen, das den Anforderungen entspricht. 

Zusammenfassend kann man sagen, dass die wichtigsten Elemente beim Aufbau eines Testrahmens folgende sind: 

  • Modularität und Wiederverwendbarkeit: Entwerfen Sie den Rahmen so, dass er modular ist und die Komponenten für verschiedene Testfälle wiederverwendet werden können.  
  • Skalierbarkeit: Vergewissern Sie sich, dass der Rahmen mit dem Wachstum des Projekts skaliert werden kann.  
  • Leichte Wartung: Halten Sie das Framework mit einer klaren Dokumentation und einer strukturierten Codebasis gut gewartet. 

Mit der richtigen Struktur und Herangehensweise kann die Testautomatisierung ein Meilenstein für den Erfolg eines Projekts sein. 

Wenden Sie sich an unsere Experten, wenn Sie mehr über dieses Thema erfahren und eine persönliche Beratung zur Einführung der Automatisierung der Qualitätskontrolle in Ihrem Unternehmen erhalten möchten. 



Mariola Nowak Content Writer
Adam Niedzielski QA Automation Engineer

Design, Entwicklung, DevOps oder Cloud - welches Team brauchen Sie, um die Arbeit an Ihren Projekten zu beschleunigen?
Chatten Sie mit unseren Beratungspartnern, um herauszufinden, ob wir gut zusammenpassen.

Jakub Orczyk

Vorstandsmitglied /Verkaufsdirektor

Buchen Sie eine kostenlose Beratung
kuba (1)