STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI
Prefazione
In questa tesi sperimentale, applicando la teoria dell'ingegneria del software, sono stati
analizzati e valutati sperimentalmente strumenti che permettono di aumentare
l'automazione del processo di testing delle applicazioni.
Questa tesi è il lavoro congiunto con ETT s.r.l. , società di informatica di Genova, dove si
sono analizzati alcuni progetti e testate diverse applicazioni web progettate e mantenute
dall'azienda. L'obiettivo è stato quello di voler migliorare e velocizzare le attività interne
relative al processo di testing del software, risparmiando così tempo e costi connessi.
Si sono affrontate due tipologie di testing: funzionale e strutturale.
Per quanto riguarda i test strutturali, è stato utilizzato Microsoft Pex, uno strumento per la
generazione automatica di unit test. Si è analizzato il codice sorgente di diversi progetti. È
poi stato utilizzato lo questo strumento per l’analisi di sorgenti banchmark, confrontando i
risultati con quelli di alcuni strumenti sperimentali sviluppati dal gruppo di ricerca presso
STAR-LAB, laboratorio dell'Università degli Studi di Genova (Prof. Enrico Giunchiglia,
Prof. Massimo Narizzano, Dott. Emanuele Di Rosa e Dott. Gabriele Palma).
Per quanto riguarda i test funzionali, è stato progettato e sviluppato uno strumento che
genera ed eseguire automaticamente test per le applicazioni web. Sono state prese in
considerazione le applicazioni software sviluppate da ETT s.r.l. che erano già in
produzione; grazie agli strumenti automatici, si è riusciti a trovare comunque alcuni piccoli
difetti che una volta corretti potranno migliorare la qualità del prodotto finale.
Il Dott. Emanuele Di Rosa dipendente presso ETT s.r.l. è stato il referente aziendale di
questa tesi. Ha contribuito a migliorare il lavoro come guida per l'analisi e il confronto
degli strumenti sperimentali ed ha inoltre supportato nella progettazione e sviluppo dello
strumento per generare automaticamente test per le applicazioni web.
Elenco dei Capitoli
Glossario, Acronimi e Simboli
Prefazione
CAPITOLO 1 Introduzione
1.1. Motivazioni
1.2. Obiettivi
1.3. Organizzazione della Tesi
CAPITOLO 2 Il Testing del software
2.1. Accenni ai modelli di sviluppo
2.1.1. Descrizione dei modelli di sviluppo
Modello a cascata
Modello evolutivo
Modello a spirale
Metodologie agili
2.2. Verifica e convalida
2.2.1. Verifica statica
2.2.2. Verifica dinamica
2.3. Tipologie di Testing
2.3.1. Unit Testing
2.3.2. Test di Regressione
2.3.3. Test di Integrazione
2.3.4. Test di Sistema
2.3.5. Test di Accettazione
2.4. Criteri e determinazione dell'insieme di Test
2.4.1. Criteri di selezione
2.4.2. Criteri fondamentali
2.4.2.1. Black-Box Testing
Partition Testing
Error based Testing
2.4.2.2. White-Box Testing
CAPITOLO 3 Strumenti per la generazione automatica di Test strutturali
3.1. Strumenti sperimentali e commerciali
3.1.1. Prodotti commerciali e open source
NConer Desktop
JetBrains dotCover
Microsoft Pex
3.1.2. Strumenti sperimentali
CHESS
3.1.2.1. Software sperimentali sviluppati in ambito di ricerca
TeGeVe
noPref
SAT&PREF
SAGE
3.2. Microsoft Pex, strumento di analisi per la creazione di Test automatici
3.2.1. Struttura applicativa
3.2.2. Funzionamento dell'analisi effettuata sul codice da Pex
3.2.2.1. Esempio di esplorazione
3.2.2.2. Esecuzione simbolica dinamica
3.2.2.2.1. Instrumentation
3.2.2.3. Strategie
3.2.2.3.1. Strategia Fitnex
3.2.2.4. Risolutore dei vincoli
3.2.3. L’isolamento del codice
3.2.3.1. Tipi di oggetti fittizi
3.2.3.2. Microsoft Moles
3.2.3.3. Pex e Moles
3.2.4. Avvio di Pex ed utilizzo
3.2.4.1. Avvio di Pex da dentro l’ambiente di sviluppo Microsoft Visual Studio
3.2.4.2. Avvio da linea di comando
3.2.4.3. Reportistica
3.2.4.4. Documentazione e supporto a disposizione
CAPITOLO 4 Strumenti per la generazione ed esecuzione automatica di Test funzionali per applicazioni web
4.1. Strumenti esistenti
Selenium automates browsers
WatiN
Sahi
SoapUI
4.2. WatiN, libreria C# per l’automazione della navigazione di applicazioni web
4.2.1. Caratteristiche
4.2.2. L’utilizzo
4.2.2.1. Configurazioni per l'avvio
4.2.2.2. Le librerie
4.2.2.3. Classiche implementazioni
4.2.3. Documentazione
4.2.4. Conclusioni
4.3. Strumento sviluppato per la generazione dei dati di input per il Testing di pagine web utilizzando la libreria WatiN
4.3.1. Introduzione
4.3.2. Funzionalità
4.3.3. File di configurazione
4.3.4. Algoritmo di esecuzione
4.3.5. Note di sviluppo ed utilizzo
4.3.6. Sviluppi da ultimare
CAPITOLO 5 Analisi sperimentale dei casi di studio
5.1. White-box Testing
5.1.1. Microsoft Pex a confronto con i software di ricerca sui sorgenti Benchmarks Hand-Crafted
5.1.1.1. Sorgenti analizzati
5.1.1.2. Risultati e valutazioni di Pex
5.1.1.2.1. Descrizione delle esplorazioni effettuate
5.1.1.2.2. Risultati delle esplorazioni di Pex messe a confronto con quelle degli strumenti sperimentali analizzati
5.1.2. Microsoft Pex sul caso di studio di ETT s.r.l.
5.1.2.1. Applicazione Archivia Log
5.1.2.1.1. Spiegazione dell'utilizzo di Pex sul caso di studio Archivia Log
5.1.2.1.2. Risultati riscontrati delle esplorazioni sul caso di studio Archivia Log
5.1.2.2. Libreria Ett.Common
5.1.2.2.1. Utilizzo di Microsoft Pex sul caso di studio della libreria Ett.Common
5.1.2.2.2. Risultati riscontrati sul caso di studio della libreria Ett.Common
5.2. Black-box Testing sulle applicazioni web di ETT s.r.l.
5.2.1. Testing sul sito web COL attraverso lo strumento sviluppato
5.2.1.1. Risultati sulla generazione automatica dei Test del sito web COL
5.2.1.2. Risultati sull'esecuzione automatica dei Test del sito web COL
5.2.2. Testing sull’applicazione web ClicLavoro Campania attraverso lo strumento sviluppato
5.2.2.1. Risultati sulla generazione automatica dei Test del sito ClicLavoro
5.2.2.2. Risultati sull'esecuzione automatica dei Test del sito ClicLavoro
5.2.3. Testing sul sito web Portale Marche Multifunzionale attraverso Unit Test con l'utilizzo della libreria WatiN
5.2.3.1. Risultati sull'esecuzione delle Unit Test sul sito web Portale Marche Multifunzionale
CAPITOLO 6 Conclusioni
Bibliografia
Presentazione
Video dello strumento sviluppato Esempio 1
Video dello strumento sviluppato Esempio 2