$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Architettura del sistema e riassunto del prototipo:
Questa ricerca presenta un sistema prototipo migliorato e adattabile, PreventivtativeTestPro, che esemplifica un approccio proattivo di ingegneria della qualità utilizzando dati di osservabilità e grandi modelli linguistici (LLM) per migliorare ulteriormente la risoluzione dei problemi di supporto. Il sistema mira ad affrontare problemi moderni di consegna software automatizzando il rilevamento di anomalie, l'analisi delle cause radici e l'esecuzione e lo sviluppo intelligenti di casi di test per la copertura non affrontata utilizzando monitoraggio sintetico, dati di osservabilità e integrazione GenAI. L'architettura è modulare e comprende tre componenti principali: Observability Data Collector and Analyzer, GenAI-Driven Intelligence Layer e Test Orchestration and Execution Engine, come specificato in dettaglio nella Figura 1.

Figura 1: L'input-output del sistema proposto. I dati di osservabilità, insieme all'output degli osservatori, al repository di test e alle regole di mappatura, sono forniti come input insieme ai banconi di prova BHRAMI, che costruiscono banchi di prova guidati dall'IA per migliorare la robustezza dei casi di test. Il sistema proposto genera strumentazione di anomalie, raccomandazioni generate dall'IA, esecuzione di casi di test pertinenti, documentazione e reportistica, nonché l'identificazione e la creazione di casi di test mancanti. Clicca qui per visualizzare una versione più grande di questa figura.
La Figura 2 mostra l'architettura dell'approccio suggerito. La figura illustra l'input, l'elaborazione e l'output del sistema. Fornisce inoltre una rappresentazione completa del sistema, che viene poi tradotta in una spiegazione per migliorare la comprensione delle caratteristiche sottostanti.

