Robotium tutorial: Android Okvir za testiranje s primjerom

โšก Pametni saลพetak

Robotium je open source Android okvir za automatizaciju testiranja koji pokreฤ‡e nativne i hibridne aplikacije putem njihovog korisniฤkog suฤelja, omoguฤ‡ujuฤ‡i testerima da skriptiraju funkcionalne, sistemske i scenarije prihvaฤ‡anja koji obuhvaฤ‡aju nekoliko Android aktivnosti.

  • ๐Ÿ”˜ Osnovni razred: Solo otkriva metode klika, pretraลพivanja, povlaฤenja i asertivnosti koje svaki Robotium pozivi testnih sluฤajeva.
  • โ˜‘๏ธ Prilagoฤ‘eno crnoj kutiji: Testovi se veลพu za UI komponente tijekom izvoฤ‘enja, tako da je potrebno minimalno poznavanje izvornog koda aplikacije.
  • โœ… Postupak u ฤetiri koraka: Osmislite specifikaciju testa, napiลกite program za testiranje, izvrลกite ga na ureฤ‘aju, a zatim prikupite rezultat.
  • ๐Ÿงช Obraฤ‘eni primjer: Potpuni pozdravAndroidTestna klasa provjerava vidljivi tekst, trenutnu aktivnost i gumb Start.
  • ๐Ÿ› ๏ธ Dva naฤina rada: Pokrenite testove iz IDE-a ili iz terminala pomoฤ‡u naredbe adb shell am instrument.
  • ๏ธ Trenutni status: Robotium 5.6.3 ostaje posljednje izdanje, dakle novo Android projekti ga obiฤno uparuju ili zamjenjuju s Espresso.

Robotium Tutorijal

ล to je Robotium?

Robotium je Android okvir za testiranje koji automatizira testne sluฤajeve za izvorne i hibridne aplikacije. Koriลกtenje Robotium, programer moลพe stvoriti robusne automatizirane GUI testne sluฤajeve za Android aplikacije. Programer takoฤ‘er moลพe pisati scenarije funkcionalnih, sistemskih i prihvatnih testova koji obuhvaฤ‡aju nekoliko Android aktivnosti.

Robotium Okvir za testiranje

Norma Android Okvir za testiranje nosi ograniฤenja navedena u nastavku.

  • Ne moลพe se nositi s viลกe aktivnosti
  • Izvedba testa je spora
  • Testni sluฤajevi su sloลพeni i teลกko ih je implementirati

The Robotium Framework je bolji izbor za provoฤ‘enje testiranja na Android prijava.

Robotium je okvir otvorenog koda i smatra se proลกirenjem Android testni okvir. Koriลกtenje Robotium, programer moลพe stvoriti robusne automatizirane GUI testne sluฤajeve za Android aplikacije. ล toviลกe, programer moลพe napisati scenarije funkcionalnih, sistemskih i prihvatnih testova koji obuhvaฤ‡aju viลกe Android aktivnosti.

Donja tablica saลพima napredne znaฤajke koje odvajaju Robotium iz okvira obiฤne instrumentacije.

Napredne znaฤajke Robotium u usporedbi sa standardom Android okvir instrumentacije

Napredne znaฤajke Robotium

Robotium Klase testnih sluฤajeva

Robotium isporuฤuje mali skup klasa za testiranje, a primjer u ฤlanku uvozi naslijeฤ‘eni kod com.jayway.android.robotium.solo paket. Ove klase podrลพavaju testne sluฤajeve koji obuhvaฤ‡aju viลกe aktivnosti i Solo je integriran s ActivityInstrumentationTestCase2.

Biljeลกka: struja Robotium izdanja izlaลพu istu klasu pod kraฤ‡im com.robotium.solo paket, dok je Maven koordinata ostala com.jayway.android.robotium:robotium-soloPrilagodite uvoz kako bi odgovarao JAR verziji koju zapravo dodajete u projekt.

Donji dijagram prikazuje kako se klasa Solo nalazi na vrhu testnog sluฤaja instrumentacije.

