Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Tesi di laurea relatore Ch.mo prof. Domenico Cotroneo correlatore Ing. Roberto Pietrantuono candidato Mario Tranchese Matr. 534/2073 Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Anno Accademico 2006/2007
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Testing e debug di piattaforme software long-running Workload driven stress testing Identificazione dei fault tramite analisi dei log prodotti Contesto Nel caso in cui si hanno workloads di grosse dimensioni, unanalisi manuale dei file di log è dispendiosa e complessa
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Obiettivi Migliorare lefficienza delle fasi di testing e debugging per piattaforme long-running, utilizzando congiuntamente: Workload di stress Workload di stress Motori inferenziali Motori inferenziali
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Sottoporre il sistema a workloads di stress, monitorandone lesecuzione. Utilizzare i log risultanti dalla fase precedente per derivare un modello rappresentativo del comportamento corretto. Confrontare i log corrispondenti ad esecuzioni terminate con insuccesso, con il modello di riferimento corretto Identificazione di sequenze di eventi anomali La Tecnica
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Strumenti necessari per lapplicazione della tecnica: Strumenti per il monitoraggio : JVMMon Strumenti per il monitoraggio : JVMMon Strumenti per lanalisi dinamica : BCT, ADABU Strumenti per lanalisi dinamica : BCT, ADABU Altri strumenti analizzati Altri strumenti analizzati DAIKON DAIKON FUJABA TOOL SUITE FUJABA TOOL SUITE ARGO ARGO DISCOTECT DISCOTECT Un caso di studio : la Java Virtual Machine (JVM)
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Tool per il monitoraggio della JVM i cui componenti sono: 1. Monitoring Agent 2. Local Monitor Daemon 3. Data Collector JVMMon
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Instrumentazione ed esecuzione dell'applicazione Derivazione invarianti Invarianti di I/O DAIKON Invarianti di I/O DAIKON Invarianti di interazione KBehavior Invarianti di interazione KBehavior Object Flattening Mutators Mutators Inspectors Inspectors BCT (Behavior Capture and Test)
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Preparazione dellambiente Selezione e classificazione di bachi prelevati dal SUN Bug Database Bug di memoria e di concorrenza Bug di memoria e di concorrenza Monitoraggio e logging Monitoring della JVM tramite JVMMon Monitoring della JVM tramite JVMMon Data Collecting Data Collecting Derivazione dei modelli comportamentali Derivazione dei modelli comportamentali Sperimentazione
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Analisi dei risultati 5 bachi di memoria su 8 e 2 bachi di concorrenza su 8 sono stati identificati immediatamente grazie alle informazioni sulle violazioni raccolte. 5 bachi di memoria su 8 e 2 bachi di concorrenza su 8 sono stati identificati immediatamente grazie alle informazioni sulle violazioni raccolte. Utilizzando ADABU su applicazioni JAVA ed iniettando dei faults, invece, le violazioni rilevate non hanno dato informazioni utili alla fase di debug Utilizzando ADABU su applicazioni JAVA ed iniettando dei faults, invece, le violazioni rilevate non hanno dato informazioni utili alla fase di debug Risultati BCTPro 1.Open-source 2.Crea FSA 3.Adatto a ritrovare problemi di memoria Contro 1.Tempi di pre-processing lunghi 2.Formattazione input (presenza metodi SET e GET) 3.Complesso ADABUPro 1.Tempi di pre-processing brevi 2.Semplice 3.Crea FSA Contro 1.Formattazione input (presenza metodi SET e GET) 2.Non Open-source 3.Risultati insoddisfacenti
Esperimenti di testing della JVM basati sullutilizzo di workload di stress e di motori inferenziali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Sviluppi futuri Migliorare : precisione di analisi (falsi positivi) precisione di analisi (falsi positivi) selezione dei workloads selezione dei workloads studio di altri tools di analisi dinamica e di monitoring studio di altri tools di analisi dinamica e di monitoring Conclusioni 1.E stata sperimentata una tecnica per migliorare lefficienza di testing e debugging per piattaforme long-running 2.La tecnica è stata sperimentata sulla JVM 3.Nel 50% dei casi circa è stato possibile risalire immediatamente alle root causes, facilitando il debug