Robotium Tutorial: Android Framework di test con esempio

⚡ Riepilogo intelligente

Robotium è un open source Android framework di automazione dei test che gestisce app native e ibride attraverso la loro interfaccia utente, consentendo a un tester di creare script per scenari funzionali, di sistema e di accettazione che coprono diversi Android attività.

  • 🔘 Corso base: Solo espone i metodi di clic, ricerca, trascinamento e asserzione che ogni Robotium chiamate ai casi di test.
  • ☑️ Compatibile con la scatola nera: I test si collegano ai componenti dell'interfaccia utente in fase di esecuzione, quindi è richiesta una conoscenza minima del codice sorgente dell'applicazione.
  • ✅ Procedura in quattro fasi: Definisci le specifiche del test, scrivi il programma di test, eseguilo su un dispositivo e infine raccogli i risultati.
  • 🧪 Esempio pratico: Un saluto completoAndroidLa classe di test verifica il testo visibile, l'attività corrente e il pulsante Avvia.
  • ️ Due modalità di funzionamento: Avvia i test dall'IDE o da un terminale con il comando adb shell am instrument.
  • ⚙️ Stato attuale: Robotium La versione 5.6.3 rimane l'ultima release, quindi la nuova Android i progetti di solito lo abbinano o lo sostituiscono con Espresso.

Robotium Tutorial

Cosa è Robotium?

Robotium is an Android Framework di test che automatizza i casi di test per applicazioni native e ibride. Robotium, uno sviluppatore può creare robusti casi di test GUI automatizzati per Android applicazioni. Uno sviluppatore può anche scrivere scenari di test funzionali, di sistema e di accettazione che si estendono su diverse Android attività.

Robotium Quadro di prova

Lo standard Android Il framework di test presenta le limitazioni elencate di seguito.

  • Impossibile gestire più attività
  • Le prestazioni di esecuzione del test sono lente
  • I casi di test sono complessi e difficili da implementare

Migliori Robotium il framework è la scelta migliore per condurre test su un Android applicazione.

Robotium è un framework open-source ed è considerato un'estensione del Android framework di test. Utilizzo Robotium, uno sviluppatore può creare robusti casi di test GUI automatizzati per Android applicazioni. Inoltre, uno sviluppatore può scrivere scenari di test funzionali, di sistema e di accettazione che si estendono su più Android attività.

La tabella seguente riassume le caratteristiche avanzate che separano Robotium dal quadro di riferimento della strumentazione semplice.

Funzionalità avanzate di Robotium rispetto allo standard Android quadro strumentale

Funzionalità avanzate di Robotium

Robotium Classi dei casi di test

Robotium spedisce un piccolo set di classi per i test e l'esempio dell'articolo importa il legacy com.jayway.android.robotium.solo pacchetto. Queste classi supportano casi di test che si estendono su più attività e Solo è integrato con ActivityInstrumentationTestCase2.

Nota: corrente Robotium le release espongono la stessa classe sotto il formato più breve com.robotium.solo pacchetto, mentre la coordinata Maven è rimasta com.jayway.android.robotium:robotium-soloRegola l'importazione in modo che corrisponda alla versione del file JAR che aggiungi effettivamente al progetto.

Il diagramma seguente mostra come la classe Solo si posiziona sopra il caso di test della strumentazione.

Classe Solo integrata con ActivityInstrumentationTestCase2 in un Robotium caso di prova

Integrazione di Robotium e ActivityInstrumentationTestCase2

Un tester può scrivere casi di test senza conoscere la progettazione dell'applicazione, il che rende l'approccio una forma di test della scatola neraQuesto è un vantaggio eccezionale rispetto al semplice Android classi di casi di test.

Istruzioni per l’uso: Robotium

Per utilizzare Robotium nella vostra Android Per testare il progetto, è necessario seguire i passaggi seguenti.

Passaggi necessari per aggiungere e utilizzare Robotium dentro un Android progetto di prova

Come si usa Robotium

Per garantire la qualità del tuo Android Per la candidatura, seguire la procedura in quattro fasi descritta di seguito.

  • Progettare le specifiche del test
  • Sviluppare il programma di test
  • Eseguire il caso di test sul dispositivo di destinazione.
  • Raccogli il risultato del test

Il diagramma di flusso sottostante illustra in ordine le quattro fasi.

Diagramma di flusso delle quattro fasi Android procedura di test dell'applicazione

Android procedura di test dell'applicazione

FASE 1) Progettazione delle specifiche di prova

