SlideShare a Scribd company logo
Università degli Studi di Salerno
Dipartimento di Informatica
Implementation and comparison of novel techniques for
automated search based test data generation
Tesi di Laurea Magistrale in Informatica
Relatore	
Prof. Andrea De Lucia
Candidato	
Giovanni Grano
Outline
Approcci
implementati
Caso di
studio
Conclusioni e
sviluppi futuri
OCELOTOverview
OVERVIEW
Search Based Software Engineering
Applica	tecniche	di	ricerca	euristiche	a	tipici	problemi	dell’ingegneria	del	
software,	opportunamente	riformulati	come	problemi	di	ottimizzazione
algoritmi	genetici hill	climbing
AVM algoritmi	memetici
Search Based Software Testing
0
175
350
525
700
1975 1979 1983 1989 1993 1997 2001 2005 2008 2011 2013
SBST	è	una	sotto	area	di	SBSE	che	utilizza	euristiche	di	ottimizzazione	per	tecniche	di	
ricerca,	con	lo	scopo	di	automatizzare	i	processi	di	testing
generazione	automatica minimizzazione	di	test	case
prioritizzazione	di	test	case selezione	di	test	case
OCELOT
Overview del processo
!
"
#
$
%
&
Instrumentazione
del codice sorgente
Generazione del
makefile
Compilazione
della libreria
Selezione dei
target
Ricerca soluzione
Simulazione
if (a == 10) {
b = 11;
} else {
b = 10;
}
if (_f_ocelot_trace(
a == 10, //condizione originale
_f_ocelot_eq_numeric(a, 10), //distanza da true
_f_ocelot_neq_numeric(a, 10) //distanza da false
)){
b = 11;
} else {
b = 10;
}
Instrumentazione
Traccia gli eventi
Registra le distanze
Compilazione
Ubuntu Linux
'

)*
Windows
Mac OS X
Generazione del
makefile
Supporto
multipiattaforma
if (a == 10) {
b = 11;
} else {
b = 10;
}
Java Library+ Lista di eventi,
Esecuzione e simulazione
Data la lista di eventi registrati e il CFG della
funzione, si simula l’esecuzione sul grafo
0 0.2
scelta distanza False distanza True
false 0 0.2
Esecuzione e simulazione
Java Library+ Lista di eventi,
Puntatori
test (int a, int b, int* c, int* d, int* e)
#1	numeri	reali
1	array	∀	puntatore
#1	array	di	associazione
Ridefinizione del cromosoma
[10,22] a	e	b
[0,	1,	22,	3] array	#0
[23,	2,	2,	65] array	#1
[22,	56,	3,	3] array	#2
[0,	0,	1] associazione	puntatori
Una matrice tiene traccia dei puntatori
agli array presenti nel cromosoma
0 1 22 3
23 2 2 65
22 56 3 3
if (c == d)
if (d == e)
return true; L’indice di riga viene utilizzato per calcolare la
distanza dal target
Approccio path di base + single target
Un target per ogni cammino linearmente
indipendente
Approach level
Numero	di	nodi	del	path	obiettivo	non	coperti
Branch distance
Somma	delle	distanze	nel	punto	in	cui	il	path	diverge
Ricerca single-target sui branch non coperti
" parametri
 archi
