How to test context-aware mobile applications?
This talk, presented @WHYMCA 2012 (http://www.whymca.org) discusses why testing context-aware mobile applications is important and initial results towards their automated testing.
See also http://www.henrymuccini.com/mobiletesting
1. Context-Aware Mobile
Applications: come testarle?
Antonio Di Francesco
Patrizio Esposito
Henry Muccini
Universita’ degli Studi dell’Aquila
henry.muccini@di.univaq.it
@muccinihenry
www.henrymuccini.com/MobileTesting
2. Contesto di questo lavoro
Attivita’ di ricerca su mobile applications presso l’Universita’ degli
Studi dell’Aquila
• Testing di applicazioni mobili
• studio delle peculiarita’ del testing di applicazioni mobili
• studio del testing di context-aware mobile app
• Progettazione di applicazioni mobili
• Corso su “Applicazioni per Dispositivi
Mobili” (http://lore.com/course/6623)
3. Trend generale
Situazione attuale:
29 miliardi di applicazioni
scaricate nel 2011.
abiresearch
Valore di mercato:
128 miliardi di dollari (2011).
150 miliardi di dollari (2012).
Strategy Analytics
Previsione:
185 miliardi di apps scaricate
(2014). Gartner
4. Applicazioni Mobile
Tipologia
➢ Applicazioni Native
➢ Applicazioni Web
➢ Applicazioni Ibride
Sistema operativo
appartengono solo alla classe delle applicazioni mobile?
5. Contesto (def)
Definizione
Schilit (1994)
➢ Computing context: connettività del dispositivo, la banda a
disposizione, i costi di comunicazione e le risorse circostanti
con le quali il dispositivo può interagire.
➢ User context: situazione sociale dell’utente, la sua localizzazione e le
sue possibili attività.
➢ Physical context: include la luminosità, il livello di rumore e la
temperatura.
7. Contesto (in classe)
Computing context:
Connettività Wifi UnivAq Hot Spot
➢ User context:
Umore
Stanchezza
Cio’ che successo questa mattina…
Dove sono andato ieri
Periodo dell’anno
➢ Physical context:
Luminosita’
Rumore
8. Applicazioni mobile context-aware
Video: 2012 GM Advanced Tech Window
http://www.youtube.com/watch?v=9G4cYYlIaCc
➢Il mondo fisico si mescola a quello delle informazioni.
➢Mobilità.
"... change the business world..."
9. Applicazioni context-aware
➢ Evoluzione tecnologica dei sensori.
➢ Riproduzione sempre più precisa dell'ambiente.
Video: Microsoft Kinect per Xbox 360
http://www.youtube.com/watch?v=NUYBapS5
nEM&feature=g-hist
12. Trend (context-aware)
➢Influenza della tecnologia context-aware
96 miliardi di dollari entro il 2015 a livello mondiale. gartner
➢Utilizzo della tecnologia
smartphone iOS, Android, Windows Phone o altre piattaforme saranno
utilizzati da più di 1,8 miliardi di persone entro il 2015.
➢Ambienti di studio
La user experience migliora attraverso l'utilizzo delle informazioni sugli
interessi di una persona, le intenzioni, la storia, l'ambiente circostante, le
attività e le connessioni.
Eric Schmidt: “So we do need to extend the vision for context-aware applications to
include the device, it’s characteristics, and the human interface guidelines set out for
the experience.”
13. Perché è importante testarle?
➢Crescita delle applicazioni context-aware nel futuro.
➢ User experience.
Perché è difficile testarle?
➢Sensore traduce il Contesto in una rappresentazione matematica.
➢ Imprevedibilità dell'input contestuale.
➢ Variabilità dell'input contestuale.
14. Perché è importante testarle?
Esempio:Navatar
Video: Navatar: Indoor navigation system for users who are visually
impaired
http://www.youtube.com/watch?v=cBqvkRCxYIw&feature=g-hist
15. Testing
➢Connettività mobile bugs riconducibili all'inaffidabilità delle connessioni.
➢Risorse limitate degradazione delle prestazioni del sistema.
➢Autonomia cattiva implementazione dell'app – memory leak.
➢Sistemi operativi continua inaffidabilità e variabilità.
➢Differenti dispositivi Android: 1800 ambienti diversi di esecuzione.
➢Consapevolezza del contesto bugs: contesti inaffidabili o non gestiti.
“..user experience..”
16. Sviluppo apps sensor-based
public class SensorActivity extends Activity, implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
}
19. Analisi
Sensor Analysis
➢Studio dei sensori attualmente in uso dall’App
se applicazione e' WB, controllo dal codice le chiamate,
se applicazione e' BB:
eseguo il running dell'app sul dispositivo
uso emulatore (e.g., Samsung Sensor Simulator) e sposto
i valori dei sensori per vedere se app emulata reagisce
20. Analisi
Event-sensor Data Analysis/Data Model
➢Link tra sensore ed evento.
➢Rappresentazione matematica dell'evento.
Camminata in linea retta = ?????
•Sollecitazione maggiore sull'asse y. Asse x e z ininfluenti.
•y compreso tra [-14.81 ; -9.81[ e ]9.81 ; 14.81].
•x e z compresi tra [-9.81; 9.81].
?
22. Analisi
Contextual Test Scenarios (CTS) Specification
➢ Scenario reale.
➢ ”muovi k passi in avanti, ruota di 180 gradi, fai x salti” → ” k+x ?”.
23. Selezione
➢ Passo 1: Individuare il sensore utilizzato nell'applicazione.
➢ Passo 2: Individuare la maggior parte degli eventi attinenti
all'applicazione.
➢ Passo 3: Ad ogni evento (passo 2) associare un modello
matematico.
➢ Passo 4: Category Partition Method.
31. Challenges
Utilizzo di vari smart phones nella fase di registrazione
eventi
Cosa accade se l’utente e’ alto 2.5 metri?
Real-timeness?
32. Lavori Futuri
Creazione di librerie per la gestione di scenari noti
Creazione di pattern predefiniti riusabili
nell’esecuzione dei casi di test
Analisi dei dati provenienti da piu’ sensori
Interazione con le aziende
33. Contatti
Henry Muccini (team leader)
www: HenryMuccini.com
email: henry.muccini@di.univaq.it
twit: @muccinihenry
Antonio Di Francesco
email: antonio.difrancesco84@gmail.com
Patrizio Esposito
email: patexp80@gmail.com