$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Systemarchitektur und Prototyp-Zusammenfassung:
Diese Forschung präsentiert ein verbessertes und anpassungsfähiges Prototypsystem, PreventativeTestPro, das einen proaktiven Qualitätsingenieuransatz mit Observabilitätsdaten und großen Sprachmodellen (LLMs) veranschaulicht, um die Problemlösung weiter zu verbessern. Das System zielt darauf ab, moderne Softwarelieferprobleme anzugehen, indem es Anomalieerkennung, Ursachenanalyse sowie die intelligente Ausführung und Entwicklung von Testfällen für unbehandelte Abdeckungen mithilfe synthetischer Überwachung, Beobachtbarkeitsdaten und GenAI-Integration automatisiert. Die Architektur ist modular und besteht aus drei Kernkomponenten: Observability Data Collector and Analyzer, GenAI-Driven Intelligence Layer sowie Test Orchestration and Execution Engine, wie in Abbildung 1 detailliert beschrieben.

Abbildung 1: Das Ein- und Ausgabesystem des vorgeschlagenen Systems. Beobachtbarkeitsdaten sowie Beobachterausgaben, Testrepository und Mapping-Regeln werden als Eingabe zusammen mit BHRAMARI Testbeds bereitgestellt, die KI-gesteuerte Testbestände erstellen, um die Robustheit von Testfällen zu erhöhen. Das vorgeschlagene System erzeugt Instrumentierung von Anomalien, KI-generierte Empfehlungen, Durchführung relevanter Testfälle, Dokumentation und Berichterstattung sowie die Identifikation und Erstellung fehlender Testfälle. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Abbildung 2 zeigt die Architektur des vorgeschlagenen Ansatzes. Die Abbildung zeigt die Eingabe, Verarbeitung und Ausgabe des Systems. Sie bietet außerdem eine umfassende Darstellung des Systems, die dann in eine Erklärung übersetzt wird, um das Verständnis der zugrunde liegenden Merkmale zu verbessern.