. T.C. 1
/ no T.C.
" single target
. T.C. 2
APPROCCI IMPLEMENTATI
Many Object Sorting Algorithm
Riformulazione della branch coverage come problema multi-obiettivo Riformulazione della funzione di fitness
Sia	B	=	{b1,	…,	bm}	l’insieme	dei	branch	del	programma,	occorre	
trovare	un	insieme	di	casi	di	test	che	ottimizzi	la	copertura	degli	
m	branch
Vettore di fitness
La	soluzione	è	rappresentata	da	un	vettore	di	fitness	{f1,	…,	fm}.	
Per	ogni	target	viene	considerata	la	somma	tra	branch	distance	
e	approach	level
Dominanza e ottimalità di Pareto
Ogni	soluzione	è	valutata	in	termini	di	dominanza	di	Pareto	e	
ottimalità	di	Pareto
Many Object Sorting Algorithm
Un	caso	di	test	x*		si	dice	Pareto	ottimale	se	e	solo	se	non	
è	dominato	da	nessun	altro	caso	di	test	
Ottimalità di Pareto
Un	caso	di	test	x	domina	un	altro	caso	di	test	y	se	e	solo	
se:
Dominanza di Pareto
Ranking tradizionale vs nuovo criterio di
preferenza
Many Object Sorting AlgorithmMany Object Sorting Algorithm
L’algoritmo
1 Popolazione random iniziale
2 Si	applicano	crossover	e	mutazione
Generazione offspring
3 Algoritmo di preference sorting
4 In	accordo	al	rank	assegnato	e	alla	
crowding	distance
Generazione nuova popolazione
5 Le	soluzioni	che	coprono	un	target	
vengono	aggiunte	ad	un	archivio
Archiviazione delle soluzioni
Pi
Qi
F0
F1
F2
preference
sorting
Fn
soluzioni
rigettate
Pi+1
nuova
popolazione
crowding distance
Algoritmo basato sul CDG
Algoritmo memory-based che cerca di massimizzare la coverage collaterale
Copertura collaterale
Attraverso	l’analisi	del	Control	Dependence	Graph	si	mira	a	
massimizzare	la	coverage	collaterale	per	un	dato	caso	di	test
Funzione di fitness secondaria
Una	funzione	di	fitness	secondaria	misura	la	coverage	
collaterale	raggiunta	
Coverable branches
Attraverso	il	CDG	calcoliamo	il	numero	di	coverable	branches	
per	un	arco	obiettivo
Algoritmo basato su CDG
S
61
32 87
54
FTFT
FT
Coverable edges
Funzione di fitness per la collateral coverage
CASO DI STUDIO
Research Questions

Branch coverage
RQ	1
'
# casi di test
RQ	2
0
Convergenza
RQ	3
I	due	approcci	introdotti	sono	stati	valutati	empiricamente	utilizzando	come	baseline	la	metodologia	basata	sui	path	linearmente	
indipendenti
!
1
Caso di studio
1Funzioni	sotto	esame
!Setting
funzione LOC #branch V(G)
triangle 21 14 7
gimp_rbg_to_hsl_int 58 14 7
gimp_rbg_to_hsc4 62 18 9
cliparc 136 64 32
Csqrt 26 6 3
Parametro valore
popolazione iniziale 100
crossover rate 0.8
mutation rate 0.2
constant mutation rate mutation rate/20
search budget 30.000
2
2Operatori
tipologia operatore
selezione Binary Tournament
crossover SBX Crossover
mutazione Polynomial + Constant Mutation
RQ 1. Branch coverage
0
0,3
0,5
0,8
1
triangle gimp_rgb_to_hsl_int gimp_rgb_to_hsc4 cliparc Csqrt
1,00
0,95
0,67
0,910,91
1,00
0,95
0,67
0,930,93
1,00
0,95
0,67
0,930,93
McCabe MOSA CDG	Based
RQ 2. Dimensione della test suite
0
12,5
25
37,5
50
triangle gimp_rgb_to_hsl_int gimp_rgb_to_hsc4 cliparc Csqrt
3
15
3
56
3,2
16,6
2,8
5
6,8
4
43,5
32
11,210,5
McCabe MOSA CDG	Based
RQ 3. Velocità di convergenza
0
50000
100000
150000
200000
triangle
76.532
26.351
196.766
McCabe MOSA CDG	Based
0
75000
150000
225000
300000
gimp_rgb_to_hsl_int
66.280
6.054
259.252
0
225000
450000
675000
900000
gimp_rgb_to_hsc4
66.280
340
841.764
0
400000
800000
1200000
1600000
cliparc
133.753
79.420
1.526.544
0
375
750
1125
1500
Csqrt
1.427
1.086
1.409
Analisi dei risultati
Coverage Test Suite Size
Convergenza
RQ1 RQ2
RQ3
L’algoritmo	multi-obiettivo	converge	dopo	un	numero	di	valutazioni	
delle	soluzioni	candidate	estremamente	più	piccolo
Convergenza
I	nuovi	approcci	garantiscono	una	test	suite	del	50%	più	piccola,	
rispetto	all’approccio	dei	path	di	base,	al	netto	della	minimizzazione
Test Suite Size
Gli	algoritmi	introdotti	in	OCELOT	non	incrementano	il	livello	di	
coverage	raggiunto	dalla	tecnica	dei	path	di	base
Coverage
In sommario
Sviluppi futuri
25%
13%
9%
Approcci multi-obiettivo su un
insieme ridotto di branch
S
61
32 87
54
FTFT
FT
109
FT
Sviluppi futuri
25%
13%
9%
Uso di algoritmi evolutivi non
genetici
grazie per l’attenzione
g.grano@studenti.unisa.it
Giovanni Grano