Solo klasa integrirana s ActivityInstrumentationTestCase2 u Robotium testni sluฤaj

Integracija Robotium i Instrumentacija aktivnostiTestCase2

Tester moลพe pisati testne sluฤajeve bez poznavanja dizajna aplikacije, ลกto ovaj pristup ฤini oblikom testiranje crne kutijeTo je izvanredna prednost u usporedbi s obiฤnim Android klase testnih sluฤajeva.

Kako koristiti Robotium

Koristiti Robotium u vaลกoj Android testni projekt, morate slijediti dolje navedene korake.

Koraci potrebni za dodavanje i koriลกtenje Robotium unutar an Android ispitni projekt

Kako koristiti Robotium

Kako bismo jamฤili kvalitetu vaลกeg Android prijavu, slijedite dolje navedeni ฤetverostupanjski postupak.

  • Dizajnirajte specifikaciju testa
  • Razviti program testiranja
  • Izvrลกite testni sluฤaj na ciljnom ureฤ‘aju
  • Prikupite rezultat testa

Donji dijagram toka poredao je te ฤetiri faze po redu.

Dijagram toka ฤetverostupanjskog procesa Android postupak testiranja aplikacije

Android postupak testiranja aplikacije

KORAK 1) Specifikacija testa dizajna

Ovo je prvi korak u testiranju vaลกe aplikacije. U ovom koraku definirate cilj koji ฤ‡e se testirati. Android Aplikacija ima mnogo ciljeva koje je potrebno testirati, kao ลกto su korisniฤko suฤelje, aktivnosti, komponente i usluge. Jasno definiranje cilja pomaลพe vam u postizanju ลกiroke pokrivenosti testiranjem.

  • Planirajte vrste testova koje treba provesti (jediniฤni test, funkcionalni test, sistemski test).
  • Dizajnirajte svaki testni sluฤaj za maksimalnu pokrivenost uz odrลพavanjeping broj testnih sluฤajeva mali. ล to viลกe koda testirate, veฤ‡a je vjerojatnost ranog otkrivanja greลกaka.

KORAK 2) Napiลกite testni program

Ovaj odjeljak vas vodi kroz pisanje Android koriลกtenje testnog programa Android JUnit testovi i RobotiumPretpostavimo da ste veฤ‡ razvili Android program pod nazivom PozdravAndroidOvaj program ima funkcije opisane u nastavku.

  • Prikaลพite tekst โ€žPozdrav svijete!โ€œ na ekranu.
  • Prikaลพi pozdravAndroid poruka kada korisnik pritisne gumb "Start".

Snimka zaslona u nastavku prikazuje testiranu aplikaciju koja se izvodi na ureฤ‘aju.

BokAndroid aplikacija u testiranju koja prikazuje tekst Hello world i gumb Start

BokAndroid primjena

Zahtjevi sustava

  • The Android Platforma se isporuฤuje s unaprijed integriranim JUnit 3 okvira, ลกto je ono ลกto ActivityInstrumentationTestCase2 gradi dalje.
  • Da biste stvorili Android testni projekt iz Eclipse, vaลกem stroju je potreban ispravan Android Instalacija SDK-a.
  • Instalirajte struju Android SDK platforme, a ne prikvaฤeno starije izdanje.

Snimke zaslona u ovom vodiฤu koriste Eclipse s ADT dodatkom, koji je bio standardni alatni lanac kada je primjer napisan. Eclipse ADT viลกe nije podrลพan, pa biste na modernom raฤunalu preuzimanje Android Studio umjesto toga i ponovno upotrijebite isti testni kod unutar Gradle modul.

Za Robotium okvir za testiranje, preuzmite Robotium knjiลพnica iz Robotium Projekt stranica.

Napravite Android Testni projekt

  • Pritisnite File -> New -> Other
  • Odaberite Android -> Android Testirajte projekt kao ลกto je prikazano na slici ispod, a zatim odaberite Dalje

