presentazione della tesi di laurea specialistica : strumenti per la generazione automatica di test...
DESCRIPTION
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.infoTRANSCRIPT
UNIVERSITÀ DEGLI STUDI DI GENOVASCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E
FUNZIONALI
Relatore Accademico Prof. Enrico GiunchigliaCorrelatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)Candidato Maurizio Pianfetti
TOOLS FOR TEST GENERATION IN BLACK-BOX AND WHITE-BOX TESTING
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 ?
Motivazioni
Automazione della generazione ed esecuzione dei test per la riduzione dei tempi e costi del testing
Processo di software testing è essenziale per ridurre i malfunzionamenti
Più tempoper 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
Test Funzionali (Black-Box) vs Strutturali (White-Box)
Test funzionale
Black Box Testing
Partition Testing (Input Domain Model)
� Basandosi sull'interfaccia
� Basandosi sulle funzionalità
Error based Testing
� Basandosi sugli errori
Test strutturale White Box Testing
Sono complementari ed ognuno può rilevare malfunzionamenti non rivelabili con l’altro.
Obiettivi
� 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.
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.)
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
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
Nessuno di essi effettua una generazione automatica di dati di input, quindi si è deciso di sviluppare una nuova applicazione.
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
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
Microsoft Pex (White-Box)
Program EXploration
�Attraverso Dynamic Simbolic Execution, strategia Fitnexe «Microsoft Z3» SMT Solver, modella il grafo dei controlli
return target != (ClassMethod)null && i < 0 && j != 123;
�Genera le Parameterized Unit Testper 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 tramiteMicrosoft Moles,permettendo di“Molare” o “creare Stub” di metodi esterni richiamati, per rendere indipendente il codice testato
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)
Microsoft Pex su Benchmarks Hand-Crafted (White-Box)
Strategie di Pex Copertura
Pex-Default2 99,19%
Pex-Default-VS2010 99,05%
Pex-Default5-VS2010 98,79%
Pex-Default4_MaxSolver10 97,88%
Pex-FrontierBreadthFirst 93,18%
Pex-Default3 84,95%
Pex-FrontierRandom 84,36%
Pex-FrontierDepthFirst 60,10%
Pex-FrontierIterativeDeepening 32,07%
Metodo Tests Durata Copertura
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%
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%
synth_b2_s5_k1_rnd3(TestCFiles, Int32, Int32, Int32, Int32)10 11,14 100,00%
synth_b2_s5_k1_rnd4(TestCFiles, Int32, Int32, Int32, Int32)9 9,71 100,00%
synth_b2_s5_k1_rnd5(TestCFiles, Int32, Int32, Int32, Int32)9 9,40 100,00%
synth_b2_s5_k1_rnd6(TestCFiles, Int32, Int32, Int32, Int32)10 11,20 100,00%
synth_b2_s5_k1_rnd7(TestCFiles, Int32, Int32, Int32, Int32)9 11,24 100,00%
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%
StrumentoN. Test Totali
Generati
SAT&PREF 262
TeGeVe 300
Pex-Default2 933,27
noPref 945
SAGE 2115
Risultati delle esecuzioni di Pex effettuate per l’analisi di 2200 metodi, confrontati con quelli dei singoli strumenti sperimentali in termini di n. di test generati, durata dell’esecuzione (sec) e copertura del codice raggiunta
Casi reali testati con Microsoft PexStrumenti 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
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
UNIVERSITÀ DEGLI STUDI DI GENOVASCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
Un rigraziamento a tutti per avermi ascoltatoMaurizio Pianfetti
[email protected]://boymix81.mynickname.info
Relatore Accademico Prof. Enrico GiunchigliaCorrelatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)