More Related Content

What's hot

Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmimattuzzi
 
Automi probabilistici temporali e loro verifica formale
Automi probabilistici temporali e loro verifica formaleAutomi probabilistici temporali e loro verifica formale
Automi probabilistici temporali e loro verifica formale
Orlando Selenu
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
Flow chart
Flow chartFlow chart
Flow chart
orestJump
 
Diagrammiblocchi 1228237260540857-9[2]
Diagrammiblocchi 1228237260540857-9[2]Diagrammiblocchi 1228237260540857-9[2]
Diagrammiblocchi 1228237260540857-9[2]GervasiChristian
 
Machine learning - Schede
Machine learning - SchedeMachine learning - Schede
Machine learning - Schede
Nicola Gentili
 

What's hot (7)

Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmi
 
Thesis Maggioni Slide it
Thesis Maggioni Slide itThesis Maggioni Slide it
Thesis Maggioni Slide it
 
Automi probabilistici temporali e loro verifica formale
Automi probabilistici temporali e loro verifica formaleAutomi probabilistici temporali e loro verifica formale
Automi probabilistici temporali e loro verifica formale
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 
Flow chart
Flow chartFlow chart
Flow chart
 
Diagrammiblocchi 1228237260540857-9[2]
Diagrammiblocchi 1228237260540857-9[2]Diagrammiblocchi 1228237260540857-9[2]
Diagrammiblocchi 1228237260540857-9[2]
 
Machine learning - Schede
Machine learning - SchedeMachine learning - Schede
Machine learning - Schede
 

Viewers also liked

MapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on Large ClustersMapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on Large Clusters
Giovanni Grano
 
Media digi pack music albums
Media digi pack music albums Media digi pack music albums
Media digi pack music albums
LDW18
 
Estudio de caso LINA CORTES
Estudio de caso LINA CORTESEstudio de caso LINA CORTES
Estudio de caso LINA CORTES
Lina12892
 
Speed It App
Speed It AppSpeed It App
Speed It App
Giovanni Grano
 
NoSql - Key Value
NoSql - Key ValueNoSql - Key Value
NoSql - Key Value
Giovanni Grano
 
Social media & cityfm89
Social media & cityfm89Social media & cityfm89
Social media & cityfm89
Syeda Sani-e-Zahra Bukhari
 
A simple and rapid dna extraction method from FINA nd qPCR
A simple and rapid dna extraction method from FINA nd qPCRA simple and rapid dna extraction method from FINA nd qPCR
A simple and rapid dna extraction method from FINA nd qPCR
Manish Thakur
 
Snapgene
SnapgeneSnapgene
Snapgene
Manish Thakur
 

Viewers also liked (8)

MapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on Large ClustersMapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on Large Clusters
 
Media digi pack music albums
Media digi pack music albums Media digi pack music albums
Media digi pack music albums
 
Estudio de caso LINA CORTES
Estudio de caso LINA CORTESEstudio de caso LINA CORTES
Estudio de caso LINA CORTES
 
Speed It App
Speed It AppSpeed It App
Speed It App
 
NoSql - Key Value
NoSql - Key ValueNoSql - Key Value
NoSql - Key Value
 
Social media & cityfm89
Social media & cityfm89Social media & cityfm89
Social media & cityfm89
 
A simple and rapid dna extraction method from FINA nd qPCR
A simple and rapid dna extraction method from FINA nd qPCRA simple and rapid dna extraction method from FINA nd qPCR
A simple and rapid dna extraction method from FINA nd qPCR
 
Snapgene
SnapgeneSnapgene
Snapgene
 

Similar to Master Thesis

Definizione e comparazione dei modelli di classificazione con Scikit-Learn
Definizione e comparazione dei modelli di classificazione con Scikit-LearnDefinizione e comparazione dei modelli di classificazione con Scikit-Learn
Definizione e comparazione dei modelli di classificazione con Scikit-Learn
Alina Gnerre
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
MichaelFuser
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Boymix81
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Stefano Costanzo
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
Ennio Masi
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Università degli Studi di Trieste
 
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di Re
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di ReIntroduzione all'ottimizzazione strutturale: elaborato di Paolo Di Re
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di ReFranco Bontempi Org Didattica
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningOnofrio Panzarino
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Stefano Costanzo
 
Instance-based learning and Numeric prediction
Instance-based learning and Numeric predictionInstance-based learning and Numeric prediction
Instance-based learning and Numeric prediction
Davide Ciambelli
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
RiccardoScilla
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
RiccardoScilla
 
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittivaAZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
Ariel Cedola
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Gestione corsi con TYPO3
Gestione corsi con TYPO3Gestione corsi con TYPO3
Gestione corsi con TYPO3Ivano Luberti
 
Design Exploration: Sviluppo telaio per vettura formula sae
Design Exploration: Sviluppo telaio per vettura formula saeDesign Exploration: Sviluppo telaio per vettura formula sae
Design Exploration: Sviluppo telaio per vettura formula sae
Marco Basilici
 
Monitoraggio di applicazioni software mediante modelli di Markov - slides
Monitoraggio di applicazioni software mediante modelli di Markov - slidesMonitoraggio di applicazioni software mediante modelli di Markov - slides
Monitoraggio di applicazioni software mediante modelli di Markov - slides
rkjp
 
Tecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi DistribuitiTecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi Distribuiti
K-Tech Formazione
 
Extended Summary of Optimized Design of a Human Intranet Network
Extended Summary of Optimized Design of a Human Intranet NetworkExtended Summary of Optimized Design of a Human Intranet Network
Extended Summary of Optimized Design of a Human Intranet Network
OlesiaRonzon
 

Similar to Master Thesis (20)

Definizione e comparazione dei modelli di classificazione con Scikit-Learn
Definizione e comparazione dei modelli di classificazione con Scikit-LearnDefinizione e comparazione dei modelli di classificazione con Scikit-Learn
Definizione e comparazione dei modelli di classificazione con Scikit-Learn
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
 
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di Re
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di ReIntroduzione all'ottimizzazione strutturale: elaborato di Paolo Di Re
Introduzione all'ottimizzazione strutturale: elaborato di Paolo Di Re
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learning
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
 
Instance-based learning and Numeric prediction
Instance-based learning and Numeric predictionInstance-based learning and Numeric prediction
Instance-based learning and Numeric prediction
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
 
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittivaAZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Gestione corsi con TYPO3
Gestione corsi con TYPO3Gestione corsi con TYPO3
Gestione corsi con TYPO3
 
Design Exploration: Sviluppo telaio per vettura formula sae
Design Exploration: Sviluppo telaio per vettura formula saeDesign Exploration: Sviluppo telaio per vettura formula sae
Design Exploration: Sviluppo telaio per vettura formula sae
 
Presentazione ufficiale
Presentazione ufficialePresentazione ufficiale
Presentazione ufficiale
 
Monitoraggio di applicazioni software mediante modelli di Markov - slides
Monitoraggio di applicazioni software mediante modelli di Markov - slidesMonitoraggio di applicazioni software mediante modelli di Markov - slides
Monitoraggio di applicazioni software mediante modelli di Markov - slides
 
Tecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi DistribuitiTecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi Distribuiti
 
Extended Summary of Optimized Design of a Human Intranet Network
Extended Summary of Optimized Design of a Human Intranet NetworkExtended Summary of Optimized Design of a Human Intranet Network
Extended Summary of Optimized Design of a Human Intranet Network
 

Master Thesis

  • 1. Università degli Studi di Salerno Dipartimento di Informatica Implementation and comparison of novel techniques for automated search based test data generation Tesi di Laurea Magistrale in Informatica Relatore Prof. Andrea De Lucia Candidato Giovanni Grano
  • 4. Search Based Software Engineering Applica tecniche di ricerca euristiche a tipici problemi dell’ingegneria del software, opportunamente riformulati come problemi di ottimizzazione algoritmi genetici hill climbing AVM algoritmi memetici
  • 5. Search Based Software Testing 0 175 350 525 700 1975 1979 1983 1989 1993 1997 2001 2005 2008 2011 2013 SBST è una sotto area di SBSE che utilizza euristiche di ottimizzazione per tecniche di ricerca, con lo scopo di automatizzare i processi di testing generazione automatica minimizzazione di test case prioritizzazione di test case selezione di test case
  • 7.
  • 8. Overview del processo ! " # $ % & Instrumentazione del codice sorgente Generazione del makefile Compilazione della libreria Selezione dei target Ricerca soluzione Simulazione
  • 9. if (a == 10) { b = 11; } else { b = 10; } if (_f_ocelot_trace( a == 10, //condizione originale _f_ocelot_eq_numeric(a, 10), //distanza da true _f_ocelot_neq_numeric(a, 10) //distanza da false )){ b = 11; } else { b = 10; } Instrumentazione Traccia gli eventi Registra le distanze
  • 10. Compilazione Ubuntu Linux '  )* Windows Mac OS X Generazione del makefile Supporto multipiattaforma
  • 11. if (a == 10) { b = 11; } else { b = 10; } Java Library+ Lista di eventi, Esecuzione e simulazione Data la lista di eventi registrati e il CFG della funzione, si simula l’esecuzione sul grafo
  • 12. 0 0.2 scelta distanza False distanza True false 0 0.2 Esecuzione e simulazione Java Library+ Lista di eventi,
  • 13. Puntatori test (int a, int b, int* c, int* d, int* e) #1 numeri reali 1 array ∀ puntatore #1 array di associazione Ridefinizione del cromosoma [10,22] a e b [0, 1, 22, 3] array #0 [23, 2, 2, 65] array #1 [22, 56, 3, 3] array #2 [0, 0, 1] associazione puntatori Una matrice tiene traccia dei puntatori agli array presenti nel cromosoma 0 1 22 3 23 2 2 65 22 56 3 3 if (c == d) if (d == e) return true; L’indice di riga viene utilizzato per calcolare la distanza dal target
  • 14. Approccio path di base + single target Un target per ogni cammino linearmente indipendente Approach level Numero di nodi del path obiettivo non coperti Branch distance Somma delle distanze nel punto in cui il path diverge Ricerca single-target sui branch non coperti " parametri  archi . T.C. 1 / no T.C. " single target . T.C. 2
  • 16. Many Object Sorting Algorithm Riformulazione della branch coverage come problema multi-obiettivo Riformulazione della funzione di fitness Sia B = {b1, …, bm} l’insieme dei branch del programma, occorre trovare un insieme di casi di test che ottimizzi la copertura degli m branch Vettore di fitness La soluzione è rappresentata da un vettore di fitness {f1, …, fm}. Per ogni target viene considerata la somma tra branch distance e approach level Dominanza e ottimalità di Pareto Ogni soluzione è valutata in termini di dominanza di Pareto e ottimalità di Pareto
  • 17. Many Object Sorting Algorithm Un caso di test x* si dice Pareto ottimale se e solo se non è dominato da nessun altro caso di test Ottimalità di Pareto Un caso di test x domina un altro caso di test y se e solo se: Dominanza di Pareto Ranking tradizionale vs nuovo criterio di preferenza
  • 18. Many Object Sorting AlgorithmMany Object Sorting Algorithm L’algoritmo 1 Popolazione random iniziale 2 Si applicano crossover e mutazione Generazione offspring 3 Algoritmo di preference sorting 4 In accordo al rank assegnato e alla crowding distance Generazione nuova popolazione 5 Le soluzioni che coprono un target vengono aggiunte ad un archivio Archiviazione delle soluzioni Pi Qi F0 F1 F2 preference sorting Fn soluzioni rigettate Pi+1 nuova popolazione crowding distance
  • 19. Algoritmo basato sul CDG Algoritmo memory-based che cerca di massimizzare la coverage collaterale Copertura collaterale Attraverso l’analisi del Control Dependence Graph si mira a massimizzare la coverage collaterale per un dato caso di test Funzione di fitness secondaria Una funzione di fitness secondaria misura la coverage collaterale raggiunta Coverable branches Attraverso il CDG calcoliamo il numero di coverable branches per un arco obiettivo
  • 20. Algoritmo basato su CDG S 61 32 87 54 FTFT FT Coverable edges Funzione di fitness per la collateral coverage
  • 22. Research Questions  Branch coverage RQ 1 ' # casi di test RQ 2 0 Convergenza RQ 3 I due approcci introdotti sono stati valutati empiricamente utilizzando come baseline la metodologia basata sui path linearmente indipendenti
  • 23. ! 1 Caso di studio 1Funzioni sotto esame !Setting funzione LOC #branch V(G) triangle 21 14 7 gimp_rbg_to_hsl_int 58 14 7 gimp_rbg_to_hsc4 62 18 9 cliparc 136 64 32 Csqrt 26 6 3 Parametro valore popolazione iniziale 100 crossover rate 0.8 mutation rate 0.2 constant mutation rate mutation rate/20 search budget 30.000 2 2Operatori tipologia operatore selezione Binary Tournament crossover SBX Crossover mutazione Polynomial + Constant Mutation
  • 24. RQ 1. Branch coverage 0 0,3 0,5 0,8 1 triangle gimp_rgb_to_hsl_int gimp_rgb_to_hsc4 cliparc Csqrt 1,00 0,95 0,67 0,910,91 1,00 0,95 0,67 0,930,93 1,00 0,95 0,67 0,930,93 McCabe MOSA CDG Based
  • 25. RQ 2. Dimensione della test suite 0 12,5 25 37,5 50 triangle gimp_rgb_to_hsl_int gimp_rgb_to_hsc4 cliparc Csqrt 3 15 3 56 3,2 16,6 2,8 5 6,8 4 43,5 32 11,210,5 McCabe MOSA CDG Based
  • 26. RQ 3. Velocità di convergenza 0 50000 100000 150000 200000 triangle 76.532 26.351 196.766 McCabe MOSA CDG Based 0 75000 150000 225000 300000 gimp_rgb_to_hsl_int 66.280 6.054 259.252 0 225000 450000 675000 900000 gimp_rgb_to_hsc4 66.280 340 841.764 0 400000 800000 1200000 1600000 cliparc 133.753 79.420 1.526.544 0 375 750 1125 1500 Csqrt 1.427 1.086 1.409
  • 27. Analisi dei risultati Coverage Test Suite Size Convergenza RQ1 RQ2 RQ3 L’algoritmo multi-obiettivo converge dopo un numero di valutazioni delle soluzioni candidate estremamente più piccolo Convergenza I nuovi approcci garantiscono una test suite del 50% più piccola, rispetto all’approccio dei path di base, al netto della minimizzazione Test Suite Size Gli algoritmi introdotti in OCELOT non incrementano il livello di coverage raggiunto dalla tecnica dei path di base Coverage
  • 29. Sviluppi futuri 25% 13% 9% Approcci multi-obiettivo su un insieme ridotto di branch S 61 32 87 54 FTFT FT 109 FT
  • 30. Sviluppi futuri 25% 13% 9% Uso di algoritmi evolutivi non genetici