Breve presentazione del lavoro svolto per la tesi : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI, scaricabile dal sito web http://boymix81.mynickname.info
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI
1. UNIVERSITÀ DEGLI STUDI DI GENOVA
SCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
STRUMENTI PER LA GENERAZIONE
AUTOMATICA DI TEST STRUTTURALI E
FUNZIONALI
TOOLS FOR TEST GENERATION IN
BLACK-BOX AND WHITE-BOX TESTING
Relatore Accademico Prof. Enrico Giunchiglia
Correlatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)
Candidato Maurizio Pianfetti
2. Definizioni
Test : Sistema(dati di input) dati di output
Testing: è il processo di valutazione di un
sistema attraverso strumenti manuali o
automatici col fine di determinare se il
sistema soddisfa i requisiti specificati oppure
se il suo comportamento verificato differisce
da quello atteso
Esito Test: dati di output uguali ai dati attesi ?
3. Motivazioni
Processo di software testing è essenziale
per ridurre i malfunzionamenti
Più tempo per la preparazione dei processi di testing
Meno tempo e costi per il mantenimento e correzione dei difetti
Ma costoso dal 40% al 60% del tempo di sviluppo
Automazione della generazione ed esecuzione dei test per la
riduzione dei tempi e costi del testing
4. Test Funzionali (Black-Box) vs Strutturali (White-Box)
Test funzionale Test strutturale White Box Testing
Black Box Testing
Partition Testing (Input
Domain Model)
Basandosi
sull'interfaccia
Basandosi sulle
funzionalità
Error based Testing
Basandosi sugli errori
Sono complementari ed ognuno può rilevare
malfunzionamenti non rivelabili con l’altro.
5. Obiettivi
Automazione della generazione dei dati di input con l’utilizzo di tools
insieme di dati che rispettano una determinata specifica per il Black-
Box Testing (funzionale)
– sviluppo di un’applicazione per la generazione ed esecuzione
automatica di test per applicazioni web
– utilizzo su due casi di studio (Siti web COL e «ClicLavoro
Campania» sviluppati da ETT s.r.l.)
insieme di test che raggiungono il 100% della copertura del codice per
il White-Box Testing (strutturale)
– confronto di «Microsoft Pex» con altri strumenti di ricerca, in
termini di tempi di calcolo, percentuale di copertura, numero di test
generati
– applicazione di «Microsoft Pex» su due progetti di sviluppo di ETT
s.r.l.
6. Librerie e strumenti per lo sviluppo (Black-Box Testing)
Ricerca di strumenti commerciali ed opensource:
Selenium automates browsers: Framework per più
linguaggi OO per quasi tutti i browser
SoapUI: Applicazione standalone orientata ai WS
Sashi: Applicazione java con creazione di test con un file di
configurazione
Nessuno di essi effettua una generazione automatica di dati di input,
quindi si è deciso di sviluppare una nuova applicazione.
WatiN: «Web Application Testing In .Net»
Libreria per sviluppatori C# (.NET 2.0 – 4.0) per la
navigazione e manipolazione delle pagine web
Compatibile con tutte le versioni di IE fino alla 9 FF 3.6
Semplice e veloce da imparare
7. Strumento «Automatic Tester of Web Pages 1.0»
1. Lettura file di configurazione (eventualmente anche il
file dei dati)
2. Generazione test FORM / LINK
a) Se FORM, generazione dei dati di input
CASUALE_DEFAULT: valore campo HTML
CASUALE_DOMINI: sapendo il dominio di valori,
casuali appartenenti al dominio
CASUALE_FUORIDOMINIO: sapendo il dominio dei
valori, valori casuali, sicuramente non appartenenti al
dominio
CASUALE: tutti i casi
FUNZIONALE: ad ogni campo si specifica il valore da
utilizzare per poter essere certi del risultato atteso e
poterlo verificare
b) Combinazione dei dati per la creazione dei test
3. Esecuzione test
4. Salvataggio report risultati e file dei dati
8. Siti web testati con «Automatic Tester of Web Pages 1.0»
Testing del sito COL, esempio
di generazione casuale dei dati
di input
Testing del sito
«ClicLavoro Campania»,
esempio di utilizzo dei dati
di input su un processo di
compilazione multiform
9. Microsoft Pex (White-Box)
Program EXploration
Attraverso Dynamic Simbolic Execution, strategia Fitnex e
«Microsoft Z3» SMT Solver, modella il grafo dei controlli
return target != (ClassMethod)null && i < 0 && j != 123;
Genera le Parameterized Unit Test per raggiungere la
massima copertura del codice testato / metodi testati
Utilizza l’instrumentation inserendosi nel ".NET profiling
API", prima che il linguaggio sia compilato in codice
macchina, per poter riscrive le istruzioni per affrontare il
problema dell'isolamento tramite Microsoft Moles,
permettendo di “Molare” o “creare Stub” di metodi esterni
richiamati, per rendere indipendente il codice testato
10. Microsoft Pex (DSE) vs SAT&Pref (CBMC) vs Tools
Microsoft Pex è stato confrontato con le funzionalità di strumenti
commerciali (JetBrains dotCover, NConer Desktop, C# Test
Coverage Tool) e con algoritmi di strumenti sperimentali
(TeGeVe, noPref, SAT&PREF e SAGE)
11. Microsoft Pex su Benchmarks Hand-Crafted (White-Box)
Strategie di Pex Copertura Risultati delle esecuzioni di Pex effettuate
Pex-Default2 99,19% per l’analisi di 2200 metodi, confrontati
Pex-Default-VS2010 99,05% con quelli dei singoli strumenti
Pex-Default5-VS2010 98,79%
sperimentali in termini di n. di test generati,
Pex-Default4_MaxSolver10 97,88%
durata dell’esecuzione (sec) e copertura del
Pex-FrontierBreadthFirst 93,18%
Pex-Default3 84,95%
codice raggiunta
Pex-FrontierRandom 84,36% Metodo Tests Durata Copertura
Pex-FrontierDepthFirst 60,10% synth_b2_s5_k1_rnd0(TestCFiles, Int32, Int32, Int32, Int32) 9 9,82 100,00%
synth_b2_s5_k1_rnd1(TestCFiles, Int32, Int32, Int32, Int32) 9 11,08 100,00%
Pex-FrontierIterativeDeepening 32,07%
synth_b2_s5_k1_rnd10(TestCFiles, Int32, Int32, Int32, Int32) 9 10,70 100,00%
synth_b2_s5_k1_rnd2(TestCFiles, Int32, Int32, Int32, Int32) 9 9,95 100,00%
N. Test Totali
Strumento synth_b2_s5_k1_rnd3(TestCFiles, Int32, Int32, Int32, Int32) 10 11,14 100,00%
Generati
synth_b2_s5_k1_rnd4(TestCFiles, Int32, Int32, Int32, Int32) 9 9,71 100,00%
SAT&PREF 262
synth_b2_s5_k1_rnd5(TestCFiles, Int32, Int32, Int32, Int32) 9 9,40 100,00%
TeGeVe 300 synth_b2_s5_k1_rnd6(TestCFiles, Int32, Int32, Int32, Int32) 10 11,20 100,00%
Pex-Default2 933,27 synth_b2_s5_k1_rnd7(TestCFiles, Int32, Int32, Int32, Int32) 9 11,24 100,00%
noPref 945 synth_b2_s5_k1_rnd8(TestCFiles, Int32, Int32, Int32, Int32) 10 10,14 100,00%
synth_b2_s5_k1_rnd9(TestCFiles, Int32, Int32, Int32, Int32) 8 11,17 100,00%
SAGE 2115
12. Casi reali testati con Microsoft Pex
Strumenti sperimentali solo
per C non utilizzabili in .NET,
gli altri ritentuti costosi.
Esecuzione di Pex da MS
VS2010 e da linea di comando
con applicazione di migliorie
suggerite da Pex su due
progetti reali
13. Conclusioni
WatiN si è rilevato una libreria utile ed intuitiva ma a confronto
con altre si è dimostrata la più limitata come numero di browser
supportati e meno aggiornata
«Automatic Tester of Web Pages 1.0» prototipo per migliorare le
attività di testing ed aiutare il tester nel suo lavoro
Pex ha portato migliorie nel codice analizzato nonostante ci sia
voluto diverso tempo per imparare ad usarlo, meglio di SAGE in
termine di numero di test generati ma non efficiente
Pensando ad una architettura MVC, si sono affrontate le tematiche
di come:
– Testare il motore dell'applicazione attraverso i test strutturali
isolando i dati del modello
– Effettuare test funzionali sull'interfaccia
14. UNIVERSITÀ DEGLI STUDI DI GENOVA
SCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
Un rigraziamento a tutti per avermi ascoltato
Maurizio Pianfetti
maurizio.pianfetti@libero.it
http://boymix81.mynickname.info
Relatore Accademico Prof. Enrico Giunchiglia
Correlatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)