* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT S ERVIZI E N OTIFICHE
* * 1.Design Android apps 2.Testing Android apps Sommario
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Principi del design
* * 1.Incantare Esperienza piacevole: animazione, grafica, suoni 2.Simplificare la vita 3.Permettere sentirsi forte Principi del design primadopo
* * 1.Incantare Esperienza piacevole: animazione, grafica, suoni Oggetti reali contro menu’ o bottoni 2.Simplificare la vita 3.Permettere sentirsi forte Principi del design
* * 1.Incantare Esperienza piacevole: animazione, grafica, suoni Oggetti reali contro menu’ o bottoni Personalizzare 2.Simplificare la vita 3.Permettere sentirsi forte Principi del design
* * 1.Incantare Esperienza piacevole: animazione, grafica, suoni Oggetti reali contro menu’ o bottoni Personalizzare Imparare l’utente 2.Simplificare la vita 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice 3.Permettere sentirsi forte Principi del design Signing in... Your phone needs to communicate with Google servers to sign in to your account. This may take up to five minutes. Signing in... Your phone needs to communicate with Google servers to sign in to your account. This may take up to five minutes. Signing in... Your phone is contacting Google. This can take up to 5 minutes. Signing in... Your phone is contacting Google. This can take up to 5 minutes. Consult the documentation that came with your phone for further instructions. Read the instructions that came with your phone. Sorry! Activity MyAppActivity (in application MyApp) is not responding Sorry! Activity MyAppActivity (in application MyApp) is not responding MyApp isn’t responding Do you want to close it? MyApp isn’t responding Do you want to close it?
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo Suggerire la decisione 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo Suggerire la decisione Visualizzare le cose solo quando servono 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo Suggerire la decisione Visualizzare le cose solo quando servono Non perdere il mio lavoro e i miei dati 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo Suggerire la decisione Visualizzare le cose solo quando servono Non perdere il mio lavoro e i miei dati Sembra uguale – deve agire ugualmente 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita Breve e semplice Figure contro testo Suggerire la decisione Visualizzare le cose solo quando servono Non perdere il mio lavoro e i miei dati Sembra uguale – deve agire ugualmente Interrompere solo se importante 3.Permettere sentirsi forte Principi del design
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Riutilizzare i pattern Principi del design
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Riutilizzare i pattern Aiutare l’utente a risolvere problemi Principi del design
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Riutilizzare i pattern Aiutare l’utente a risolvere problemi Feedback Principi del design
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Riutilizzare i pattern Aiutare l’utente a risolvere problemi Feedback Rendere semplici le cose complicate Principi del design
* * 1.Incantare 2.Simplificare la vita 3.Permettere sentirsi forte Riutilizzare i pattern Aiutare l’utente a risolvere problemi Feedback Rendere semplici le cose complicate Velocizzare accesso alle cose importanti Principi del design
* * Struttura dell’app Top level Categorie Dettaglio / modifica Anche “Start Screen”! contenuti prima di tutto funzionalita’ principali dell’app
* * 1.Fixed tabs Se l’utente cambia viste frequentemente Numero limitato delle viste (pref. < 4) Bisogna stressare la presenza delle viste 1.Spinners Spazio e’ critico Si usano sullo stesso dataset o sullo stesso tipo dei dati 2.Navigation drawer Spazio e’ critico Tanti elementi top-level Albero di navigazione e complicato Abilitare accesso ai livelli inferiori Top Level: Navigazione
* * Azioni: confermare o informare?
* * 1.Design Android apps 2.Testing Android apps Sommario
* * Android testing Android include un framework di test, basato su JUnit (versione 3), che aiuta a provare tutti gli aspetti di un’applicazione. Gli SDK tools includono gli strumenti per configurare e lanciare le applicazioni di test. È possibile agire tramite Eclipse con gli Android Development Tools, oppure lavorare via linea di comando. Per comodità noi suggeriamo di usare...
* * Android testing #2 Robotium è un framework piuttosto semplice da usare per fare testing in Android in maniera rapida. È stato creato per testare applicazioni anche complicate con sforzo minimo.
* * Android testing #2 ●White-box testing Metodo di testing di un software che verifica la struttura e/o gli elementi interni ●Black-box Metodo di testing che verifica le funzionalità del software non conoscendone gli elementi o la struttura interna Per comodità seguiamo un esempio di white-box testing.
* * Android testing: guida 1.Creare un nuovo Android Test Project 2.Alla richiesta di Test target indicare il progetto di cui vogliamo fare test 3.Scegliere la Min SDK version 4.Creare un nuovo JUnit Test Case 5.Aggiungere al Java Build Path il robotium.jar scaricato dal sito 6.Scrivere il test :) 7.Lanciare con Run as > Android JUnit Test
* * Android testing: il test case package com.example.example.test; import junit.framework.Assert; import android.test.ActivityInstrumentationTestCase2; import com.example.example.MainActivity; import com.robotium.solo.Solo; public class TestMain extends ActivityInstrumentationTestCase2 { private Solo solo; public TestMain() { super(MainActivity.class); protected void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); }
* * Android testing: il test case #2 public void testPreferenceIsSaved() throws Exception { String nome = "Giovanni"; solo.sendKey(Solo.MENU); Assert.assertTrue(solo.searchText("Aggiungi")); solo.clickOnText("Aggiungi"); solo.goBack(); solo.sendKey(Solo.MENU); Assert.assertTrue(solo.searchText("Aggiungi")); solo.clickOnText("Aggiungi"); solo.enterText(0, nome); solo.pressSpinnerItem(0, 1); solo.clickOnCheckBox(0); solo.clickOnButton("OK"); Assert.assertTrue(solo.searchText(nome)); }
* * Android testing: mock locations E’ il modo di testare le app che usano LocationService. Come funziona? 1.Abilitare mock locations 1.In despositivo: Impostazioni > Opzioni di sviluppo 2.In codice: // Define a LocationClient object public LocationClient mLocationClient;... // Connect to Location Services mLocationClient.connect();... // When the location client is connected, set mock mode mLocationClinet.setMockMode(true); … LocationClient.disconnect(), // or LocationClient.setMockMode(false).
* * Android testing: mock locations E’ il modo di testare le app che usano LocationService. Come funziona? 1.Abilitare mock locations 1.In despositivo: Impostazioni > Opzioni di sviluppo 2.In codice: 2.Mandare posizioni (meglio utilizzare un’app esterna): Location newLocation = new Location(“flp”); // importante usare flp! newLocation.setLatitude( ); newLocation.setLongitude( ); newLocation.setAccuracy(3.0f); mLocationClient.setMockLocation(newLocation);