Eclipse ฤŒarobnjak za novi projekt s Android Odabran je testni projekt

Napravite novu Android ispitni projekt

Napiลกite naziv svog testnog projekta. Prema konvenciji imenovanja, testni projekt trebao bi se zvati โ€žPozdravAndroidTest".

Eclipse dijalog s testnim projektom pod nazivom PozdravAndroidTestiranje prema konvenciji imenovanja

Dodajte naziv testnog projekta na temelju konvencije imenovanja

Odaberite ciljnu aplikaciju koja se testira. U ovom sluฤaju to je HelloAndroid, a zatim kliknite Zavrลกi.

Eclipse korak ฤarobnjaka odabir PozdravAndroid kao ciljna aplikacija koja se testira

Odaberite ciljnu aplikaciju koja se testira

Stvorite testne pakete

Na temelju vaลกe specifikacije testa, sada kreirate testne pakete za svoj testni program. Moลพete birati izmeฤ‘u razliฤitih testiranje softvera okvire. Ovaj vodiฤ koristi standard Android okvir za testiranje ActivityInstrumentationTestCase2Za testiranje s Robotium, dodajte Robotium datoteka knjiลพnice u libs direktorij unutar mape vaลกeg projekta.

Testni sluฤaj definira ureฤ‘aj koji se koristi za izvoฤ‘enje viลกe testova. Za definiranje testnog sluฤaja slijedite strukturu programa u nastavku.

  • Implementirajte podklasu TestCase.
  • Definirajte varijable instance koje pohranjuju stanje ureฤ‘aja.
  • Inicijalizirajte stanje ureฤ‘aja prepisivanjem setUp().
  • Oฤistite nakon testa prepisivanjem tearDown().

Donji dijagram prikazuje tu strukturu na testnom programu koji ฤ‡ete upravo napisati.

Struktura Robotium testni program koji prikazuje postavljanje, metode ispitivanja i rastavljanje

Struktura testnog programa

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);
    }

	

}

Dodavanje testnih sluฤajeva

  • U istom paketu kao i testni paket, kreirajte klase TestCase.
  • Za testiranje odreฤ‘ene aktivnosti, na primjer PozdravAndroid, stvorite testni sluฤaj koji proลกiruje ActivityInstrumentationTestCase2Android>.
  • Unutar te klase, tester dobiva aktivnost koja se testira putem metode getActivity().
  • Slobodno kreirajte test za aktivnost dodavanjem metode pod nazivom โ€žtest + izvorni naziv metodeโ€œ.
  • Unutar metode ispitivanja, ispitivaฤ moลพe koristiti Android JUnit funkcije za usporedbu stvarne vrijednosti s oฤekivanom vrijednoลกฤ‡u. Ove metode su prikazane u nastavku.

U donjoj tablici navedene su metode tvrdnji i interakcija koje se najฤeลกฤ‡e koriste u dvama okvirima.

Primjeri metoda Robotium Solo klasa i Android okvir za testiranje

Primjeri metoda Robotium i Android okvir za testiranje

Gornji testni paket potvrฤ‘uje da grafiฤko korisniฤko suฤelje aplikacije prikazuje tekst โ€žPozdrav svijete!โ€œ i sadrลพi gumb pod nazivom โ€žStartโ€œ.

KORAK 3) Pokrenite test

Nakon ลกto zavrลกite s pisanjem testnog programa, pokrenite test slijedeฤ‡i dolje navedene korake.

  • Spojite an Android ureฤ‘aj na raฤunalo ili pokrenite emulator ako nema dostupnog pravog ureฤ‘aja.
  • U vaลกem IDE-u kliknite desnom tipkom miลกa na testni projekt i odaberite Pokreni kao โ†’ Android Jediniฤni test.

Snimka zaslona u nastavku prikazuje pokretanje testnog rada iz IDE-a.

Pokretanje Robotium testni program kao Android Jediniฤni test iz IDE-a

Pokretanje testnog programa