Questo è il primo passo per testare la tua applicazione. In questo passaggio definisci l'obiettivo da testare. Android Un'applicazione ha molti elementi da testare, come l'interfaccia utente, le attività, i componenti e i servizi. Definire chiaramente gli elementi da testare aiuta a ottenere un'ampia copertura dei test.

  • Pianifica le tipologie di test da eseguire (test unitario, test funzionale, test di sistema).
  • Progetta ciascuno caso di prova per la massima copertura mantenendoping Il numero di casi di test è ridotto. Maggiore è la quantità di codice testato, maggiore è la probabilità di individuare tempestivamente i bug.

FASE 2) Scrivere il programma di test

Questa sezione ti guida attraverso la scrittura di un Android programma di prova utilizzando Android JUnit test e Robotium. Supponiamo che tu abbia già sviluppato un Android programma chiamato HelloAndroidQuesto programma possiede le funzioni descritte di seguito.

  • Visualizza sullo schermo il testo "Ciao mondo!".
  • Mostra un CiaoAndroid messaggio visualizzato quando l'utente preme il pulsante "Avvia".

Lo screenshot qui sotto mostra l'applicazione in fase di test in esecuzione su un dispositivo.

CiaoAndroid Applicazione in fase di test che mostra il testo "Hello world" e il pulsante "Start".

CiaoAndroid applicazione

Requisiti di sistema

  • Migliori Android la piattaforma viene fornita con un sistema pre-integrato JUnit 3 struttura, che è ciò che ActivityInstrumentationTestCase2 si basa su.
  • Per creare un Android progetto di prova da Eclipse, la tua macchina ha bisogno di un funzionamento Android Installazione dell'SDK.
  • Installare l'attuale Android SDK della piattaforma anziché una versione precedente bloccata.

Gli screenshot in questa guida utilizzano Eclipse con il plugin ADT, che era la toolchain standard quando l'esempio è stato scritto. Eclipse ADT non è più supportato, quindi su una macchina moderna dovresti scarica Android Studio invece e riutilizzare lo stesso codice di test all'interno di un Gradle modulo.

Per la Robotium framework di test, scarica il Robotium biblioteca dalla Robotium pagina del progetto.

Creare un Android Progetto di test

  • Fare clic su File -> Nuovo -> Altro
  • Scegli Android -> Android Prova il progetto come mostrato nella figura sottostante, quindi scegli Avanti

Eclipse Nuovo progetto guidato con Android Progetto di prova selezionato

Crea un nuovo Android progetto di prova

Scrivi il nome del tuo progetto di test. Secondo la convenzione di denominazione, il progetto di test dovrebbe chiamarsi "HelloAndroidTest".

Eclipse dialogo con il progetto di test denominato HelloAndroidTest che segue la convenzione di denominazione

Aggiungi il nome del progetto di test in base alla convenzione di denominazione

Scegli l'applicazione di destinazione da testare. In questo caso è HelloAndroidquindi fare clic su Fine.

Eclipse passaggio della procedura guidata selezionando CiaoAndroid come applicazione di destinazione in fase di test

Selezionare l'applicazione di destinazione da testare

Crea suite di test

In base alle specifiche del test, ora crei le suite di test per il tuo programma di test. Puoi scegliere tra diverse opzioni. test del software framework. Questo tutorial utilizza lo standard Android struttura di test ActivityInstrumentationTestCase2. Per testare con Robotium, Aggiungi il Robotium file di libreria a libs directory all'interno della cartella del tuo progetto.

Un caso di test definisce il fixture utilizzato per eseguire più test. Per definire un caso di test, seguire la struttura del programma riportata di seguito.

  • Implementare una sottoclasse di TestCase.
  • Definisci variabili di istanza che memorizzano lo stato del dispositivo.
  • Inizializza lo stato del dispositivo sovrascrivendo il metodo setUp().
  • Eseguire la pulizia dopo un test sovrascrivendo tearDown().

Il diagramma sottostante mappa tale struttura sul programma di test che stai per scrivere.

Struttura di a Robotium Programma di test che mostra la configurazione, i metodi di test e la procedura di smontaggio.

Struttura del programma di test

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Aggiunta di casi di test

  • Nello stesso pacchetto della suite di test, creare le classi TestCase.
  • Per testare una determinata attività, ad esempio CiaoAndroid, creare un caso di test che estende ActivityInstrumentationTestCase2Android>.
  • All'interno di quella classe, il tester ottiene l'attività da testare tramite il metodo getActivity().
  • Crea liberamente un test per l'attività aggiungendo un metodo denominato "test + nome del metodo originale".
  • All'interno del metodo di test, il tester può utilizzare Android JUnit Funzioni per confrontare il valore effettivo con il valore atteso. Questi metodi sono illustrati di seguito.

