$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Samenvatting van systeemarchitectuur en prototype:
Dit onderzoek presenteert een verbeterd en aanpasbaar prototypesysteem, PreventativeTestPro, dat een proactieve kwaliteitsengineeringbenadering illustreert door gebruik te maken van observabiliteitsdata en grote taalmodellen (LLM's) om de oplossing van supportproblemen verder te verbeteren. Het systeem streeft ernaar moderne softwareleveringsproblemen aan te pakken door het automatiseren van anomaliedetectie, analyse van de worteloorzaken en de intelligente uitvoering en ontwikkeling van testgevallen voor onopgeloste dekking met behulp van synthetische monitoring, observabiliteitsdata en GenAI-integratie. De architectuur is modulair en bestaat uit drie kerncomponenten: Observability Data Collector and Analyzer, GenAI-gedreven intelligentielaag en Test Orchestration and Execution Engine, zoals in detail gespecificeerd in Figuur 1.

Figuur 1: De input-output van het voorgestelde systeem. Observabiliteitsgegevens, samen met observeroutput, testrepository en mappingregels, worden als input geleverd naast BHRAMARI testbeds, die AI-gedreven testbeds construeren om de robuustheid van testcases te vergroten. Het voorgestelde systeem genereert instrumentatie van anomalieën, door AI gegenereerde aanbevelingen, uitvoering van relevante testcases, documentatie en rapportage, evenals het identificeren en creëren van ontbrekende testcases. Klik hier om een grotere versie van deze figuur te bekijken.
Figuur 2 toont de architectuur van de voorgestelde benadering. De figuur illustreert de invoer, verwerking en uitvoer van het systeem. Het biedt ook een uitgebreide weergave van het systeem, die vervolgens wordt vertaald in een uitleg om het begrip van de onderliggende kenmerken te vergroten.

Figuur 2: Systeemarchitectuur van het voorgestelde systeem met observability data collector en analyzer, GenAI-gedreven intelligentielaag en testorkestratie en uitvoeringsengine. Deze figuur illustreert de interne architectuur van het PreventativeTestPro-systeem, opgedeeld in drie lagen: De Observability Collector Layer verzamelt gegevens uit meerdere bronnen, waaronder browsergebeurtenissen, logs, HAR-bestanden, backendlogs, metrics en traces. De Generative AI Intelligence Layer gebruikt deze data om worteloorzaakanalyses uit te voeren, anomalieën te prioriteren en autonoom testcases (UI, API, handmatig) en documentatie te creëren via LLM's. De BHARAMARI-module zet ook nieuwe testomgevingen op. Test Orchestration and Execution Engine koppelt afwijkingen aan testcases, voert tests gelijktijdig uit, evalueert uitkomsten en informeert engineeringteams, ticketsystemen en dashboards voor realtime toezicht en resolutiemonitoring. Klik hier om een grotere versie van deze figuur te bekijken.
De Observability Data Collector and Analyzer-module dient als een sensorisch systeem van het platform, dat continu gegevens verzamelt van de te beoordelen applicatie op grote schaal, met meerdere aspecten. In het geval van frontendmonitoring worden synthetische monitoringagenten ingezet om browser-side gebeurtenissen te monitoren, zoals Document Object Model (DOM)-structuren, gebruikersacties zoals klikken, hovers en inputs, en HAR-bestanden die netwerk- en API-verzoek- en responsinformatie vastleggen. PreventativeTestPro is ook ingebouwd in OBSERVER om de mogelijkheden van browsers te vergroten. Backendmonitoring richt zich op loganalyse, waarbij server-side observabiliteitsinformatie wordt opgevraagd en verwerkt, waaronder applicatielogs, fout-, informatie- en debugberichten, stacktrace- en uitzonderingslogs, prestatiemetrics zoals responstijden en tracering met technologieën zoals OpenTelemetry of New Relic. Het systeem werkt met synthetische agenten die gebruikersverkeer en interactie simuleren, en logverzamelaars condenseren binnenkomende realtime data. De verzamelde gegevens worden vervolgens genormaliseerd naar gestructureerde formaten en aan andere verwerkingseenheden gegeven om verder te worden geanalyseerd.
De essentie van PreventativeTestPro is een GenAI-gedreven intelligentielaag die gebruikmaakt van grote taalmodellen (LLM's) zoals GPT om observabiliteitsdata te lezen en te analyseren, en om reacties te contextualiseren en te genereren. De module voert root cause analysis uit: het proces van het interpreteren van root cause logs en traces om technische fouten te verklaren in termen die begrijpelijk zijn, zoals een NullPointerException op een bepaalde coderegel en de veronderstelde oorzaak van het probleem, zoals een niet-geïnitialiseerde variabele. Bij het genereren van testcases gebruikt het systeem automatische tests die worden gegenereerd door uitzonderingspatronen of een reeks gebeurtenissen om te zetten in uitvoerbare testscripts, bijvoorbeeld Selenium- of API-tests, maar produceert het ook mensleesbare testprocedures die kwaliteitsbegeleidingsmedewerkers kunnen uitvoeren. De API-tests zijn geëvolueerd door de transformatie van HAR- en tracelogs naar een reeks API-verzoeken met de verwachte asserties, en alle gegenereerde testgevallen worden verder verbeterd met effectieve testomgevingen door te integreren met BHRAMARI. Verdere verbeteringen, verbeteringen in testdekking en CI/CD-integratiemogelijkheden worden voorgesteld in het aanbevelingssysteem, afhankelijk van het geanalyseerde systeemgedrag. De AI Engine gebruikt gestructureerde observabilitydata via prompt engineering en contextverrijking om logcontext te presenteren met prompttemplates die gestructureerde queries doorgeven aan de LLM, en genereert uiteindelijk output in functionele vorm, zoals codefragmenten, testcase-specificaties en natuurlijke taaldocumentatie.
De Test Orchestration and Execution Engine-module verzorgt testprioriteit, planning en uitvoering, waardoor geautomatiseerde validatie mogelijk is op basis van details van codewijzigingen, tags en anomaliemapping. Het toewijzen en selecteren van de test houdt in dat afwijkingen in kaarten of instrumentatiepatronen worden gekoppeld aan bekende testgevallen met behulp van een Mapping Rules Engine, en vervolgens worden de testgevallen uitgevoerd volgens de vastgestelde mapping. De functies van gelijktijdige testuitvoering maken het mogelijk om verschillende soorten tests gelijktijdig uit te voeren, zoals functionele, prestatie- of beveiligingstests in verschillende omgevingen, en het coördineren van het gebruik van Selenium, JMeter en ZAP als instrumenten in de automatiseringspijplijnen. De implementatie van de feedbackloop zorgt ervoor dat de resultaten van uitvoeringen worden geregistreerd, en in geval van testfouten worden wijzigingen gecommuniceerd aan ondersteuningssystemen, waaronder Jira en Azure DevOps, om deze te volgen en op te lossen.
Hypothese:
H1 (Operationele Efficiëntie): Er wordt verondersteld dat de combinatie van observabiliteitsdata en AI-gedreven intelligentie operationele metrics zal verbeteren, met name door de gemiddelde tijd tot oplossing (H1a), de gemiddelde tijd om te analyseren (H1b), de gemiddelde tijd om productieproblemen te detecteren (H1c) en de gemiddelde tijd om oplossingen in productie uit te rollen (H1d) te verkorten. Deze wijzigingen zouden het makkelijker moeten maken om aan Service Level Agreement (SLA)-eisen (H1e) te voldoen door detectie, analyse en implementatie te versnellen, terwijl systeemdowntime tot een minimum wordt beperkt.
H2 (Testeffectiviteit): Er wordt ook aangenomen dat de effectiviteit van softwaretesten zal verbeteren met meer testdekking (H2a), het parallel uitvoeren van testcases (H2b) en slimme testprioritering (H2c). AI-gegenereerde aanbevelingen (H2D) worden ook verwacht te helpen bij zowel testen als operationele workflows. Dit helpt om bugs sneller te vinden, feedbackloops te versnellen en kwaliteitsborgingspraktijken te ondersteunen die preventief en langdurig zijn.
Reikwijdte en doelgroep:
Dit prototype toont het algemene systeemontwerp, het hoofdidee en hoe je het PreventativeTestPro-framework stap voor stap opzet en uitvoert. Het gaat ook in detail in op hoe je de juiste testomgevingen/voorbeeldinvoer opzet en geeft tips over hoe je problemen kunt oplossen. De inhoud is bedoeld voor softwarekwaliteitsingenieurs die de basis van Java al kennen en willen leren hoe preventief testen worden gebruikt om software betrouwbaarder en efficiënter te maken.
Omgevingsopstelling:
Aanvullend Bestand 1 bevat een stapsgewijze beschrijving en het programma dat nodig is voor communicatie met PreventativeTestPro. Dit omvat instructies voor het installeren van de benodigde omgeving, hoe de diensten van het hulpmiddel te starten en te stoppen, en een duidelijke uitleg van het fundamentele gebruik van het gereedschap. Voor een meer gedetailleerde documentatie, samen met instructies over het gebruik van geavanceerde tools, installatie-instructies en andere organisatorische details, raadpleeg de officiële GitHub-bronnen die aan het project zijn gewijd: de specifieke Wiki-pagina op de locatie van de https://github.com/sohambpatel/PreventativeTests/wiki en de hoofd-README op https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Voorbeeldinvoer:
De voorbeeldinvoerbestanden zijn te vinden in de GitHub-repository: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Het framework kan de vooraf ingestelde testcases en datasets van deze bestanden direct uitvoeren. Ze worden gebruikt als referentie-ingangen om de omgevingsopstelling te controleren en dezelfde resultaten te verkrijgen als beschreven in dit protocol.
Voorbeelduitvoer:
De GitHub-repository (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) bevat concrete voorbeelden van de uitvoerdata van het preventieve testframework in ruwe vorm. Via deze bestanden kunnen gebruikers direct de lay-out en details van de gegenereerde rapporten en statistieken bekijken, waarmee de resultaten van de tool tijdens de werking worden getoond. Deze gids is relevant voor het kennen van de datapijplijn en het bevestigen van het verwachte raamwerkgedrag bij het recreëren van het experimentele proces.
Uitvoeringsprototype:
Deze sectie geeft een gedetailleerde, stapsgewijze handleiding over hoe je het PreventativeTestPro-framework gebruikt. Om gebruikers te helpen de workflow te reproduceren, wordt elke stap in volgorde beschreven. Deze sectie presenteert de uitvoeringsstappen in een gestructureerd formaat om het reproduceren van resultaten gemakkelijker te maken, belangrijke checkpoints aan te wijzen en ervoor te zorgen dat het PreventativeTestPro-framework consistent kan worden gebruikt in verschillende experimentele of operationele omgevingen.
In deze stap kan de PreventativeTestPro GUI worden gebruikt om de beste preventieve testworkflow te kiezen. Figuur 3 toont vijf keuzes, die elk staan voor een andere stap in het testproces: parallel testen uitvoeren, de testsuite creëren uit monitoringoutput door bestaande testgevallen te prioriteren, handmatige testcases aanmaken, geautomatiseerde testgevallen creëren en de oorzaak vinden. Wanneer de gebruiker een keuze maakt, start de aangewezen workflow. Daarna kunnen in latere fasen extra modi worden toegevoegd (zoals AI-gestuurde testcasegeneratie of root cause analyse). Deze goed georganiseerde interface biedt een manier om preventieve teststudies uit te voeren die herhaald kunnen worden en in kleinere delen kunnen worden opgesplitst.

Figuur 3: Gebruikersinterface 1 van het systeem. Deze figuur toont de gebruikersinterface van PreventativeTestPro, waarmee men kunt kiezen uit vijf verschillende manieren om preventief testen uit te voeren: 1. Preventieve test, parallelle uitvoering: Start testen, 2. Preventieve test, afronding van testsuite gebaseerd op synthetische appmonitoring, 3. Preventieve test, het genereren van handmatige testcases met GenAI, 4. Preventieve test, het genereren van geautomatiseerde testgevallen met GenAI, 5. Preventieve test, Root Cause Analyse met GenAI. Er kan maar één optie tegelijk worden gekozen. Het modulaire ontwerp maakt het eenvoudiger om preventief testen uit te voeren en voegt AI-gestuurde testcreatie en diagnostiek toe. Klik hier om een grotere versie van deze figuur te bekijken.
Figuur 4 toont de Parallel Execution-interface van het framework. In deze stap voert de gebruiker de URL in van de applicatie die hij wil testen en het absolute pad naar het eigenschappenbestand met de configuratie-instellingen. Nadat de invoer is ingesteld, kan de gebruiker tegelijkertijd beginnen met het uitvoeren van tests door op de knop Start Testing te klikken, die ook de te testen website monitort en de beveiligings-, prestatie-, console- en JavaScript-logs genereert. Men kan de lopende uitvoering stoppen door op de knop Testen stoppen te klikken. De knop 'Aanbeveling opvragen' geeft je AI-gestuurde inzichten uit de geregistreerde logs. Dit ontwerp zorgt ervoor dat meerdere testcategorieën (functioneel, performance en security) tegelijkertijd draaien, waardoor problemen sneller worden gevonden.

Figuur 4: Gebruikersinterface 2 van het systeem. Deze figuur toont de Parallel Execution-modus van het PreventativeTestPro-framework. De gebruiker specificeert de doelapplicatie-URL en het pad naar een eigenschappenbestand met configuratiedetails. Opties zijn onder andere Start Testing (om functionele, beveiligings- en prestatietests parallel uit te voeren en de logs vast te leggen), Stop Testing (om uitvoering te stoppen) en Get Recommendation (om AI-gedreven inzichten uit logs en metrics te verkrijgen). Klik hier om een grotere versie van deze figuur te bekijken.
Figuur 5 toont de monitoring-gebaseerde testfinalisatie-interface van het PreventativeTestPro-framework. In deze stap stelt de gebruiker het pad in voor het monitoringsuitvoerbestand, de JSON-padquery om fout- of uitzonderingsknopen te krijgen, en het testrepositorypad om de gemaakte gevallen op te slaan. Nadat de invoer is ingesteld, kan de gebruiker eerst de namen van de klasse en methode die erbij horen krijgen en vervolgens de testcases uit de testpull sorteren op basis van de gevonden klasse en methode. Deze stap van prioritering laat zien hoe monitoringdata effectief de testgevallen kunt rangschikken.

Figuur 5: Gebruikersinterface 3 van het systeem. Deze figuur laat zien hoe je een testsuite in het PreventativeTestPro-framework kunt prioriteren met behulp van synthetische monitoringsoutputs. De gebruiker typt het pad naar het monitoringsuitvoerbestand in, het JSON-pad om uitzonderingen/fouten te krijgen, en het pad naar de testrepository (offline). De opties Get Class/Method Name en Get Test Cases kunnen worden gebruikt om mapping anomalieën om te zetten in testgevallen die men kan uitvoeren. Dit zorgt ervoor dat runtime-problemen worden meegenomen in het testproces. Klik hier om een grotere versie van deze figuur te bekijken.
Figuur 6 toont de Manual Test Case Generation-interface van PreventativeTestPro. In deze stap vertelt de gebruiker het programma waar het stacktracebestand kan vinden dat de anomalie toont door het absolute pad naar het stacktracebestand en het pad naar het configuratie-eigenschappenbestand te geven. Zodra de invoer is ingesteld, kan men de optie Generate Test Cases uitvoeren, waarmee de anomalie wordt omgezet in gestructureerde, handmatige testcases. Dit zorgt ervoor dat eerder voorkomende runtime-fouten altijd worden meegenomen in het testproces. Het framework maakt het eenvoudiger om testcases te creëren door het proces te automatiseren. Dit vermindert handmatig werk, verbetert de testdekking, maakt tests betrouwbaarder, en voorkomt dat hetzelfde probleem zich opnieuw voordoet. Deze stap is een zeer belangrijke schakel tussen het vinden van problemen en ervoor zorgen dat de kwaliteit goed is voordat het gebeurt.

Figuur 6: gebruikersinterface 3 van het systeem. Deze figuur toont de interface voor het genereren van testgevallen van PreventativeTestPro. Het zet anomaliestacksporen om in handmatige testgevallen in de Behavior Driven Development (BDD) die gebruikt kunnen worden. De gebruiker geeft de paden naar het stack trace-bestand en het properties-bestand en klikt vervolgens op "Genereer Testcases" om automatisch gevallen te maken die overeenkomen met de gevonden fout. Dit zorgt ervoor dat runtime-problemen altijd worden omgezet in regressietests die herhaald kunnen worden. Klik hier om een grotere versie van deze figuur te bekijken.
Figuur 7 toont de geautomatiseerde testcase-generatieinterface van PreventativeTestPro. In deze stap geeft de gebruiker het absolute pad naar het observability JSON-uitvoerbestand en het pad naar het configuratiebestand van de eigenschap. Wanneer op de knop Genereren Geautomatiseerde Testcases wordt geklikt, verwerkt het systeem de monitoringsgegevens en maakt het testcases die kunnen worden uitgevoerd om dezelfde problemen te tonen als die werden waargenomen.

Figuur 7: Gebruikersinterface 4 van het systeem. Deze figuur toont de geautomatiseerde testcase-generatieinterface van PreventativeTestPro, die tests maakt die kunnen worden uitgevoerd met observabiliteitsdata. De gebruiker geeft het pad naar het properties-bestand en het observability JSON-uitvoerbestand. Vervolgens klikken ze op "Genereer geautomatiseerde testcases" om scripts te maken die uitgevoerd kunnen worden (in Selenium- en TestNG-formaat). Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 8: Gebruikersinterface 5 van het systeem. Deze figuur toont de anomalie-instrumentatieinterface van PreventativeTestPro voor Root Cause Analysis (RCA). De gebruiker geeft het pad naar het properties-bestand en het stack trace-bestand, en kiest vervolgens RCA om AI-gedreven analyse te starten. Deze stap verandert gedetecteerde afwijkingen in gestructureerde diagnostische inzichten, die ervoor zorgen dat fouten op een herhaalbare en probleemspecifieke manier kunnen worden opgelost. Klik hier om een grotere versie van deze figuur te bekijken.
Probleemoplossing:
Tabel 1 toont de belangrijkste probleemoplossingspunten die alleen over de applicatiecode gaan. Deze punten zijn een snelle manier om te onthouden hoe je codeproblemen kunt oplossen die ontstaan bij het draaien van het PreventativeTestPro-framework. De projectdocumentatie biedt meer informatie en stapsgewijze instructies voor lezers die meer hulp willen bij het oplossen van problemen die de algehele functionaliteit van de applicatie beïnvloeden. De volledige bron is te vinden via de link: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Deze extra referentie zorgt ervoor dat gebruikers niet alleen codeerproblemen oplossen, maar ook leren hoe ze functies kunnen troubleshooten, waardoor ze het framework effectiever kunnen gebruiken.
| Foutgedrag | Oorzaak | Hoe los je het op? |
| De aanvraag start niet | Java Path is niet ingesteld | Stel in de Environment-variabele de JAVA_HOME |
| Server faalt bij opstart | Port 8080/9090 in gebruik (specifiek bij gebruik van Docker) | Update Docker-poortmapping |
| GenAI-inhoud is nul | De token kan verlopen zijn | Genereer het token en werk de config.properties bij voordat je dat als invoer invoert. |
| De browserinstantie die door het framework wordt gegenereerd, maakt geen verbinding met het netwerk | Ofwel draait de ZAP-server niet, of de ZAP-inloggegevens zijn onjuist | Zet de ZAP AAN voordat je de applicatie start; als het nog steeds draait en het probleem blijft bestaan, werk dan de ZAP-gegevens bij in de config.properties voordat je dat als invoer invoert. |
Tabel 1: Veelvoorkomende voorgestelde systeemfouten en snelle oplossingen. Deze tabel toont de veelvoorkomende applicatiespecifieke fouten, probleemoplossing en snelle oplossingen die kunnen worden toegepast om de problemen op te lossen.