Effektives Testen ist eine wichtige Phase im Softwareentwicklungsprozess. Um diesen Teil zu optimieren, haben Unternehmen angefangen, auf extreme Testautomatisierung umzusteigen. Die Continuous-Integration-/Continuous-Delivery-Pipeline (CI/CD) ermöglicht einen höheren Automatisierungsgrad und maximiert so die Effizienz des gesamten Prozesses. Es bestehen jedoch weiterhin Herausforderungen. Der Software Development Engineer in Test (SDET) benötigt oft Hilfe beim Durchsuchen von Automatisierungsberichten und Protokollen sowie beim Debuggen der Testergebnisse. Angesichts des technologischen Fortschritts können Ingenieure jetzt Abhilfe erhalten über eine neue automatische Fehlertriagelösung. Diese Lösung bzw. dieser Ansatz ist Teil eines Konzepts, das als „Testlebenszyklusautomatisierung“ bezeichnet wird und menschliche Fehler erheblich reduziert. Darüber hinaus hilft es Unternehmen, ihren Benutzern fehlerfreie Anwendungen bereitzustellen.
Dieser Artikel ist das letzte Stück einer dreiteiligen Reihe über dieses Thema.Der erste Artikel, „Selbstheilende Testautomatisierung – ein Schritt in Richtung Testlebenszyklusautomatisierung“, wurde im Juli 2021 veröffentlicht. Der zweite, „Automatisierte Auswahl und Priorisierung von Tests auf Effektivitätsbasis“, folgte im März 2022.
Selbst wenn Tests automatisiert werden, können Nebentätigkeiten (wie Skriptwartung, Auswirkungsanalyse und Fehlersuche) zu kurz kommen. Der anhaltende manuelle Charakter dieser Aktivitäten kann die Softwareentwicklung verlangsamen. Es besteht nach wie vor Bedarf an Automatisierung, die während des gesamten Testlebenszyklus durchgeführt wird und die den Softwareentwicklungslebenszyklus (SDLC) beschleunigt. Glücklicherweise hat die Verbreitung von Techniken für künstliche Intelligenz/maschinelles Lernen (KI/ML) und Programmierkapazitäten zu einem Paradigmenwechsel geführt, der die Automatisierung des Testlebenszyklus und nicht nur die Testautomatisierung umfasst. Jetzt können sich Automatisierungstechniker ausschließlich auf die Erstellung neuer Testskripte konzentrieren.
Die Notwendigkeit einer automatisierten Fehlertriage (ADT, automated defect triaging)
In der Welt der Testlebenszyklusautomatisierung stößt die automatisierte Fehlertriage (ADT) auf Interesse, und die Kunden nehmen dies zur Kenntnis. Die meisten Automatisierungstechniker und SDETs befolgen einen dreiteiligen Prozess:
- Identifizieren der Testskripte, die fehlgeschlagen sind.
- Manuelle Analyse der Testskriptfehler.
- Kategorisierung der Probleme nach den wahren Ursachen für das Scheitern.
Dieser Ansatz ist sinnvoll, wenn das Testvolumen niedrig ist oder wenn die Testausführung selten erfolgt. Es ist jedoch leicht, sich ein Szenario vorzustellen, in dem täglich viele automatisierte Testskripte ausgeführt werden müssen. Die Automatisierungstechniker sind möglicherweise überfordert und benötigen einen automatisierten Mechanismus, der bei der Fehlersuche und -protokollierung helfen kann.
Wie funktioniert die automatische Fehlertriage (ADT)?
Abbildung 1: Arbeitsablauf einer ADT
Die ADT-Lösung verwendet ein KI/ML-Modell, um fehlgeschlagene Testskripte automatisch in vordefinierte Kategorien zu kategorisieren, basierend auf Testausführung und Fehlermustern. So können die Hauptursachen für fehlgeschlagene Ausführung identifiziert werden und Handlungsempfehlungen vorgeschlagen werden, die auf dem Wissen aus vorherigen Ausführungen beruhen.
Dieser Prozess besteht aus den folgenden Schritten:
Schritt 1: Sortieren der Ergebnisse der Testskriptausführung
Unabhängig vom verwendeten Testautomatisierungs-Framework – ob basierend auf Open-Source-Tools wie Selenium/Extent Reporter oder auf kommerziellen Standardwerkzeugen (COTS) wie UFT – die Testergebnisse müssen an einem für den ADT-Agent allgemein zugänglichen Ort gesammelt werden.
Schritt 2: Überwachung durch den ADT-Agent
Der Agent fragt kontinuierlich die Berichte ab und verfolgt die Ergebnisse der Testausführung, um alle Ergebnisse zu sammeln und sie in eine Datenbank zu verschieben.
Schritt 3: Automatisierte Fehlertriage (ADT)
Die ADT-Lösung nimmt die Daten auf, die der ADT-Agent an eine Datenbank sendet. Nach der ersten Datenaufbereitung werden die Daten in ein Klassifizierermodell eingespeist, das hilft, den Grund für den Fehler zu ermitteln. Der Fehlschlag des Tests wird anhand der Ergebnisbeschreibung und durch Musterabgleich mit vergangenen Daten klassifiziert. Diese Klassifizierung ermittelt, ob der Fehler auf einen Konfigurations-, Testinfrastruktur- oder einen Produktfehler zurückzuführen ist. Falls das Klassifizierungsmodell zu irgendeinem Zeitpunkt den Fehler aufgrund einer geringen Konfidenz nicht automatisch klassifizieren kann, kommt der „Human in the Loop“ (HITL, zu Dt. „Mensch in der Schleife“) ins Spiel, um den Arbeitsablauf zu unterstützen.
Schritt 4: Deduplizierung von Fehlern
Sobald die Fehlerursache ermittelt ist, geht der Fehler an die Deduplizierung über und das Modell versucht, ähnliche Prädikatsfehler zu identifizieren, die bereits im Fehlermanagement-Tool vorhanden sind. Wenn das Klassifikatormodell aufgrund der geringen Konfidenz nicht erfolgreich arbeiten kann, kommt der Human in the Loop ins Spiel, um den Arbeitsablauf zu unterstützen.
Schritt 5: Protokollierung von Fehlern
Die Protokollierung von Fehlern ist der letzte Schritt in diesem Prozess, hier schließt sich der Kreislauf. Die Lösung sollte den vorhandenen Fehler aktualisieren, falls ein Duplikat gefunden wird, oder sie sollte einen neuen Fehler im Fehlermanagement-Tool protokollieren.
Wichtigste Vorteile:
Die Ausgabe der ADT-Lösung ist umfangreich, da sie die folgenden Prozesse verbessert:
- Klassifizierung von Testfehlern
- Ursachenanalyse der Fehler
- Empfehlung von Behebungsschritten
- Identifizierung doppelter Fehler
- Erstellung einer Zusammenfassung der Testfehler, einschließlich Drilldown-Details
- Die Bereitstellung von Warnungen/Benachrichtigungen an Fachexperten in Bezug auf kritische, hochgradige Fehler; dies ermöglicht schnelles, entschlossenes Handeln
Die passenden, gängigen Klassifizierungsalgorithmen können für verschiedene Klassifizierungsmodelle verwendet werden. Darüber hinaus sollte ein Proof of Concept (PoC) für vorhandene Daten durchgeführt werden, um den richtigen Algorithmus zu ermitteln. Das ADT-Team sollte mit dem Qualitätssicherungsteam (QS) zusammenarbeiten, um das Modell regelmäßig neu zu trainieren und die Fehler zu triagieren. Die ADT-Lösung trägt dazu bei, den Aufwand für die Triage von Testskriptfehlern erheblich zu reduzieren. In einem Sprintmodell mit einem hohen Grad an DevOps-Automatisierung stehen die Testingenieure unter ständigem Druck, kontinuierliche Tests innerhalb des Sprints durchzuführen, und zwar effektiv. Engpässe bei der manuellen Fehlertriage verbrauchen die Arbeitszeit der Fachexperten – oft genau dann, wenn sie sich auf das Testen konzentrieren sollten. Dieser Effekt wird noch verstärkt, wenn es Tausende automatisierter Skripte gibt. Es ist ratsam für Unternehmen, in eine Lösung zu investieren, die solche Probleme bewältigen kann.