Abbildung 2: Systemarchitektur des vorgeschlagenen Systems mit Observability-Daten-Sammler und -Analysator, GenAI-gesteuerter Intelligenzschicht sowie Testorchestrierungs- und Ausführungs-Engine. Diese Abbildung zeigt die interne Architektur des PreventativeTestPro-Systems, die in drei Schichten unterteilt ist: Die Observability Collector Layer aggregiert Daten aus mehreren Quellen, darunter Browser-Ereignisse, Protokolle, HAR-Dateien, Backend-Logs, Metriken und Traces. Die Generative AI Intelligence Layer nutzt diese Daten, um Ursachenanalysen durchzuführen, Anomalien zu priorisieren und autonom Testfälle (UI, API, Handbuch) sowie Dokumentation mithilfe von LLMs zu erstellen. Das BHARAMARI-Modul richtet außerdem neue Testumgebungen ein. Test Orchestration and Execution Engine ordnet Abweichungen mit Testfällen zu, führt Tests gleichzeitig aus, bewertet Ergebnisse und informiert Engineering-Teams, Ticketing-Systeme und Dashboards für Echtzeit-Überwachung und Lösungsüberwachung. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Das Observability Data Collector and Analyzer-Modul dient als sensorisches System der Plattform und sammelt kontinuierlich Daten der zu bewertenden Anwendung in großem Maßstab mit mehreren Aspekten. Im Fall der Frontend-Überwachung werden synthetische Monitoring-Agenten eingesetzt, um browserseitige Ereignisse zu überwachen, wie Document Object Model (DOM)-Strukturen, Benutzeraktionen wie Klicks, Hovers und Eingaben sowie HAR-Dateien, die Netzwerk- und API-Anfragen und -Antwortinformationen erfassen. PreventativeTestPro ist ebenfalls in OBSERVER integriert, um die Funktionalität von Browsern zu erhöhen. Die Backend-Überwachung zielt auf die Loganalyse ab, bei der serverseitige Beobachtbarkeitsinformationen angefordert und verarbeitet werden, darunter Anwendungsprotokolle, Fehler-, Informations- und Debug-Nachrichten, Stack-Trace- und Ausnahmeprotokolle, Leistungskennzahlen wie Antwortzeiten und Tracing mit Technologien wie OpenTelemetry oder New Relic. Das System arbeitet mit synthetischen Agenten, die den Nutzerverkehr und die Interaktion simulieren, und Log-Sammler kondensieren eingehende Echtzeitdaten. Die gesammelten Daten werden dann in strukturierte Formate normalisiert und an andere Verarbeitungseinheiten zur weiteren Analyse weitergegeben.
Das Wesentliche von PreventativeTestPro ist eine GenAI-gesteuerte Intelligenzschicht, die große Sprachmodelle (LLMs) wie GPT verwendet, um Observabilitätsdaten zu lesen und zu analysieren sowie Antworten zu kontextualisieren und zu generieren. Das Modul führt eine Wurzelursachenanalyse durch: der Prozess der Interpretation von Root-Cause-Logs und Spuren, um technische Fehler in verständlichen Begriffen zu erklären, wie etwa eine NullPointerException auf einer bestimmten Codezeile und die angenommene Ursache des Problems, wie etwa eine nicht initialisierte Variable. Bei der Testfallgenerierung verwendet das System Autotests, die durch Umwandlung von Ausnahmemustern oder einer Ereignisfolge in ausführbare Testskripte, z. B. Selenium- oder API-Tests, generiert werden, erstellt aber auch menschenlesbare Testverfahren, die Qualitätssicherungsmitarbeiter ausführen können. Die API-Tests haben sich durch die Umwandlung von HAR- und Trace-Logs in eine Folge von API-Anfragen mit den erwarteten Behauptungen weiterentwickelt, und alle generierten Testfälle werden durch die Integration mit BHRAMARI durch effektive Testumgebungen weiter verbessert. Weitere Verbesserungen, Verbesserungen der Testabdeckung und CI/CD-Integrationsmöglichkeiten werden im Empfehlungssystem vorgeschlagen, abhängig vom analysierten Systemverhalten. Die KI-Engine verwendet strukturierte Observabilitätsdaten mittels Prompt-Engineering und Kontextanreicherung, um Log-Kontext mit Prompt-Vorlagen zu präsentieren, die strukturierte Abfragen an das LLM weiterleiten, und generiert schließlich Ausgaben in funktionaler Form wie Codeschnippel, Testfallspezifikationen und Dokumentation natürlicher Sprache.
Das Modul Test Orchestration and Execution Engine übernimmt Testpriorität, Planung und Ausführung und ermöglicht eine automatisierte Validierung basierend auf Details zur Codeänderungsabdeckung, Tags und Anomalie-Mapping. Die Abbildung und Auswahl des Tests beinhaltet das Verknüpfen von Anomalien in Karten oder Instrumentierungsmustern mit bekannten Testfällen mittels einer Mapping Rules Engine und anschließend das Ausführen der Testfälle gemäß der etablierten Mapping. Die Funktionen der gleichzeitigen Testausführung ermöglichen es, zahlreiche Testarten gleichzeitig durchzuführen, wie funktionale, Performance- oder Sicherheitstests in verschiedenen Umgebungen und die Koordination der Nutzung von Selenium, JMeter und ZAP als Instrumente in den Automatisierungspipelines. Die Rückkopplungsschleifen-Implementierung stellt sicher, dass die Ergebnisse der Ausführungen protokolliert werden, und im Falle eines Testfehlers werden Änderungen an Support-Systeme, einschließlich Jira und Azure DevOps, kommuniziert, um diese zu verfolgen und zu beheben.
Hypothese:
H1 (Operative Effizienz): Es wird angenommen, dass die Verschmelzung von Observabilitätsdaten und KI-gesteuerter Intelligenz die operativen Kennzahlen verbessert, insbesondere durch Verkürzung der mittleren Lösungszeit (H1a), der mittleren Analysezeit (H1b), der mittleren Zeit zur Erkennung von Produktionsproblemen (H1c) und der mittleren Zeit zur Implementierung von Fixes in der Produktion (H1d). Diese Änderungen sollten es erleichtern, die Service Level Agreement (SLA)-Anforderungen (H1e) zu erfüllen, indem sie Erkennung, Analyse und Bereitstellung beschleunigen und gleichzeitig Systemausfallzeiten minimieren.
H2 (Testwirksamkeit): Es wird außerdem angenommen, dass sich die Effektivität von Softwaretests mit mehr Testabdeckung (H2a), paralleler Durchführung von Testfällen (H2b) und intelligenter Testpriorisierung (H2c) verbessern wird. KI-generierte Empfehlungen (H2D) sollen ebenfalls sowohl bei Test- als auch bei operativen Arbeitsabläufen helfen. Dies hilft, Fehler schneller zu finden, Rückkopplungsschleifen zu beschleunigen und Qualitätssicherungspraktiken zu unterstützen, die präventiv und langanhaltend sind.
Umfang und Zielgruppe:
Dieser Prototyp zeigt das Gesamtdesign, die Hauptidee und wie man das PreventativeTestPro-Framework Schritt für Schritt einrichtet und betreibt. Es geht auch ausführlich darauf ein, wie man die richtigen Testumgebungen/Sample-Eingaben einrichtet und gibt Tipps, wie man Probleme behebt. Der Inhalt richtet sich an Software-Qualitätsingenieure, die bereits die Grundlagen von Java kennen und lernen möchten, wie man präventives Testen einsetzt, um Software zuverlässiger und effizienter zu machen.
Umgebungsaufbau:
Ergänzende Datei 1 enthält eine Schritt-für-Schritt-Beschreibung und ein Programm, das für die Kommunikation mit PreventativeTestPro erforderlich ist. Dazu gehören Anweisungen zur Installation der notwendigen Umgebung, wie man die Dienste des Tools startet und beendet sowie eine klare Erklärung der grundlegenden Nutzung des Werkzeugs. Um eine detailliertere Dokumentation sowie Anleitungen zur Nutzung fortgeschrittener Werkzeuge, Einrichtungsanweisungen und anderen organisatorischen Details zu erhalten, konsultieren Sie die offiziellen GitHub-Quellen, die dem Projekt gewidmet sind: die spezifische Wiki-Seite am Standort des https://github.com/sohambpatel/PreventativeTests/wiki und die Haupt-README bei https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Beispieleingaben:
Die Beispiel-Eingabedateien finden Sie im GitHub-Repository: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Das Framework kann die voreingestellten Testfälle und Datensätze dieser Dateien sofort ausführen. Sie dienen als Referenzeingänge, um die Umgebung zu überprüfen und die gleichen Ergebnisse zu erhalten, die in diesem Protokoll beschrieben sind.
Beispielausgaben:
Das GitHub-Repository (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) enthält konkrete Beispiele der Ausgabedaten des präventiven Testframeworks in Rohformat. Durch diese Dateien können Nutzer das Layout und die Details der generierten Berichte und Kennzahlen direkt einsehen und die Ergebnisse des Tools während seines Betriebs demonstrieren. Dieser Leitfaden ist relevant, um die Datenpipeline zu kennen und das erwartete Rahmenverhalten bei der Rekonstruktion des experimentellen Prozesses zu bestätigen.
Ausführungsprototyp:
Dieser Abschnitt bietet eine detaillierte, schrittweise Anleitung, wie man das PreventativeTestPro-Framework verwendet. Um den Nutzern beim Reproduzieren des Workflows zu helfen, wird jede Stufe in der richtigen Reihenfolge beschrieben. Dieser Abschnitt präsentiert die Ausführungsschritte in einem strukturierten Format, um die Reproduktion von Ergebnissen zu erleichtern, wichtige Kontrollpunkte zu markieren und sicherzustellen, dass das PreventativeTestPro-Framework konsistent in verschiedenen experimentellen oder operativen Umgebungen verwendet werden kann.
In diesem Schritt kann die PreventativeTestPro-GUI verwendet werden, um den besten präventiven Test-Workflow auszuwählen. Abbildung 3 zeigt fünf Möglichkeiten, von denen jede für einen anderen Schritt im Testprozess steht: parallele Tests durchführen, die Testsuite aus Überwachungsergebnissen durch Priorisierung bestehender Testfälle erstellen, manuelle Testfälle erstellen, automatisierte Testfälle erstellen und die Ursache finden. Wenn der Nutzer eine Entscheidung trifft, beginnt der festgelegte Workflow. Danach können in späteren Phasen zusätzliche Modi hinzugefügt werden (wie KI-gesteuerte Testfallgenerierung oder Ursachenanalyse). Diese gut organisierte Schnittstelle bietet eine Möglichkeit, präventive Teststudien durchzuführen, die wiederholt und in kleinere Teile zerlegt werden können.

