Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript



Documenti analoghi
Tesi di Laurea Automazione del testing delle Interfacce utente di applicazioni WEB:

Strategie per il miglioramento dei log applicativi basate su Software Fault Injection

Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux

Strumento per l iniezione di guasti software nel sistema operativo GNU/Linux

Sviluppo di processi per l automatizzazione del testing per applicazioni Android

con ANTLR tesi di laurea Anno Accademico Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr

tesi di laurea Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana candidato Pasquale Ludi Matr. 534\000438

Università degli studi Roma Tre Dipartimento di informatica ed automazione. Tesi di laurea

Uno strumento per la valutazione automatica dell accessibilità delle

Realizzazione di un tool di instrumentazione automatica a supporto della failure analysis

Generazione Automatica di Asserzioni da Modelli di Specifica

Uno strumento per il deployment automatico di performance test su piattaforme per la distribuzione di dati

Analisi empirica dei meccanismi di log in sistemi open-source!

Realizzazione di un prototipo di un software web based per la gestione di un inventario comunale

Un architettura per la gestione dei log di applicazioni distribuite

Analisi e sviluppo di un componente per un ESB open source

Titolo della tesi Testing Black Box di un Web Service : sperimentazione su di un servizio con stato

Realizzazione di un applicazione per la stesura di un Business Plan

Valutazione sperimentale di tecniche di testing per software in relazione ai tipi di guasti

Analisi e utilizzo di un framework per lo sviluppo di applicazioni web

Progettazione di un tool a supporto di un metodo per la selezione delle tecniche di test

Un framework a supporto della sperimentazione di tecniche euristiche. per l ottimizzazione di pagine Web per Screen Readers

Strumenti per la gestione della configurazione del software

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Test in automatico di programmi Android

Il Pattern MVC nei Framework di sviluppo per applicazioni Web. Analisi e comparazione di SPRING MVC Framework e ASP.NET MVC Framework.

Reingegnerizzazione del processo di test nel contesto Exprivia

Confronto sperimentale tra tecniche di testing automatico per applicazioni Android

Realizzazione di uno strumento web-based per la simulazione remota di reti di sensori senza filo

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Realizzazione di interazioni sincrone e asincrone tra applicazioni Web 2.0

Confronto tra strumenti e tecniche per il Reverse Engineering in Macromedia Flash e Microsoft Silverlight

TIMESHARK: Uno strumento per la visualizzazione e l analisi delle supertimelines. Relatore: Federico Grattirio

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

Sviluppo e integrazione di strumenti a supporto del reverse engineering di applicazioni flash

Sistema Operativo Chrome: Analisi degli aspetti peculiari.

Una piattaforma per la negoziazione di servizi business to business attraverso la rete Internet

Progetto ed implementazione di un tool di supporto allo sviluppo di applicazioni per Linux LibeRTOS

Tecniche di riuso del software: applicazione ad un caso di studio reale

Tesi di laurea specialistica SPERIMENTAZIONI DI TECNICHE DI TESTING STATICO PER APPLICAZIONI ANDROID

Progettazione e sviluppo di uno strumento di monitoraggio dei componenti software di un sistema per il controllo del traffico aereo

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Analisi e sviluppo di un sistema automatico per la segnalazione di stati anomali dei job del Data Center S.Co.P.E.

Un sistema per l'emulazione delle reti su cluster di macchine virtuali Anno Accademico 2007/2008

Introduzione all Information Retrieval

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Uno strumento per l emulazione di fallimenti hardware in sistemi virtualizzati

Grid on Cloud : Implementazione e Monitoraggio

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Implementazione di un servizio VoIP in ambienti SOA per mobile computing

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Strumenti per il testing di applicazioni in ambiente Android

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Realizzazione di un framework di monitoring per l'analisi di sistemi critici Anno Accademico 2013/2014

CONNETTORE MAILUP PER MICROSOFT DYNAMICS CRM

Definizione di metodi e tecniche per il testing di applicazioni Android Sensor Based

TRASMISSIONE REPORTISTICA MENSILE. WEB SERVICE Descrizione procedura

Realizzazione di Web Service per l estrazione di informazioni da siti web enciclopedici

PROGRAMMAZIONE MODULARE DI INFORMATICA CLASSE QUINTA - INDIRIZZO MERCURIO SEZIONE TECNICO

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

REFERENZIAZIONI 2001) NUP

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Un sistema di identificazione basato su tecnologia RFID

Progetto Campo Base. Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram

Programma del Corso per Segretaria d Azienda:

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Indice. Indice Premessa e scopo del documento Ambiente operativo Architettura di sistema... 5

Un sistema per il Crawling di Rich Internet Applications Anno Accademico 2008/2009

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

SMD: a sensor data distribution service for FIN-BOX middleware for the interoperability in systems of systems Anno Accademico 2011/2012