Figura 2: Architettura di sistema del sistema proposto con raccoglitore e analizzatore dati di osservabilità, strato di intelligenza guidato da GenAI e motore di orchestrazione ed esecuzione dei test. Questa figura illustra l'architettura interna del sistema PreventativeTestPro, suddivisa in tre livelli: il Couch Observability Collector aggrega dati da più fonti, inclusi eventi del browser, log, file HAR, log backend, metriche e tracce. Il Generative AI Intelligence Layer utilizza questi dati per eseguire analisi delle cause radici, dare priorità alle anomalie e creare autonomamente casi di test (UI, API, manuale) e documentazione tramite LLM. Il modulo BHARAMARI istituisce anche nuovi banchi di prova. Test Orchestration and Execution Engine mappa le discrepanze ai casi di test, esegue test contemporaneamente, valuta i risultati e informa i team di ingegneria, i sistemi di ticketing e i dashboard per la supervisione in tempo reale e il monitoraggio della risoluzione. Clicca qui per visualizzare una versione più grande di questa figura.
Il modulo Observability Data Collector and Analyzer funge da sistema sensoriale della piattaforma, raccogliendo continuamente dati dell'applicazione in valutazione su larga scala, con molteplici aspetti. Nel caso del monitoraggio frontend, vengono distribuiti agenti di monitoraggio sintetici per monitorare eventi lato browser, come strutture Document Object Model (DOM), azioni utente come clic, hovers e input, e file HAR che catturano informazioni di richiesta e risposta di rete e API. PreventativeTestPro è integrato anche con OBSERVER per aumentare la funzionalità dei browser. Il monitoraggio backend si concentra sull'analisi dei log, in cui vengono richieste e elaborate le informazioni di osservabilità lato server, che includono log delle applicazioni, messaggi di errore, informativi e di debug, log di tracciamento e eccezioni dello stack, metriche di performance come i tempi di risposta e il tracciamento tramite tecnologie come OpenTelemetry o New Relic. Il sistema lavorerà con agenti sintetici che simulano il traffico e l'interazione degli utenti, e i raccoglitori di log condensano i dati in tempo reale in arrivo. I dati raccolti vengono quindi normalizzati in formati strutturati e consegnati ad altre unità di elaborazione per ulteriori analisi.
L'essenza di PreventivatativeTestPro è uno Strato-Intelligenza Guidato da GenAI che utilizza Large Language Models (LLM) come GPT per leggere e analizzare i dati di osservabilità, contestualizzare e generare risposte. Il modulo effettua l'analisi della causa radice: il processo di interpretazione dei log e delle tracce della causa radice per spiegare i guasti tecnici in termini comprensivi, come una NullPointerException su una particolare riga di codice e la causa assunta del problema, come una variabile non inizializzata. Nella generazione dei casi di test, il sistema utilizza auto-test generati convertendo pattern di eccezione o una sequenza di eventi in script di test eseguibili, ad esempio test Selenium o API, ma produce anche procedure di test leggibili dall'uomo che il personale di Quality Assurance può eseguire. I test API si sono evoluti attraverso la trasformazione di HAR e trace log in una sequenza di richieste API con le asserzioni attese, e tutti i casi di test generati sono ulteriormente arricchiti con banchi di test efficaci integrandosi con BHRAMARI. Ulteriori miglioramenti, miglioramenti nella copertura dei test e opportunità di integrazione CI/CD sono suggeriti nel sistema di raccomandazione, a seconda del comportamento analizzato del sistema. Il Motore AI utilizza dati di osservabilità strutturati tramite ingegneria dei prompt e arricchimento del contesto per presentare il contesto del log con template di prompt che passano query strutturate al LLM, e infine genera output in forma funzionale, come frammenti di codice, specifiche di casi di test e documentazione in linguaggio naturale.
Il modulo Test Orchestration and Execution Engine gestisce la priorità dei test, la pianificazione e l'esecuzione, consentendo la validazione automatica basata sui dettagli di copertura delle modifiche del codice, tag e mappatura delle anomalie. La mappatura e la selezione del test prevedono l'associazione di anomalie nelle mappe o nei pattern di strumentazione con casi di test noti utilizzando un Motore di Regole di Mapping e poi l'esecuzione dei casi di test in conformità con la mappatura stabilita. Le funzionalità dell'esecuzione simultanea dei test permettono di eseguire numerosi tipi di test simultaneamente, come test funzionali, di prestazione o di sicurezza in diversi ambienti e di coordinare l'uso di Selenium, JMeter e ZAP come strumenti nelle pipeline di automazione. L'implementazione del ciclo di feedback garantisce che i risultati delle esecuzioni vengano registrati e, in caso di fallimento del test, le modifiche vengano comunicate ai sistemi di supporto, inclusi Jira e Azure DevOps, per tracciarle e risolverle.
Ipotesi:
H1 (Efficienza Operativa): Si ipotizza che la fusione di dati di osservabilità e intelligenza guidata dall'IA migliorerà le metriche operative, in particolare riducendo il tempo medio di risoluzione (H1a), il tempo medio di analisi (H1b), il tempo medio per rilevare problemi di produzione (H1c) e il tempo medio per implementare le correzioni in produzione (H1d). Questi cambiamenti dovrebbero rendere più facile soddisfare i requisiti dell'Accordo sul Livello di Servizio (SLA) (H1e) accelerando rilevamento, analisi e implementazione, mantenendo al minimo i tempi di inattività del sistema.
H2 (Efficacia dei test): Si ritiene inoltre che l'efficacia dei test software migliori con una maggiore copertura dei test (H2a), l'esecuzione di casi di test in parallelo (H2b) e la priorità smart dei test (H2c). Le raccomandazioni generate dall'IA (H2d) sono inoltre destinate ad aiutare sia nei test che nei flussi di lavoro operativi. Questo aiuterà a individuare i bug più rapidamente, a velocizzare i circuiti di feedback e a supportare pratiche di assicurazione della qualità preventive e durature.
Portata e pubblico:
Questo prototipo mostra il design complessivo del sistema, l'idea principale e come configurare ed eseguire il framework PreventivatTestPro passo dopo passo. Entra anche nei dettagli su come impostare i bancchi di prova giusti/input di campione e fornisce consigli su come risolvere i problemi. Il contenuto è rivolto agli ingegneri della qualità del software che già conoscono le basi di Java e vogliono imparare a utilizzare i test preventivi per rendere il software più affidabile ed efficiente.
Configurazione dell'ambiente:
Il File Supplementare 1 contiene una descrizione passo dopo passo e un programma necessari per comunicare con PreventivTestPro. Questo include istruzioni per l'installazione dell'ambiente necessario, come avviare e interrompere i servizi dello strumento e una chiara spiegazione dell'uso fondamentale dello strumento. Per ottenere una documentazione più dettagliata, insieme a istruzioni su come utilizzare strumenti avanzati, istruzioni di configurazione e altri dettagli organizzativi, consulta le fonti ufficiali di GitHub dedicate al progetto: la pagina Wiki specifica nella posizione del https://github.com/sohambpatel/PreventativeTests/wiki e il README principale a https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Input di esempio:
I file di input di esempio si trovano nel repository GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Il framework può eseguire immediatamente i casi di test preimpostati e i dataset di questi file. Vengono utilizzati come input di riferimento per verificare l'impostazione dell'ambiente e ottenere gli stessi risultati descritti in questo protocollo.
Esempi di output:
Il repository GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) contiene campioni concreti dei dati di output del framework di test preventivi in formato grezzo. Attraverso questi file, gli utenti possono visualizzare direttamente il layout e i dettagli dei report e delle metriche generate, dimostrando i risultati ottenuti dallo strumento durante il suo funzionamento. Questa guida è rilevante per conoscere la pipeline dati e confermare il comportamento previsto del framework durante la ricreazione del processo sperimentale.
Prototipo di esecuzione:
Questa sezione fornisce una guida dettagliata passo dopo passo su come utilizzare il framework PreventivatTestPro. Per aiutare gli utenti a riprodurre il flusso di lavoro, ogni fase viene descritta in ordine. Questa sezione presenta i passaggi di esecuzione in un formato strutturato per facilitare la riproduzione dei risultati, indicare i checkpoint importanti e garantire che il framework PreventivatTestPro possa essere utilizzato in modo coerente in diversi contesti sperimentali o operativi.
In questo passaggio, l'interfaccia grafica di PreventivtativeTestPro può essere utilizzata per scegliere il miglior flusso di lavoro per i test preventivi. La Figura 3 mostra cinque scelte, ognuna delle quali rappresenta un passaggio diverso nel processo di test: eseguire test in parallelo, creare la suite di test monitorando l'output dando priorità ai casi esistenti, creare casi di test manuali, creare casi di test automatizzati e trovare la causa principale. Quando l'utente fa una scelta, inizia il flusso di lavoro designato. Successivamente, modalità aggiuntive (come la generazione di casi di test guidata dall'IA o l'analisi della causa radice) possono essere aggiunte nelle fasi successive. Questa interfaccia ben organizzata offre un modo per condurre studi di test preventivi che possono essere ripetuti e scomposti in parti più piccole.