Abbildung 3: Benutzeroberfläche 1 des Systems. Diese Abbildung zeigt die Benutzeroberfläche von PreventativeTestPro, mit der man aus fünf verschiedenen Methoden für präventive Tests wählen kann: 1. Präventiver Test, parallele Ausführung: Start des Tests, 2. Präventiver Test, Finalisierung der Testsuite basierend auf synthetischer App-Überwachung, 3. Präventiver Test, Erstellung manueller Testfälle mit GenAI, 4. Präventiver Test, Generierung automatisierter Testfälle mit GenAI, 5. Präventiver Test, Ursachenanalyse mit GenAI. Es kann immer nur eine Option gleichzeitig gewählt werden. Das modulare Design erleichtert die Durchführung präventiver Tests und fügt KI-gestützte Testerstellung und Diagnostik hinzu. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Abbildung 4 zeigt die parallele Ausführungsoberfläche des Frameworks. In diesem Schritt gibt der Nutzer die URL der zu testen Anwendung sowie den absoluten Pfad zur Eigenschaftendatei ein, die die Konfigurationseinstellungen enthält. Nachdem die Eingaben gesetzt wurden, kann der Benutzer gleichzeitig Tests durchführen, indem er auf die Schaltfläche Start Testing klickt, der auch die getestete Website überwacht und die Sicherheits-, Performance-, Konsolen- und JavaScript-Logs generiert. Man kann die laufende Ausführung stoppen, indem man auf die Schaltfläche Testen stoppen klickt. Der Button "Empfehlung abrufen" ermöglicht es Ihnen, KI-gesteuerte Erkenntnisse aus den aufgezeichneten Protokollen zu erhalten. Dieses Design stellt sicher, dass mehrere Testkategorien (funktional, performance und sicherheit) gleichzeitig laufen, was es erleichtert, Probleme schneller zu finden.