Sviluppo e manutenzione di un applicazione CAD tramite le WPF e l MV-VM

XML (extensible Markup Language)

B.P.S. Business Process Server ALLEGATO C10

Sistema Ambiente 2010": Il Network Nazionale della Biodiversità. Checklist, chiavi di identificazione, archivi di immagini ed altre risorse

ITI M. FARADAY Programmazione modulare a.s

Liceo Tecnologico. Indirizzo Informatico e Comunicazione. Indicazioni nazionali per Piani di Studi Personalizzati

Un Sistema Informativo per il Monitoraggio di Apparati Radar mediante l uso di Griglie Computazionali

Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo Enterprise!

tesi di laurea Anno Accademico 2004/2005 relatore Ing. Massimo Ficco candidato Pasquale Incarnato Matr. 534/938

Firewall applicativo per la protezione di portali intranet/extranet

Realizzazione di un sistema di logging prototipale per la piattaforma

UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

Progetto e sviluppo di unʼapplicazione iphone per lʼaccesso a reti di sensori senza fili."

Scenario di Progettazione

UN SUPPORTO AUTOMATICO PER LA RACCOLTA E L ANALISI DI DATI SPERIMENTALI DI UN MIDDLEWARE PER LA DISTRIBUZIONE DI DATI

La Metodologia adottata nel Corso

Pag. 1 WIDE (I) josh: la piattaforma software per il KM. josh - Modello logico WIDE (II) josh - Modello fisico. Modello dei processi (I)

VoloPress MediaCoverage

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

1. BASI DI DATI: GENERALITÀ

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Una metodologia per la definizione dei livelli di criticità dei componenti di un sistema software complesso

01KTF CV. Architetture distribuite per i sistemi infomativi aziendali. Presentazione del corso

Introduzione a Quantum GIS (QGIS) - passaggio dal software ArcView 3.x a software GIS OpenSource

soluzioni di e-business knowledge management

Transcript:

tesi di laurea di difetti all interno di codice Javascript Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana correlatore Ch.mo ing. Domenico Amalfitano candidato Vincenzo Riccio Matr. 534/2557

Contesto Testing di Rich Internet Application (RIA) basate su AJAX Stato dell arte Processi di Testing di RIA proposti dal DIS che utilizzano tracce d esecuzione reali ottenute: Da sessioni utente Attraverso tecniche di crawling Obiettivo Supportare la sperimentazione riguardo l efficacia l dei processi di testing di RIA proposti Soluzione proposta Sviluppo di tecniche e strumenti per l automatizzazione l delle operazioni di iniezione di difetti in codice Javascript a supporto degli esperimenti condotti sul Testing di RIA

Processo di valutazione dell efficacia efficacia del testing Valutare la capacità delle tecniche di testing proposte di individuare malfunzionamenti in una RIA reale necessita disponibilità del codice sorgente della RIA con difetti reali conosciuti ma difetti reali non sono sempre disponibili o conosciuti Fault Seeding: Step 1: Iniettare tipologie di difetti noti nel codice di una RIA Step 2: Rilevare malfunzionamenti sfruttando le tecniche e gli strumenti di testing proposti

Modalità d iniezione di difetti Automatica Basata su tassonomia Tecnica compile-time basata su mutazioni del codice Sfrutta le espressioni regolari Codice JS statico del client Vantaggi Possibilità di iniettare nel codice della RIA un maggior numero di difetti in minor tempo rispetto all approccio approccio manuale Possibilità di scegliere la distribuzione statistica delle tipologie di difetti Contributo Sviluppo di una Tassonomia di difetti delle RIA basate su AJAX Sviluppo di un sistema software a supporto del Fault Seeding automatico

Sviluppo della Tassonomia dei difetti Fase 1: Studio delle tassonomie presenti in letteratura Tassonomia dei difetti delle applicazioni Web di Marchetto et al. Tassonomia dei difetti delle GUI di Memon et al. Classificazione errori del linguaggio Javascript Fase 2: Proposta di una tassonomia dei difetti delle RIA Dominio: RIA basate su AJAX Dimensione: Natura dell errore errore nel codice Javascript E. Semantici E. Runtime Sottocategorie: Classi di difetti utilizzate da Memon et al. per il seeding di difetti in GUI

