Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Tesi di laurea
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Anno Accademico 2006/2007
relatore
Ch.mo prof. Domenico Cotroneo
correlatore
Ing. Roberto Pietrantuono
candidato
Mario Tranchese
Matr. 534/2073
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Contesto
Testing e debug di piattaforme software
long-running
Workload driven stress testing
Identificazione dei fault tramite analisi dei log prodotti
Nel caso in cui si hanno workloads di grosse dimensioni,
un’analisi manuale dei file di log è dispendiosa e complessa
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Obiettivi
Migliorare l’efficienza delle fasi di testing e
debugging per piattaforme long-running,
utilizzando congiuntamente:
 Workload di stress
 Motori inferenziali
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
La Tecnica
Sottoporre il sistema a workloads
di stress, monitorandone
l’esecuzione.
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
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Un caso di studio : la Java Virtual Machine (JVM)
Strumenti necessari per l’applicazione della tecnica:
 Strumenti per il monitoraggio : JVMMon
 Strumenti per l’analisi dinamica : BCT, ADABU
 Altri strumenti analizzati
 DAIKON
 FUJABA TOOL SUITE
 ARGO
 DISCOTECT
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
JVMMon
Tool per il monitoraggio della
JVM i cui componenti sono:
1. Monitoring Agent
2. Local Monitor Daemon
3. Data Collector
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
BCT (Behavior Capture and Test)
Instrumentazione ed esecuzione
dell'applicazione
Derivazione invarianti


Invarianti di I/O
Invarianti di interazione
Object Flattening


Mutators
Inspectors
DAIKON
KBehavior
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Sperimentazione
Preparazione dell’ambiente
Selezione e classificazione di bachi
prelevati dal SUN Bug Database
 Bug di memoria e di concorrenza
Monitoraggio e logging
 Monitoring della JVM tramite JVMMon
 Data Collecting
 Derivazione dei modelli comportamentali
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Risultati
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.
Utilizzando ADABU su applicazioni JAVA ed iniettando dei faults, invece,
le violazioni rilevate non hanno dato informazioni utili alla fase di debug
BCT
1.
2.
3.
1.
2.
3.
Pro
Open-source
Crea FSA
Adatto a ritrovare problemi di memoria
Contro
Tempi di pre-processing lunghi
Formattazione input (presenza metodi
SET e GET)
Complesso
ADABU
1.
2.
3.
1.
2.
3.
Pro
Tempi di pre-processing brevi
Semplice
Crea FSA
Contro
Formattazione input (presenza metodi
SET e GET)
Non Open-source
Risultati insoddisfacenti
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Esperimenti di testing della JVM basati sull’utilizzo di workload di
stress e di motori inferenziali
Conclusioni
1. E’ stata sperimentata una tecnica per migliorare l’efficienza 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
Sviluppi futuri
Migliorare :
 precisione di analisi (falsi positivi)
 selezione dei workloads
 studio di altri tools di analisi dinamica e di monitoring
Scarica

Esperimenti di testing della JVM basati sull`utilizzo di workload di