Abbildung 4: Benutzeroberfläche 2 des Systems. Diese Abbildung zeigt den Parallelausführungsmodus des PreventativeTestPro-Frameworks. Der Benutzer gibt die URL der Zielanwendung und den Pfad zu einer Eigenschaftendatei mit Konfigurationsdetails an. Zu den Optionen gehören Start Testing (um funktionale, Sicherheits- und Performance-Tests parallel durchzuführen und die Logs aufzuzeichnen), Stop Testing (um die Ausführung zu stoppen) und Get Recommendation (um KI-gesteuerte Erkenntnisse aus Logs und Metriken zu erhalten). Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Abbildung 5 zeigt die Monitoring-basierte Testfinalisierungsschnittstelle des PreventativeTestPro-Frameworks. In diesem Schritt legt der Benutzer den Pfad für die Überwachungsausgabedatei fest, die JSON-Pfadabfrage, um Fehler- oder Ausnahmeknoten zu erhalten, und den Test-Repository-Pfad, um die erstellten Fälle zu speichern. Nachdem die Eingaben gesetzt wurden, kann der Benutzer zunächst die Namen der Klasse und der Methode erhalten, die dazugehören, und dann die Testfälle aus dem Testpull basierend auf der gefundenen Klasse und Methode sortieren. Dieser Priorisierungsschritt zeigt, wie Überwachungsdaten genutzt werden können, um die Testfälle effektiv zu bewerten.

Abbildung 5: Benutzeroberfläche 3 des Systems. Diese Abbildung zeigt, wie man eine Testsuite im PreventativeTestPro-Framework mit synthetischen Monitoring-Ausgaben priorisieren kann. Der Benutzer gibt den Pfad zur Überwachungsausgabedatei, den JSON-Pfad zur Erzeugung von Ausnahmen/Fehlern und den Pfad zum Test-Repository (offline) ein. Die Optionen "Klasse abrufen/Methodenname" und "Testfälle abrufen" können verwendet werden, um Kartierungsanomalien in Testfälle umzuwandeln, die man ausführen kann. Dies stellt sicher, dass Laufzeitprobleme in den Testprozess einbezogen werden. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Abbildung 6 zeigt die manuelle Testfall-Generierungsschnittstelle von PreventativeTestPro. In diesem Schritt teilt der Benutzer dem Programm an, wo es die Stack-Trace-Datei finden kann, die die Anomalie zeigt, indem er den absoluten Pfad zur Stack-Trace-Datei und den Pfad zur Konfigurations-Eigenschaften-Datei bereitstellt. Sobald die Eingaben gesetzt sind, kann man die Option Testfälle generieren, die die Anomalie in strukturierte manuelle Testfälle umwandelt. Dies stellt sicher, dass bereits vorherige Laufzeitfehler immer in den Testprozess einbezogen werden. Das Framework erleichtert die Erstellung von Testfällen durch Automatisierung des Prozesses. Das reduziert manuelle Arbeit, verbessert die Testabdeckung, macht die Tests zuverlässiger und verhindert, dass das gleiche Problem erneut auftritt. Dieser Schritt ist eine sehr wichtige Verbindung zwischen der Problemfindung und der sichergestellten Qualität, dass sie gut ist, bevor sie eintritt.

