This thesis analyzes two particular challenges of mobile testing that have been largely overlooked to date, lifecycle management and event concurrency, focusing its attention on the Android operating system. Application components are characterized by their lifecycle, i.e. by several working states such as running, paused, destroyed, etc. This mechanism needs to be carefully handled by the developer to avoid crashes or unexpected behaviors, but the available means to test the applications with regard to this aspect are lacking. The proposed work addresses this issue first with a static code analysis approach to recognize possible misuses of components, and then with a dynamic technique that allows the developer to drive the application lifecycle to test its robustness. In addition to lifecycle transitions, mobile applications are characterized by a great number of other events, hundreds of which may be processed every minute, such as sensor data, connectivity changes, user input, network responses, etc. These events can happen in many different orders and frequencies, and, if the developer does not handle them correctly, issues may arise. The second part of this thesis describes an event-based testing approach that allows to observe several events during the application execution and to express consistency checks on their stream by means of a proposed temporal assertions language.
Questa tesi analizza due aspetti critici del testing per dispositivi mobili, la gestione del lifecycle e la concorrenza tra eventi, prendendo il sistema operativo Android come esempio. I componenti delle applicazioni sono caratterizzati dal loro lifecycle (ciclo di vita), cioè diversi stadi come in esecuzione, in pausa, ecc. Questo meccanismo deve essere gestito con attenzione per evitare crash o comportamenti inaspettati, ma le tecniche disponibili per testare questo aspetto sono carenti. Questo documento si occupa di tale problema prima attraverso un'analisi statica del codice per riconoscere possibili criticità, e successivamente tramite una tecnica dinamica che permette allo sviluppatore di controllare il lifecycle dell'applicazione per testarne la robustezza. In aggiunta alle transizioni del ciclo di vita, le applicazioni per dispositivi mobili sono caratterizzate da un gran numero di altri eventi, che possono essere elaborati a centinaia ogni minuto, come informazioni dai sensori, cambi di connettività, attività da parte dell'utente, ecc. Questi eventi possono essere registrati in molti ordini differenti e, se lo sviluppatore non li gestisce in modo corretto, possono insorgere dei problemi. La seconda parte di questa tesi descrive una tecnica per il testing che permette di rilevare diversi eventi durante un'esecuzione dell'applicazione e di esprimere delle condizioni di consistenza su di essi tramite un linguaggio di asserzioni temporali.
Lifecycle and event-based testing for Android applications
GRAZIUSSI, SIMONE
2015/2016
Abstract
This thesis analyzes two particular challenges of mobile testing that have been largely overlooked to date, lifecycle management and event concurrency, focusing its attention on the Android operating system. Application components are characterized by their lifecycle, i.e. by several working states such as running, paused, destroyed, etc. This mechanism needs to be carefully handled by the developer to avoid crashes or unexpected behaviors, but the available means to test the applications with regard to this aspect are lacking. The proposed work addresses this issue first with a static code analysis approach to recognize possible misuses of components, and then with a dynamic technique that allows the developer to drive the application lifecycle to test its robustness. In addition to lifecycle transitions, mobile applications are characterized by a great number of other events, hundreds of which may be processed every minute, such as sensor data, connectivity changes, user input, network responses, etc. These events can happen in many different orders and frequencies, and, if the developer does not handle them correctly, issues may arise. The second part of this thesis describes an event-based testing approach that allows to observe several events during the application execution and to express consistency checks on their stream by means of a proposed temporal assertions language.File | Dimensione | Formato | |
---|---|---|---|
2016_09_Graziussi.pdf
accessibile in internet per tutti
Descrizione: Thesis Text
Dimensione
4.08 MB
Formato
Adobe PDF
|
4.08 MB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/123981