La tabella seguente elenca i metodi di asserzione e interazione più frequentemente utilizzati nei due framework.

Esempi di metodi del Robotium Classe solista e la Android struttura di test

Esempi di metodi di Robotium e Android struttura di test

La suite di test sopra riportata verifica che l'interfaccia grafica dell'applicazione visualizzi il testo "Hello World!" e contenga un pulsante denominato "Start".

PASSO 3) Eseguire il test

Dopo aver terminato di scrivere il programma di test, eseguilo seguendo i passaggi descritti di seguito.

  • Connetti un Android Collega il dispositivo al tuo PC oppure avvia un emulatore se non hai a disposizione un dispositivo reale.
  • Nel tuo IDE, fai clic con il pulsante destro del mouse sul progetto di test e scegli Esegui come → Android Test unitario.

Lo screenshot qui sotto mostra l'avvio dell'esecuzione del test dall'IDE.

Lancio del Robotium programma di test come Android Test unitario dall'IDE

Esecuzione del programma di test

Oltre a eseguire il test dall'IDE, è possibile eseguirlo dalla riga di comando. In questo programma di test il pacchetto di test è com.example.helloandroid.testIn un terminale Linux, utilizzare il seguente comando per eseguire tutti i test presenti in quel pacchetto.

$ adb shell am instrument -w -e package com.example.helloandroid.test

FASE 4) Ottenere il risultato del test

Al termine dell'esecuzione del test, si raccolgono i risultati.

In questo programma di test vengono eseguiti quattro metodi di test. Nell'esecuzione riportata di seguito, tutti i casi di test sono stati superati.

Risultato del test visualizzato tutti e quattro Robotium casi di test superati

Output dei risultati del test quando tutti i casi di test superano il test

Se un caso di test fallisce, viene visualizzato l'output che mostra quali casi di test non sono andati a buon fine.

output dei risultati del test elenca il Robotium casi di test falliti

Output dei risultati del test quando un caso di test fallisce

Fonte Code Esempi

Questo articolo include esempi di codice sorgente che ti aiuteranno a seguire il tutorial in modo più chiaro e ad apprendere rapidamente i dettagli tecnici.

Se vuoi confrontare Robotium con le altre opzioni in questo spazio, vedere il test di applicazioni mobili guida, la Appium lezione e la raccolta di strumenti di test delle app mobili.

DOMANDE FREQUENTI

Robotium La versione 5.6.3 rimane l'ultima release pubblicata e lo sviluppo attivo si è interrotto anni fa. Il framework è ancora in esecuzione e l'artefatto è ancora presente su Maven Central, ma è disponibile una nuova versione. Android i progetti normalmente scelgono Espresso, quale Google mantiene.

Robotium È un framework black-box che si collega ai widget in fase di esecuzione e richiede poca conoscenza del codice sorgente. Espresso is GoogleStrumento white-box che si sincronizza con il thread dell'interfaccia utente e richiede l'accesso al codice dell'applicazione.

Robotium gestisce un'applicazione alla volta, non è in grado di gestire in modo affidabile Flash o contenuti web al di fuori di una WebView, non offre alcuna registrazione integrata nel JAR open-source e la sua dipendenza da classi di strumentazione obsolete complica la moderna Gradle costruisce.

Dichiarare androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' nel file di compilazione del modulo, oppure rilasciare il robotium-solo JAR ai miglioramenti libs e farvi riferimento come dipendenza di un file.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Robotium I test sono normali test di strumentazione, quindi lo stesso APK viene eseguito su un emulatore o su un dispositivo fisico. Per i controlli di gesti, sensori e prestazioni è preferibile utilizzare hardware reale, poiché i tempi di risposta dell'emulatore possono variare.

Robotium si adatta agli scenari di accettazione funzionale, di sistema e dell'utente a livello di interfaccia utente. Non sostituisce i test unitari, che vengono eseguiti più velocemente sulla JVM, né quelli più ampi. tipi di test del software è ancora necessario un rilascio.

L'apprendimento automatico viene utilizzato per localizzatori auto-riparanti che sopravvivono ai cambiamenti di layout, per confronti visivi che segnalano regressioni di rendering e per il rilevamento di test instabili che classificano le riesecuzioni. Gli strumenti riducono la manutenzione, ma è comunque un essere umano a decidere quale comportamento è rilevante.

Copilota GitHub può generare i metodi di configurazione, pulizia e asserzione di Solo da una classe di attività. RevEsamina attentamente il suggerimento, perché potrebbe generare importazioni di pacchetti obsoleti o asserzioni che l'app non soddisfa mai.

Riassumi questo post con: