Testing di applicazioni flex: uso dello strumento FlexUnit

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

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

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

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

TESI DI LAUREA IN INFORMATICA

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

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

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

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

Metodi e Tecniche per il Riuso di componenti in Applicazioni Android

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

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

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

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

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

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

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

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

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

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

Anno Accademico 2007/2008

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

Uno strumento a supporto del Reverse Engineering di applicazioni Flash

Sviluppo di strumenti grafici su una Web Application per il data mining

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

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

A. Ferrari. informatica. introduzione a Java. Alberto Ferrari Informatica

Test in automatico di programmi Android

Università degli Studi di Napoli Federico II

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

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

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

ANALISI COMPARATIVA DEGLI STRUMENTI DI BUSINESS INTELLIGENCE PER PMI

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

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

Programmazione web lato client con JavaScript. Marco Camurri 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Introduzione a Linux. Storia di UNIX

Oggetto software. stati o proprietà (variabili) comportamenti o metodi (funzioni)

Java: un linguaggio per applicazioni di rete

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

Flash platform e accessibilità

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Software Testing. Esercizi proposti. Esercizi di Testing 1

Un architettura orientata ai servizi per la localizzazione di dispositivi mobili

Programmazione Orientata agli Oggetti in Linguaggio Java

Uno strumento per la valutazione automatica dell accessibilità delle

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

Stato dell arte sulle tecniche di testing di Sistemi Embedded

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

Strumenti per il testing di applicazioni in ambiente Android

Esperimenti sul Testing di Rich Internet Applications

Sintesi e sperimentazione di un modello di propagazione sonora per l analisi di reti di sensori sottomarine

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate

Introduzione a Java A. FERRARI

Servizi di verifica runtime di Ambienti Intelligenti

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

Javascript e CSS nelle pagine WEB

Testing. Esempio. Esempio. Soluzione 1. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009. Come fare???

Tesi di: Andrea Baraldi Relatore: Prof. Riccardo Martoglia. Università degli studi di Modena e Reggio Emilia 1

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi

Modelli per il Reverse Engineering delle applicazioni Flash

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

Tesi di Laurea Triennale in Ingegneria Informatica REALIZZAZIONE DI UN APPLICATIVO PER LA GESTIONE DI FOGLI DI LAVORO INTEGRATO IN OUTLOOK 2010

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

Programmazione con Java

Modularizzazione del software

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

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

Testing automatico di applicazioni Android

1 SAP Netweaver e Adobe BlazeDS Framework Flex

Il Web come Interfaccia Utente di un Sistema Informativo

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Tecniche e strumenti per la validazione di codice Java: un esempio applicativo

STRUTTURA DI UN PROGRAMMA!

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

Variabili e assegnazione

Corso di JavaScript. M. Malatesta 4-Funzioni e strutture di controllo-03

Guida introduttiva al PHP

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

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

Trasformazione di modelli di progetto : soluzioni basate su XSLT

Le basi del linguaggio Java

Integrazione tra simulazione numerica e dati reali in procedure automatiche di collaudo

Web 2.0 e Web Services nell'era dei Social Network. Snal: un caso di studio

Introduzione ORGANIZZAZIONE DEL LIBRO. Il libro è composto da 12 capitoli organizzati nelle tre parti seguenti:

Open Database Connectivity (ODBC)

Modelli e strumenti per la generazione automatica di codice