Figura 3: Interfaccia utente 1 del sistema. Questa figura mostra l'interfaccia utente di PreventivaTestPro, che permette di scegliere tra cinque modi diversi per effettuare test preventivi: 1. Test preventivo, esecuzione parallela: inizio dei test, 2. Test preventivo, finalizzazione della suite di test basata sul monitoraggio delle app sintetiche, 3. Test preventivo, generazione di casi di test manuali usando GenAI, 4. Test preventivo, generazione di casi di test automatizzati usando GenAI, 5. Test preventivo, Analisi delle cause radici usando GenAI. Si può scegliere solo un'opzione alla volta. Il design modulare facilita la realizzazione di test preventivi e aggiunge la creazione e la diagnostica di test basate sull'IA. Clicca qui per visualizzare una versione più grande di questa figura.
La Figura 4 mostra l'interfaccia di esecuzione parallela del framework. In questo passaggio, l'utente inserisce l'URL dell'applicazione che vuole testare e il percorso assoluto verso il file delle proprietà che contiene le impostazioni di configurazione. Dopo aver impostato gli input, l'utente può iniziare a eseguire test contemporaneamente cliccando sul pulsante Start Testing, che monitora anche il sito web sotto test e genera i log di sicurezza, prestazioni, console e JavaScript. Si può interrompere l'esecuzione in corso cliccando sul pulsante Stop Testing. Il pulsante Ricevi Raccomandazioni permette di ottenere insight guidati dall'IA dai log registrati. Questo design garantisce che più categorie di test (funzionali, prestazioni e sicurezza) vengano eseguite contemporaneamente, rendendo più facile individuare i problemi più rapidamente.

