Upload
caj-guglielmi
View
215
Download
3
Embed Size (px)
Citation preview
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso 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 sull’utilizzo di workload di stress e di motori inferenzialiAnno Accademico 2006/2007
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Testing e debug di piattaforme software Testing e debug di piattaforme software long-runninglong-running
Workload driven stress testing Workload driven stress testing
Identificazione dei fault tramite analisi dei log prodottiIdentificazione dei fault tramite analisi dei log prodotti
ContestoContesto
Nel caso in cui si hanno workloads di grosse dimensioni, Nel caso in cui si hanno workloads di grosse dimensioni, un’analisi manuale dei file di log è dispendiosa e complessaun’analisi manuale dei file di log è dispendiosa e complessa
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
ObiettiviObiettivi
Migliorare l’efficienza delle fasi di testing e Migliorare l’efficienza delle fasi di testing e debugging per piattaforme long-running, debugging per piattaforme long-running, utilizzando congiuntamente:utilizzando congiuntamente:
Workload di stressWorkload di stress
Motori inferenzialiMotori inferenziali
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Sottoporre il sistema a Sottoporre il sistema a workloads workloads di stress, monitorandone di stress, monitorandone l’esecuzione.l’esecuzione.
Utilizzare i log risultanti dalla fase Utilizzare i log risultanti dalla fase precedente per derivare un precedente per derivare un modello rappresentativo del modello rappresentativo del comportamento corretto.comportamento corretto.
Confrontare i log corrispondenti Confrontare i log corrispondenti ad esecuzioni terminate con ad esecuzioni terminate con insuccesso, con il modello di insuccesso, con il modello di riferimento correttoriferimento corretto
Identificazione di sequenze Identificazione di sequenze di eventi anomalidi eventi anomali
La TecnicaLa Tecnica
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Strumenti necessari per l’applicazione della tecnica:Strumenti necessari per l’applicazione della tecnica:
Strumenti per il monitoraggio : Strumenti per il monitoraggio : JVMMonJVMMon Strumenti per l’analisi dinamica : Strumenti per l’analisi dinamica : BCTBCT, , ADABUADABU
Altri strumenti analizzatiAltri strumenti analizzati
DAIKONDAIKON FUJABA TOOL SUITEFUJABA TOOL SUITE ARGOARGO DISCOTECTDISCOTECT
Un caso di studio : la Java Virtual Machine (JVM)Un caso di studio : la Java Virtual Machine (JVM)
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Tool per il monitoraggio della Tool per il monitoraggio della JVM i cui componenti sono:JVM i cui componenti sono:
1.1. Monitoring AgentMonitoring Agent
2. 2. Local Monitor DaemonLocal Monitor Daemon
3. 3. Data CollectorData Collector
JVMJVMMonMon
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Instrumentazione ed esecuzione Instrumentazione ed esecuzione dell'applicazionedell'applicazione
Derivazione invariantiDerivazione invarianti
Invarianti di I/O DAIKONInvarianti di I/O DAIKON Invarianti di interazione KBehaviorInvarianti di interazione KBehavior
Object FlatteningObject Flattening
MutatorsMutators InspectorsInspectors
BCT (Behavior Capture and Test)BCT (Behavior Capture and Test)
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Preparazione dell’ambientePreparazione dell’ambiente
Selezione e classificazione di bachiSelezione e classificazione di bachi
prelevati dal prelevati dal SUN Bug DatabaseSUN Bug Database
Bug di memoria e di concorrenzaBug di memoria e di concorrenza
Monitoraggio e loggingMonitoraggio e logging
Monitoring Monitoring della JVM tramite JVMMondella JVM tramite JVMMon Data CollectingData Collecting Derivazione dei modelli comportamentaliDerivazione dei modelli comportamentali
SperimentazioneSperimentazione
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Analisi dei risultatiAnalisi dei risultati 5 bachi di memoria su 8 e 2 bachi di concorrenza su 8 sono stati 5 bachi di memoria su 8 e 2 bachi di concorrenza su 8 sono stati
identificati immediatamente grazie alle informazioni sulle violazioni identificati immediatamente grazie alle informazioni sulle violazioni raccolte.raccolte.
Utilizzando ADABU su applicazioni JAVA ed iniettando dei Utilizzando ADABU su applicazioni JAVA ed iniettando dei faultsfaults, invece, , invece, le violazioni rilevate non hanno dato informazioni utili alla fase di debugle violazioni rilevate non hanno dato informazioni utili alla fase di debug
RisultatiRisultati
BCTBCTProPro
1.1. Open-sourceOpen-source2.2. Crea FSACrea FSA3.3. Adatto a ritrovare problemi di memoriaAdatto a ritrovare problemi di memoria
ControContro1.1. Tempi di pre-processing lunghiTempi di pre-processing lunghi2.2. Formattazione input (presenza metodi Formattazione input (presenza metodi
SET e GET)SET e GET)3.3. ComplessoComplesso
ADABUADABUProPro
1.1. Tempi di pre-processing breviTempi di pre-processing brevi
2.2. SempliceSemplice
3.3. Crea FSACrea FSA
ControContro
1.1. Formattazione input (presenza metodi Formattazione input (presenza metodi SET e GET)SET e GET)
2.2. Non Open-sourceNon Open-source
3.3. Risultati insoddisfacentiRisultati insoddisfacenti
Esperimenti di testing della JVM basati sull’utilizzo di workload di stress e di motori inferenziali
Facoltà di IngegneriaCorso di Studi in Ingegneria Informatica
Sviluppi futuriSviluppi futuriMigliorare :Migliorare :
precisione di analisi (falsi positivi)precisione di analisi (falsi positivi) selezione dei selezione dei workloadsworkloads studio di altri tools di analisi dinamica e di monitoringstudio di altri tools di analisi dinamica e di monitoring
ConclusioniConclusioni
1.1. E’ stata sperimentata una tecnica per migliorare l’efficienza di testing e E’ stata sperimentata una tecnica per migliorare l’efficienza di testing e debugging per piattaforme long-runningdebugging per piattaforme long-running
2.2. La tecnica è stata sperimentata sulla JVMLa tecnica è stata sperimentata sulla JVM3.3. Nel 50% dei casi circa è stato possibile risalire immediatamente alle root Nel 50% dei casi circa è stato possibile risalire immediatamente alle root
causes, facilitando il debugcauses, facilitando il debug