Estensione della Tassonomia Ciascuna tipologia di difetto è specializzata da un insieme di istanze Le istanze di difetti sono descritte da regole di mutazione del codice, composte da: Pattern Replacement Implementazione La tassonomia è stata implementata come un documento XML Accessibile dal tool tramite XML DOM Consultabile e modificabile dal tester Espressioni regolari (regexp( regexp) Strumento compatto e flessibile per descrivere pattern complessi all interno di testi Utilizzate per la ricerca e la sostituzione di porzioni di testo descritte dai pattern extensible Markup Language Linguaggio di markup per la memorizzazione ed il trasporto dei dati Utilizzato per strutturare i dati attraverso tag definite dall utente

Fault Seeder Sviluppato in Funzionalità: Iniezione automatizzata di difetti nei file delle RIA contenenti codice JS secondo diverse modalità: Iniezione di un difetto D in un file F Iniezione di un difetto D in un file casuale contenuto in una cartella Iniezione di K difetti casuali in un file F Iniezione di K difetti casuali in una cartella Creazione di un set di N difetti Creazione di copie difettate della RIA Ripristino della versione originale della RIA Architettura Le tre funzionalità principali sono state implementate in tre eseguibili per garantire maggiore flessibilità nel processo di Fault Seeding

Fair Seeding φi ((ωi / Ω) Φ) Ove: φi istanze di difetti iniettate per classe i Ω somma di tutte le opportunità per tutte le classi ωi numero di opportunità per classe Φ numero totale di difetti da iniettare Funzionalità del Tool che consente d iniettare d un set d istanze d di tipologie di difetti distribuite in modo proporzionale ai punti del codice in cui è possibile iniettare tali istanze (opportunit( opportunità) L utente fornisce in input: Cardinalità del set Seme di casualità Path della cartella in cui si trova il codice della RIA Il sistema: Ispeziona il codice per ottenere per ciascuna classe di difetti le opportunità d iniezione Distribuisce equamente (fair( fair) ) le istanze per ciascuna classe di difetti in base alla regola:

Sperimentazione RIA target Goal Dimostrare l efficacia l del Tool in uno scenario reale Modalità di sperimentazione Iniezione nei file del codice con estensione.jsp Creazione di un Set di file difettati di cardinalità 100 Seme di casualità 0 Risultato dell esperimento esperimento Ω=546 105 difetti iniettati ( Φ( Φ) Le regole di mutazione sono valide ed efficaci Gestisce liste di cose da fare AJAX-based Open source CATEGORIA TIPOLOGIA DI DIFETTO ID ω i φ i SEMANTIC 002 2 0 007 8 2 008 8 2 Modifica di un operatore relazionale 009 8 2 010 5 1 011 5 1 012 5 1 035 5 1 Inversione dello statement 036 25 5 Modifica di operatori logici 038 10 2 Variazione dell'ordine dei parametri 040 37 7 041 48 9 Set/Return di un valore stringa differente 042 5 1 043 73 14 044 4 1 Set/Return di un valore intero differente 045 2 0 046 2 0 048 12 3 Set/Return di un valore booleano differente 049 2 0 050 1 0 Invocazione di un metodo sintatticamente simile ma non definito 051 87 16 Set/return di una variabile sintatticamente simile 052 49 9 RUNTIME ma non definita 053 43 8 057 40 8 Set/Return di un attributo differente 058 57 11 059 3 1

Esempio // Delete the current todo list. function deletetodolist(listid) { hidetodoslayers(); var listid = document.forms.todoform.listid.value; if (listid!= null && listid!= "null" && listid!= "") { var sure = confirm("<fmt:message key="todo.lists.delete.confirm"/>"); if (sure) { dwr.engine.beginbatch(); todo_lists.deletetodolist(listid); todos.forcegetcurrenttodolists(replycurrenttodolists); document.forms.todoform.listid.value = null; dwr.util.setvalue('todostable', "<div class='message'><fmt:message key="todo.lists.delete.ok"/></div>"); dwr.engine.endbatch(); tracker('/ajax/deletetodolist'); } Regola mutazione Pattern: (\bif\b\s* s*\(\s*)(!?.+ s*)(!?.+\)) )) Replacement: \1!( 1!(\2) Inversione dello statement in una condizione if <%-- if (!(sure)) { File difettato File originale: C:\...\todos_menu.jsp Categoria difetto: semantic Tipologia difetto: Inversione dello statement ID#036 Mutazione effettuata alla 10^ occorrenza del pattern -: if (sure) +: if (!(sure)) --%> todos_menu.jsp todos_menu.jsp.fault0015.fault0015

Obiettivi raggiunti È stata sviluppata una tassonomia di difetti iniettabili automaticamente nel codice client delle RIA AJAX-based È stato realizzato un sistema software che consente di: Iniettare difetti in file del codice sorgente di RIA Creare copie difettate di RIA È stata dimostrata l efficacia l del software attraverso un esperimento su una RIA reale: Tudu Lists Conclusioni Sono stati riscontrati limiti nelle potenzialità espressive delle regexp: Semplicità dei pattern, che interessano singole linee di codice Alcune classi di difetti individuate non sono state implementate nella tassonomia Il software prodotto implementa appieno le funzionalità richieste Sviluppi futuri Studiare la fattibilità di un approccio all ispezione del codice basato su parsing Analizzare diverse RIA reali per implementare la creazione di set di difetti distribuiti con criterio statistico Agganciare il Fault Seeder realizzato ai sistemi di Testing in fase di sviluppo