Lo Standard OPC. Materiale Didattico: Dispense OPC UA Inglese e Italiano Esercizio Client OPC UA Java (stampare il file word e portarlo a lezione!

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

4. I moduli in Access 2000/2003

SERVER. licences and i. t. mana ger GESTIONE, MONITORAGGIO, DISTRIBUZIONE LICENZE

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Transcript:

tesi di laurea Anno Accademico 2010/2011 relatore Ch.mo prof. Porfirio Tramontana candidato Gionatan Murru Matr. 534001578

Problematiche affrontate: 1. Cos e Flex 2. Come è strutturato 3. Come è possibile testare l interfaccia di applicazioni Flex 4. Possibilità di uso della tecnica Fault Injection come supporto per il testing Soluzioni proposte: Sviluppo di una particolare applicazione come esempio per realizzare le operazioni di testing Proposta dello strumento FlexUnit come supporto del testing per applicazioni Flex Uso in FlexUnit della tecnica Fault Injection Considerazioni finali

Flex è un framework per sviluppare applicazioni interattive e grafiche. È basato su Flash. Lo sviluppo prevede la sinergia tra due linguaggi: ActionScript e MXML L'obiettivo di Flex è quello di permettere un rapido e facile sviluppo di applicazioni ioni Rich Internet Application, meglio conosciute come RIA

Il linguaggio ActionScript: Il linguaggio MXML: È un linguaggio ad alto livello È orientato agli oggetti Non è compilato, ma interpretato (o pseudocompilato) Si basa su ECMAScript e la sua sintassi è molto simile a JavaScript Istanzia un formato di file, chiamato SWF, adatto per applicazioni grafiche e interattive È un linguaggio proprietario della Macromedia, basato su XML È strutturato in tag Il suo compito è quello di sviluppare la GUI (Grafical User Interface) della nostra interfaccia. Il suo compilatore unisce il file binario MXML con l SWF, ovvero il file ActionScript già compilato, ed esegue l applicazione su un browser web

La nostra applicazione sviluppata in Flex: Una Calcolatrice scientifica memorizzata su server remoto, in cui solo la parte dell'applicazione che elabora i dati è trasferita a livello client.

Testing di applicazioni Flex FlexUnit: è un insieme di librerie open source distribuite dalla Adobe come supporto per il testing di applicazioni Flex. Esso simula, per le applicazioni Flex, quelle che sono le stesse funzionalità di JUnit3 per le applicazioni Java. Per testare l interfaccia con FlexUnit viene scritto del codice che simuli l uso dell applicazione. In questo modo si automatizza il testing in modo che l operazione può essere ripetuta quante volte si voglia e di volta in volta confrontare il risultato ottenuto con quello atteso. Esempio: vogliamo simulare la pressione dei pulsanti della nostra calcolatrice in modo che svolga l operazione di somma (3+5). Il risultato ottenuto verrà poi raffrontato con il valore atteso (8).

FlexUnit(2): Codice e report del risultato del test FlexGlobals.topLevelApplication.tre.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); FlexGlobals.topLevelApplication.p.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); FlexGlobals.topLevelApplication.cinque.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); FlexGlobals.topLevelApplication.u.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); assertequals(flexglobals.toplevelapplication.disp.text, 8 ); Il test è fallito in quanto non è stato riscontrato nessun errore. L icona verde di validazione sta ad indicare che il valore atteso coincide con quello ottenuto in output dal test (8)

Fault Injection in Flex: Viene iniettato volontariamente un errore nel codice dell applicazione in modo da osservare il comportamento dell intero sistema in base a questa singola perturbazione. Nel nostro caso abbiamo prodotto delle versioni difettate, ognuna contenente un errore. Sono stati simulati gli errori che più frequentemente possono presentarsi durante la scrittura del codice dell applicazione Di seguito si riporta un esempio.

public function piu():string{ if (disp.text!=" "){ //funzione di somma del codice originale a=number(disp.text); //viene recuperato dal display il numero, il quale viene } //poi associato all operando piu (somma) op="piu"; //viene poi pulito il display per poter inserire il secondo disp.text= " "; //operando e quindi viene svolta l operazione return op; } Lo sostituiamo con: public function piu():string{ //ora se per sbaglio venissero digitati due o più operatori disp.text=" "; //(es. prima per e poi diviso ) tra gi operandi, il a=number(disp.text); //risultato non sarebbe corretto secondo le aspettative op="piu"; disp.text= " "; return op; } Per verificare il guasto automatizziamo l operazione (5)(-)(+)(3). L oracolo ha valore 8 perché per motivi di standardizzazione, viene considerato valido per l operazione, l ultimo operando immesso (+ nel nostro caso) tra i due valori (5 e 3). Il risultato ottenuto invece è 3. Analizzando i valori di stato delle variabili si comprende che il risultato ottenuto è 3 perché non imponendo nessun vincolo per quanto riguarda la pressione concatenata di più operatori, l ultima operazione viene svolta come se fosse la prima (e unica) avendo come primo operatore 0 (di default). Di conseguenza l applicazione svolge (0)(+)(3)=(3).

Conclusioni FlexUnit: i pro e i contro È gratuito È supportato nativamente da Flex Non è molto complesso da usare Usa lo stesso linguaggio di Flex (ActionScript) Utilizza solo criteri black box Nel testing dell interfaccia, bisogna incapsulare l intero codice dell applicazione nel codice di testing appesantendo la sua esecuzione