Abbildung 6: Benutzeroberfläche 3 des Systems. Diese Abbildung zeigt die Testfall-Generierungsschnittstelle von PreventativeTestPro. Es verwandelt Anomalie-Stack-Spuren in manuelle Testfälle im Behavior Driven Development (BDD), die verwendet werden können. Der Benutzer gibt die Pfade zur Stack-Trace-Datei und zur Eigenschaftendatei an und klickt dann auf "Testfälle generieren", um automatisch Fälle zu erstellen, die mit dem gefundenen Fehler übereinstimmen. Dies stellt sicher, dass Laufzeitprobleme immer in Regressionstests umgewandelt werden, die wiederholt werden können. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Abbildung 7 zeigt die automatisierte Testfall-Generierungsschnittstelle von PreventativeTestPro. In diesem Schritt gibt der Benutzer den absoluten Pfad zur Observability-JSON-Ausgabedatei und den Pfad zur Konfigurationsdatei der Eigenschaft an. Wenn der Button "Generiere automatisierte Testfälle" angeklickt wird, verarbeitet das System die Überwachungsdaten und erstellt Testfälle, die ausgeführt werden können, um dieselben Probleme aufzuzeigen, die bereits festgestellt wurden.

Abbildung 7: Benutzeroberfläche 4 des Systems. Diese Abbildung zeigt die automatisierte Testfall-Generierungsschnittstelle von PreventativeTestPro, die Tests erstellt, die mit Observabilitätsdaten ausgeführt werden können. Der Benutzer gibt den Pfad zur Eigenschaftendatei und die Observability-JSON-Ausgabedatei an. Dann klicken sie auf "Automatisierte Testfälle generieren", um Skripte zu erstellen, die ausgeführt werden können (im Selenium- und TestNG-Format). Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.

Abbildung 8: Benutzeroberfläche 5 des Systems. Diese Abbildung zeigt die Anomalie-Instrumentierungsschnittstelle von PreventativeTestPro für die Root Cause Analysis (RCA). Der Benutzer gibt den Pfad zur Properties-Datei und zur Stack-Trace-Datei an und wählt dann RCA, um die KI-gesteuerte Analyse zu starten. Dieser Schritt wandelt erkannte Anomalien in strukturierte diagnostische Erkenntnisse um, die sicherstellen, dass Fehler auf eine Weise behoben werden können, die wiederholt werden kann und spezifisch für das Problem ist. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Fehlerbehebung:
Tabelle 1 zeigt die wichtigsten Fehlerbehebungspunkte, die sich ausschließlich auf den Anwendungscode beziehen. Diese Punkte sind eine schnelle Möglichkeit, sich daran zu erinnern, wie man Code-Level-Probleme behebt, die beim Betrieb des PreventativeTestPro-Frameworks auftreten. Die Projektdokumentation bietet weitere Informationen und Schritt-für-Schritt-Anleitungen für Leser, die mehr Hilfe bei der Fehlerbehebung der Gesamtfunktionalität der Anwendung wünschen. Die vollständige Ressource ist über den Link: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Diese zusätzliche Referenz stellt sicher, dass Nutzer nicht nur Programmierprobleme beheben, sondern auch lernen, wie man Funktionen behebt, wodurch sie das Framework effektiver nutzen können.
| Fehlerverhalten | Ursache | Wie kann man das beheben? |
| Die Bewerbung beginnt nicht | Java-Pfad ist nicht festgelegt | Setzen Sie in der Environment-Variable die JAVA_HOME |
| Der Server fällt beim Start fehl | Port 8080/9090 in Gebrauch (insbesondere bei Verwendung von Docker) | Update der Docker-Portzuordnung |
| GenAI-Inhalte sind null | Das Token könnte abgelaufen sein | Generiere das Token und aktualisiere die config.properties, bevor du das als Eingabe eingibst |
| Die vom Framework generierte Browser-Instanz verbindet sich nicht mit dem Netzwerk | Entweder läuft der ZAP-Server nicht oder die ZAP-Zugangsdaten sind falsch | Schalte den ZAP EIN, bevor du die Anwendung startest; falls er läuft und das Problem weiterhin besteht, aktualisiere die ZAP-Zugangsdaten in der config.properties, bevor du diese als Eingabe eingibst |
Tabelle 1: Häufige vorgeschlagene Systemfehler und schnelle Lösungen. Diese Tabelle zeigt die häufigsten anwendungsspezifischen Fehler, Fehlersuche und schnelle Lösungen, die zur Behebung der Probleme angewendet werden können.