Osim pokretanja testa iz IDE-a, moลพete ga pokrenuti i iz naredbenog retka. U ovom testnom programu testni paket je com.example.helloandroid.testU Linux terminalu upotrijebite sljedeฤ‡u naredbu za pokretanje svakog testa u tom paketu.

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

KORAK 4) Dobijte rezultat testa

Nakon ลกto se test izvrลกi, prikupljate rezultate testa.

U ovom testnom programu izvrลกavaju se ฤetiri metode testiranja. U donjem izvrลกavanju svi testni sluฤajevi su uspjeli.

Izlaz rezultata testa koji prikazuje sva ฤetiri Robotium prolaz testnih sluฤajeva

Izlaz rezultata testa kada svi testni sluฤajevi proฤ‘u

Ako testni sluฤaj ne uspije, prikazuje se izlaz i pokazuje koji su testni sluฤajevi propali.

Izlaz rezultata testa s popisom Robotium testni sluฤajevi koji nisu uspjeli

Izlaz rezultata testa kada testni sluฤaj ne uspije

izvor Code Primjeri

Ovaj ฤlanak ukljuฤuje primjere izvornog koda koji vam pomaลพu da jasnije pratite vodiฤ i brzo shvatite tehniฤke detalje.

Ako ลพelite usporediti Robotium s ostalim opcijama u ovom prostoru, pogledajte testiranje mobilne aplikacije vodiฤ, Appium udลพbenik i saลพetak alati za testiranje mobilnih aplikacija.

Pitanja i odgovori

Robotium 5.6.3 ostaje posljednje objavljeno izdanje, a aktivni razvoj je zaustavljen prije nekoliko godina. Okvir i dalje radi, a artefakt je i dalje na Maven Centralu, ali novi Android projekti obiฤno biraju Espresso, Koji Google odrลพava.

Robotium je okvir crne kutije koji se veลพe za widgete tijekom izvoฤ‘enja i zahtijeva malo znanja o izvornom kodu. Espresso is Googlealat bijele kutije koji se sinkronizira s niti korisniฤkog suฤelja i oฤekuje pristup kodu aplikacije.

Robotium pokreฤ‡e jednu aplikaciju istovremeno, ne moลพe pouzdano rukovati Flashom ili web sadrลพajem izvan WebViewa, ne nudi ugraฤ‘eno snimanje u JAR-u otvorenog koda, a oslanjanje na zastarjele klase instrumentacije komplicira moderne Gradle gradi.

Proglasiti androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' u datoteci za izgradnju modula ili ispustite robotium-solo JAR u libs i referencirajte ga kao ovisnost datoteke.

Da. Robotium Testovi su obiฤni instrumentalni testovi, tako da se isti APK izvodi na emulatoru ili fiziฤkom ureฤ‘aju. Pravi hardver je poลพeljniji za provjere gesti, senzora i performansi, gdje se vrijeme emulatora moลพe razlikovati.

Robotium odgovara funkcionalnim, sistemskim i korisniฤkim scenarijima prihvaฤ‡anja na razini korisniฤkog suฤelja. Nije zamjena za jediniฤne testove, koji se brลพe izvode na JVM-u, niti za ลกiri vrste testiranja softvera joลก uvijek je potrebno izdanje.

Strojno uฤenje se koristi za lokatore s moguฤ‡noลกฤ‡u samoobnavljanja koji preลพivljavaju promjene rasporeda, vizualnu usporedbu koja oznaฤava regresije renderiranja i detekciju nestabilnih testova koja rangiraju ponovna pokretanja. Alati smanjuju odrลพavanje, ali ฤovjek i dalje odluฤuje koje je ponaลกanje vaลพno.

GitHub kopilot moลพe izraditi Solo setup, tearDown i metode assertacije iz klase aktivnosti. RevPaลพljivo pregledajte prijedlog jer moลพe generirati uvoz naslijeฤ‘enog paketa ili tvrdnje koje aplikacija nikada ne zadovoljava.

Saลพmite ovu objavu uz: