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

Documenti analoghi
Realizzazione di un sistema a supporto del testing automatico di Rich Internet Applications

Tecniche per la ricerca di test suite minimali per RIA

Testing automatico di applicazioni Android

Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011

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

Impiego della concept analisys nella classificazione di pagine web ai fini del reverse engineering

Uno Strumento per la ricerca di campi Output e Etichetta in pagine Client

Gui testing automatico di applicazioni Android tramite emulazione di input ed eventi provenienti da sensori

Testing di applicazioni flex: uso dello strumento FlexUnit

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Applicazione software per la classificazione, guidata da query Xpath, di pagine equivalenti ai fini del testing

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

Realizzazione di strumenti per il testing di accessibilità di applicazioni web

Tesi di Laurea: Uno strumento per l estrazione di sessioni utente per applicazioni web JavaScript-based Anno Accademico: 2005/2006

Testing black box di web service: sperimentazione su di un servizio senza stato

Strumenti per l automazione del testing di applicazioni web Javascript-based

Valutazione Comparativa Sperimentale di Tecniche di Testing di Applicazioni Android

Sviluppo di un'interfaccia grafica per l'automatizzazione di campagne di software fault injection. relatore Ch.mo prof.

Metodi e Tecniche per il Riuso di componenti in Applicazioni Android

Esperimenti sul Testing di Rich Internet Applications

Tecniche di automazione del testing: applicazione ad un caso di studio reale

Un'Interfaccia per il Monitoraggio dei Guasti in un'applicazione per il Controllo del Traffico Aereo

STRUMENTI PER LA MISURA SU CODICE ACTIONSCRIPT SVILUPPATI CON JAVACC

Realizzazione di un software a supporto della Classificazione guidata di Pagine Web

Ingegneria dei requisiti di sistema e dei requisiti software della piattaforma MLA con il tool DOORS

Tesi di laurea: Realizzazione di Strumenti per la valutazione di accessibilità di pagine Web

Perfezionamento e sperimentazione di uno strumento per la

Un processo a supporto della classificazione di pagine client Anno Accademico 2006/2007

Analisi di strumenti e tecniche per lo sviluppo di applicazioni Ajax.

Progetto e realizzazione di una libreria per la comunicazione sicura di. dati sui fallimenti in ambiente Android. Anno Accademico 2011/2012

Realizzazione di un software per la gestione di apparecchiature biomedicali Anno Accademico 2010/2011

Progetto e sviluppo di un prototipo per la migrazione di applicazioni Web di tipo Legacy

Uno strumento per la valutazione automatica dell accessibilità delle

Realizzazione di uno strumento software per la compilazione assistita di piani di qualità (richiesta ed offerta) per un Servizio Web

Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica

Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven

Confronto sperimentale tra tecniche di testing automatico per applicazioni Android

Analisi e sviluppo di un client per l accesso a dati su server remoto da dispositivi embedded

TESI DI LAUREA IN INFORMATICA

Università degli Studi di Napoli Federico II

Progetto e sviluppo di un applicazione Android per il controllo di reti di sensori senza filo

Anno Accademico 2007/2008

Rilevazione di malfunzionamenti nei device driver del kernel Linux

Race condition in applicazioni web

Un architettura per la cooperazione di applicazioni: un approccio basato sulla migrazione di applicazioni Legacy

Sviluppo di processi per l automatizzazione del testing per applicazioni Android

Trasformazione di modelli di progetto : soluzioni basate su XSLT

Reverse Engineering di Rich Internet Applications basate su AJAX

I Diagrammi di Flusso OO

Software Testing. Esercizi proposti. Esercizi di Testing 1

Modelli per il Reverse Engineering delle applicazioni Flash

Tecnologie dei Sistemi di Automazione

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

Test in automatico di programmi Android

2. Finalità generali previste dalle indicazioni nazionali

Fondamenti di Informatica

Realizzazione di un processo a supporto dell interoperabilità semantica nel Web

UNIVERSITÀ DEGLI STUDI GUGLIELMO MARCONI FACOLTÀ DI SCIENZE E TECNOLOGIE APPLICATE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA

Strumenti e tecniche per il testing di applicazioni web al variare dei browser

Anno scolastico

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II

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

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Servizi di verifica runtime di Ambienti Intelligenti

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Metodologie per la generazione automatica di codice: extreme Non Programming

PROGETTAZIONE DIDATTICA

Stato dell arte sulle tecniche di testing di Sistemi Embedded

Sistema Operativo Chrome: Analisi degli aspetti peculiari.

Realizzazione di un applicazione per la stesura di un Business Plan

Sviluppo di una piattaforma per lo streaming multimediale in ambiente Android

UNIVERSITA DEGLI STUDI DI NAPOLI «FEDERICO II» CORSO DI LAUREA IN INGEGNERIA PER L AMBINETE E IL TERRITORIO TESI DI LAUREA TRIENNALE

Modelli e strumenti per la generazione automatica di codice

Progetto di un sistema di videosorveglianza basato su tecnologie multi-agente Corso di Laurea Magistrale in Ingegneria Informatica

Università degli Studi della Calabria Facoltà di Ingegneria. Corso di Diploma in Ingegneria Informatica TESI DI DIPLOMA

Prefazione...IX. Ringraziamenti...XIII. Gli autori...xv. Capitolo 1 - Le tecnologie mobili: la nuova generazione di tecnologie dell informazione...

Un'applicazione per lo scambio di contenuti multimediali in ambiente Android

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II

Validazione della piattaforma software per la sperimentazione clinica OpenClinica

Automazione del testing e Analisi Mutazionale

Esercitazioni 13 e 14

Università degli Studi della Calabria Facoltà di Ingegneria. Corso di Diploma in Ingegneria Informatica TESI DI DIPLOMA

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

Un architettura orientata ai servizi per la localizzazione di dispositivi mobili

Valutazione sperimentale di algoritmi per la rilevazione di fallimenti temporali nel sistema operativo Minix3

Automatic generation of test cases

Rilevazione dei fallimenti nel sistema operativo open source Linux per applicazioni critiche Anno Accademico 2006/2007

UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II SCUOLA POLITECNICA E DELLE SCIENZE DI BASE DIPARTIMENTO DI STRUTTURE PER L'INGEGNERIA E L'ARCHITETTURA

Un sistema di interazione uomo-robot per compiti di manipolazione mobile basato su realtà virtuale

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Docente Prò Giuseppe - Corso PENTEST MIND PROJECT A cura di Prò Giuseppe

Javascript: il browser

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione

Transcript:

tesi di laurea Un sistema per il Crawling di Rich Internet Applications Anno Accademico 2008/2009 relatore Ch.ma prof. Anna Rita Fasolino correlatore Ch.mo prof. Porfirio Tramontana candidato Vincenzo Morra Matr. 885/403

Obiettivi e Motivazioni Rich Internet Applications: Applicazioni guidate dagli eventi, che si prestano ad essere modellate con una FSM; Generate Dinamicamente, per cui è necessario adottare di tecniche di analisi dinamica per lo studio del comportamento della RIA; Comunicazione asincrona. Sfide dell ingegneria del software: Applicazione delle tecniche di testing; Applicazione delle tecniche di Reverse Engineering; Scoperta automatica della struttura e dei contenuti delle RIA. Sviluppo di un crawler per l esplorazione di RIA

Il Crawler Esplorazione automatica di RIA. Generazione automatica di tracce di esecuzione della RIA, del tutto equivalenti alle tracce generate manualmente da sessioni utente. Generazione automatica della FSM rappresentante il comportamento della GUI della RIA il modello scelto è la FSM poiché è il più adatto per modellare i sistemi interattivi guidati dagli eventi.

Algoritmo di Crawling Visita in ampiezza; Ad ogni evento, ovvero interazione con un widget, è associata una transizione; Una traccia viene chiusa quando viene incontrata un'interfaccia già intercettata in precedenza; Per poter interagire con un widget bisogna ogni volta ricreare le condizioni nelle quali è stato incontrato originariamente. 1. Procedure start(urlhp,cx,modexec) 2. Browser = InitRobotBrowser() 3. SMM = InitStateMachineManager() 4. NextStatesToVisit = InitNextStatesToVisitList() 5. for widgetset widgetsettocrawl 6. Browser.Crawl(state,widgetset) 7. end for 8. while!nextstatestovisit.isempty() 9. nextstate=nextstatestovisit.poll() 10. If GoToState(nextstate) then 11. for widgetset widgetsettocrawl 12. Browser.Crawl(nextstate,widgetset) 13. end for 14. end if 15. end while 16. end procedure 17. procedure Crawl(state,widgetset) 18. Widgets = SMM.getWidgets(widgetset) 19. while!widgets.isempty() 20. Widget = Widget.poll() 21. if GoToStateLocal(state) then 22. WidgetInteract= RetreiveWidget(Widget.XPath) 23. newinterface = HandleEvent(Widget.event,WidgetInteract) 24. isnewstate=handlenewstate(newinterface) 25. if isnewstate then 26. NextStatesToVisit.add(newinterface) 27. end if 28. end if 29. end while 30. end procedure

Problematiche del Crawler Esplosione degli stati durante l esplorazione automatica della RIA: Il Crawler risolve tale problematica utilizzando una euristica che valuti l equivalenza funzionale tra interfacce per terminare la cattura di una traccia di esecuzione. Ogni volta che si ritorna ad un interfaccia equivalente ad una già esplorata viene interrotta l esplorazione della traccia di esecuzione. Ripristino delle precondizioni necessarie all esplorazione della RIA: Affinché le tracce generate e la FSM siano coerenti bisogna ripristinare ad ogni esecuzione lo stato della RIA, dove per stato si intendono le risorse e le variabili di sessione gestite dal web server.

Problematiche del Crawler Esecuzione del codice Javascript: Il Crawler, dopo l esecuzione di un evento, per poter verificare se lo stato prodotto in seguito all esecuzione dell evento sia equivalente ad uno stato precedentemente visitato deve attendere un tempo sufficiente affinchè possa considerare stabile l interfaccia ottenuta, ovvero per ricevere la risposta, eseguire il codice Javascript e attendere l iniezione nel DOM delle modifiche apportate. Analizzare RIA con stato: Il Crawler ha il problema di mantenere lo stato delle risorse tra una esecuzione e l altra della stessa interfaccia. Si risolve tale problematica introducendo una particolare modalità di esecuzione, che ha inizio con un particolare stato definito come parametro di ingresso e precedentemente raggiunto in una traccia. Il rilascio delle risorse acquisite, quindi l abbandono dello stato, avviene con una predeterminata sequenza di uscita oppure riavviando il web server su cui è in esecuzione la RIA

Architettura del Crawler HtmlUnit è un GUI-Less browser for Java programs ; nello sviluppo del Crawler è stato utlizzato per interagire con le RIA.

Applicazione del Crawler al processo di Testing Il processo di testing è stato proposto dal gruppo di ingegneria del software del DIS ed è in fase sperimentale; CReRIA: tool che permette ad un utente esperto di interagire con la RIA e memorizzare le tracce di esecuzione ed astrarre la FSM della RIA; Test Case Reducer: tool che genera test suite equivalenti alle test suite di ingresso adottando differenti criteri di riduzione; DynaRIA: tool che esegue le test suite di ingresso restituendo le misure dei criteri di copertura e crash che si sono verificati durante l esecuzione dei test case.

Caso di studio: TUDU Criteri di copertura da applicare alle test suite prodotte: Copertura degli stati della FSM; Copertura delle transizioni della FSM; Copertura delle funzioni Javascript; Copertura delle LOC Javascript; Fault detection; Dimensione della test suite; Dimensione degli eventi della test suite 3 tecniche di generazione di test suite: G1: Sessioni utente; G2: Automatica tramite il Crawler; L'unione delle 2 precedenti. 4 tecniche di riduzione di test suite: M1: riduzione che tiene conto degli stati della FSM della RIA; M2: riduzione che tiene conto delle transizioni della FSM della RIA; M3: riduzione che tiene conto delle funzioni Javascript della RIA; M4: nessuna riduzione.

Caso di studio: TUDU Dati relativi alle test suite prodotte da G1: Dati relativi alle test suite prodotte da G2: Il tempo di esplorazione è di circa 10 ore; 203 tracce generate; La lunghezza massima delle tracce è di 6 stati; La lunghezza media di una traccia è di circa 4 stati; 754 interfacce sono state intercettate.

Caso di studio: TUDU Dati relativi alle test suite prodotte dall'unione di G1 e G2: Considerazioni: Le test suite prodotte da G1 offrono una copertura degli stati e dei fault maggiori rispetto alle test suite prodotte da G2, ciò è dovuto al criterio di terminazione di una traccia presente nell'algoritmo di crawling; La copertura delle funzioni e dei LOC Javascript sembra essere inefficiente, ma bisogna tener conto che tali percentuali sono dovute all'inutilizzo nella versione attuale di TUDU di molte funzioni Javascript presenti nelle librerie esterne comunque presenti in TUDU. Quindi da tali percentuali non si può dedurre che le test suite siano inefficienti.

Caso di studio: TUDU Considerazioni: Per quanto riguarda la copertura delle transizioni, G1 risulta migliore a G2, in particolare G1 offre una copertura del 91,8% rispetto al 57,4% di G2, questo risultato è indice dell'incapacità del Crawler di simulare il comportamento di un utente esperto nell'interazione con la RIA; In generale G1 offre una copertura maggiore rispetto a G2 rispetto a molto criteri di copertura, però vi sono alcuni criteri in cui G2 una maggiore efficacia; in particolare G2 offre test suite più grandi, ovvero con più test case, e una maggiore copertura degli eventi scatenabili sulla RIA, ovvero delle possibili interazioni con la RIA; G1 ha dei costi molto maggiori rispetto a G2 in quanto prevede l'intervento di un ingegnere del software esperto della RIA per la cattura delle tracce di esecuzione, cosa che non avviene in G2 in cui le tracce sono generate automaticamente dal Crawler; L'unione di G1 e G2 consegue i risultati migliori nella copertura dei criteri, inoltre il costo è equivalente al costo di G1.

Conclusioni e Sviluppi Futuri Conclusioni: Lo sviluppo del Crawler è stato eseguito con successo ed i risultati ottenuti dalle sperimentazioni rispecchiano le ipotesi effettuate in fase di analisi. Sviluppi Futuri: Estendere il crawling anche alle tecnologie Flash e Silverlight; Sviluppare nuove strategie di crawling, sia in termini di algoritmo di visita che di interazioni con le RIA; Applicazione del Crawler al testing regressione; Esecuzione parallela del Crawler.