Figura 4: Interfaccia utente 2 del sistema. Questa figura mostra la modalità di esecuzione parallela del framework PreventivatTestPro. L'utente specifica l'URL dell'applicazione di destinazione e il percorso verso un file proprietà contenente dettagli di configurazione. Le opzioni includono Start Testing (per eseguire test funzionali, di sicurezza e di performance in parallelo e registrare i log), Stop Testing (per fermare l'esecuzione) e Get Recommendation (per ottenere insight guidati dall'IA da log e metriche). Clicca qui per visualizzare una versione più grande di questa figura.
La Figura 5 mostra l'interfaccia di Finalizzazione dei Test basata sul monitoraggio del framework PreventivTestPro. In questo passaggio, l'utente imposta il percorso per il file di output di monitoraggio, la query del percorso JSON per ottenere nodi di errore o eccezione, e il percorso del repository di test per salvare i casi creati. Dopo che gli input sono stati impostati, l'utente può prima ottenere i nomi della classe e del metodo che li accompagnano e poi ordinare i casi di test dal pull di test in base alla classe e al metodo trovati. Questo passaggio di prioritizzazione mostra come utilizzare i dati di monitoraggio per classificare efficacemente i casi di test.

Figura 5: Interfaccia utente 3 del sistema. Questa figura mostra come dare priorità a una suite di test nel framework PreventivatTestPro utilizzando output di monitoraggio sintetico. L'utente inserisce il percorso verso il file di output di monitoraggio, il percorso JSON per ottenere eccezioni/errori e il percorso verso il repository di test (offline). Le opzioni Get Class/Method Name e Get Test Cases possono essere usate per trasformare le anomalie di mappatura in casi di test che si possono eseguire. Questo garantisce che i problemi di esecuzione siano inclusi nel processo di test. Clicca qui per visualizzare una versione più grande di questa figura.
La Figura 6 mostra l'interfaccia di Generazione Manuale dei Casi di Test di PreventativeTestPro. In questo passaggio, l'utente indica al programma dove trovare il file di traccia dello stack che mostra l'anomalia fornendo il percorso assoluto verso il file di traccia dello stack e il percorso verso il file delle proprietà di configurazione. Una volta impostati gli input, si può eseguire l'opzione Genera Casi di Test, che trasformerà l'anomalia in casi di test manuali strutturati. Questo garantisce che gli errori di esecuzione già avvenuti in precedenza siano sempre inclusi nel processo di test. Il framework rende più facile creare casi di test automatizzando il processo. Questo riduce il lavoro manuale, migliora la copertura dei test e rende i test più affidabili, evitando che lo stesso problema si ripeta di nuovo. Questo passaggio è un collegamento molto importante tra individuare i problemi e assicurarsi che la qualità sia buona prima che accada.

Figura 6: interfaccia utente 3 del sistema. Questa figura mostra l'interfaccia di generazione dei casi di test di PreventativeTestPro. Trasforma le tracciazioni di stack anomalie in casi di test manuali nello Sviluppo Guidato dal Comportamento (BDD) che possono essere utilizzati. L'utente fornisce i percorsi verso il file di tracciamento dello stack e il file delle proprietà, poi clicca su "Genera Casi di Test" per creare automaticamente casi che corrispondono al guasto trovato. Questo garantisce che i problemi di esecuzione vengano sempre trasformati in test di regressione che possono essere ripetuti. Clicca qui per visualizzare una versione più grande di questa figura.
La Figura 7 mostra l'interfaccia di Generazione Automatica di Casi di Test di PreventivatTestPro. In questo passaggio, l'utente fornisce il percorso assoluto verso il file di output JSON dell'osservabilità e il percorso verso il file di configurazione della proprietà. Quando si preme il pulsante Genera Caso di Test Automatizzati, il sistema elabora i dati di monitoraggio e crea casi di test che possono essere eseguiti per mostrare gli stessi problemi che sono stati osservati.

Figura 7: Interfaccia utente 4 del sistema. Questa figura mostra l'interfaccia automatizzata di generazione dei casi di test di PreventativeTestPro, che realizza test che possono essere eseguiti utilizzando dati di osservabilità. L'utente fornisce il percorso verso il file proprietà e il file di output JSON di osservabilità. Poi, cliccano su "Genera Casi di Test Automatizzati" per creare script che possono essere eseguiti (in formato Selenium e TestNG). Clicca qui per visualizzare una versione più grande di questa figura.

Figura 8: Interfaccia utente 5 del sistema. Questa figura mostra l'interfaccia strumentale delle anomalie di PreventativeTestPro per l'Analisi delle Cause Radici (RCA). L'utente fornisce il percorso verso il file proprietà e il file di traccia dello stack, poi sceglie RCA per avviare l'analisi guidata dall'IA. Questo passaggio trasforma le anomalie rilevate in insight diagnostici strutturati, che garantiscono che i guasti possano essere risolti in modo ripetibile e specifico per il problema. Clicca qui per visualizzare una versione più grande di questa figura.
Risoluzione dei problemi:
La Tabella 1 mostra i punti di risoluzione dei problemi più importanti che riguardano solo il codice dell'applicazione. Questi punti sono un modo rapido per ricordare come risolvere problemi a livello di codice che sorgono durante l'esecuzione del framework PreventivatTestPro. La documentazione del progetto fornisce ulteriori informazioni e istruzioni passo dopo passo per i lettori che desiderano più aiuto per risolvere problemi che influenzano la funzionalità complessiva dell'applicazione. La risorsa completa può essere ottenuta dal link: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Questo riferimento aggiuntivo garantisce che gli utenti non solo risolvano problemi di programmazione, ma imparino anche a risolvere i problemi delle funzioni, permettendo loro di utilizzare il framework in modo più efficace.
| Comportamento dell'errore | Causa alla radice | Come risolverlo? |
| La domanda non sta iniziando | Java Path non è impostato | Nella variabile Ambiente, imposta la JAVA_HOME |
| Il server si guasta all'avvio | Porta 8080/9090 in uso (Specificamente durante l'uso di Docker) | Aggiorna la mappatura delle porte Docker |
| Il contenuto GenAI è nullo | Il token potrebbe essere scaduto | Genera il token e aggiorna le config.properties prima di fornire questo come input |
| L'istanza del browser generata dal framework non si connette alla rete | O il server ZAP non è in esecuzione oppure le credenziali ZAP sono errate | Attiva lo ZAP prima di eseguire l'applicazione, nel caso in cui sia in esecuzione e il problema persista, aggiorna le credenziali ZAP nel config.properties prima di fornire questo input |
Tabella 1: Errori di sistema comuni proposti e soluzioni rapide. Questa tabella mostra gli errori specifici comuni per applicazione, la risoluzione dei problemi e le soluzioni rapide che possono essere applicate per risolvere i problemi.