Robotium Poradnik: Android Framework testowy z przykładem

⚡ Inteligentne podsumowanie

Robotium jest open-source Android framework automatyzacji testów, który steruje aplikacjami natywnymi i hybrydowymi za pośrednictwem ich interfejsu użytkownika, umożliwiając testerowi tworzenie skryptów scenariuszy funkcjonalnych, systemowych i akceptacyjnych obejmujących kilka Android деятельности.

  • 🔘 Klasa podstawowa: Solo udostępnia metody klikania, wyszukiwania, przeciągania i potwierdzania, których każdy Robotium wywołania przypadków testowych.
  • ️ Przyjazny dla czarnej skrzynki: Testy są łączone ze składnikami interfejsu użytkownika w czasie wykonywania, dlatego wymagana jest minimalna znajomość źródła aplikacji.
  • ✅ Procedura czteroetapowa: Zaprojektuj specyfikację testu, napisz program testowy, uruchom go na urządzeniu, a następnie zbierz wyniki.
  • 🧪 Przykład rozwiązania: Całkowite powitanieAndroidKlasa testowa sprawdza widoczny tekst, bieżącą aktywność i przycisk Start.
  • 🛠️. Dwa tryby pracy: Uruchom testy z poziomu IDE lub terminala za pomocą polecenia adb shell am instrument.
  • ⚙️ Aktualny stan: Robotium Wersja 5.6.3 pozostaje ostatnią wersją, więc jest nowa Android projekty zazwyczaj łączą je lub zastępują Espresso.

Robotium Poradnik

Czym jest Robotium?

Robotium jest Android framework testowy, który automatyzuje przypadki testowe dla aplikacji natywnych i hybrydowych. Używanie Robotiumprogramista może tworzyć solidne, zautomatyzowane przypadki testowe GUI dla Android aplikacji. Deweloper może również pisać scenariusze testów funkcjonalnych, systemowych i akceptacyjnych, obejmujące kilka Android деятельности.

Robotium Ramy testowe

Średnia Android Struktura testowa ma ograniczenia wymienione poniżej.

  • Nie można obsłużyć wielu czynności
  • Wydajność wykonywania testów jest niska
  • Przypadki testowe są złożone i trudne do wdrożenia

Robotium framework jest lepszym wyborem do przeprowadzania testów na Android aplikacji.

Robotium jest frameworkiem typu open source i jest uważany za rozszerzenie Android framework testowy. Używanie Robotiumprogramista może tworzyć solidne, zautomatyzowane przypadki testowe GUI dla Android aplikacji. Co więcej, programista może pisać scenariusze testów funkcjonalnych, systemowych i akceptacyjnych obejmujące wiele Android деятельности.

Poniższa tabela podsumowuje zaawansowane funkcje, które oddzielają Robotium z prostej struktury instrumentacji.

Zaawansowane funkcje Robotium w porównaniu ze standardem Android ramy oprzyrządowania

Zaawansowane funkcje Robotium

Robotium Klasy przypadków testowych

Robotium dostarcza mały zestaw klas do testowania, a przykład artykułu importuje starsze wersje com.jayway.android.robotium.solo pakiet. Klasy te obsługują przypadki testowe obejmujące wiele działań i Solo jest zintegrowany z ActivityInstrumentationTestCase2.

Uwaga: aktualne Robotium wydania ujawniają tę samą klasę w krótszym okresie com.robotium.solo pakiet, podczas gdy współrzędne Maven pozostały com.jayway.android.robotium:robotium-solo. Dostosuj import tak, aby odpowiadał wersji pliku JAR, którą faktycznie dodajesz do projektu.

Poniższy diagram pokazuje, w jaki sposób klasa Solo jest umieszczona na wierzchu przypadku testowego instrumentacji.

Klasa Solo zintegrowana z ActivityInstrumentationTestCase2 w Robotium walizka testowa

Integracja Robotium i ActivityInstrumentationTestCase2

Tester może pisać przypadki testowe bez znajomości projektu aplikacji, co sprawia, że ​​takie podejście jest formą testy czarnej skrzynkiTo jest niezwykła zaleta w porównaniu ze zwykłym Android klasy przypadków testowych.

Jak korzystać Robotium

Aby korzystać z Robotium w telefonie Android Aby przetestować projekt, należy wykonać poniższe kroki.

Kroki wymagane do dodania i użycia Robotium wewnątrz Android projekt testowy

Jak używać Robotium

Aby zagwarantować jakość Twoich Android Aby złożyć wniosek, należy postępować zgodnie z poniższą czteroetapową procedurą.

  • Zaprojektuj specyfikację testu
  • Opracuj program testowy
  • Wykonaj przypadek testowy na urządzeniu docelowym
  • Zbierz wynik testu

Poniższy schemat blokowy przedstawia kolejność tych czterech etapów.

Schemat blokowy czteroetapowego Android procedura testowania aplikacji

Android procedura testowania aplikacji

KROK 1) Specyfikacja testów projektowych

To pierwszy krok testowania aplikacji. W tym kroku definiujesz cel, który ma zostać przetestowany. Android Aplikacja ma wiele celów, które wymagają przetestowania, takich jak interfejs użytkownika, aktywności, komponenty i usługi. Jasno zdefiniowany cel pomaga uzyskać szeroki zakres testów.

  • Zaplanuj typy testów, które powinny zostać przeprowadzone (test jednostkowy, test funkcjonalny, test systemowy).
  • Zaprojektuj każdy walizka testowa dla maksymalnego pokrycia przy jednoczesnym zachowaniuping Liczba przypadków testowych jest niewielka. Im więcej kodu testujesz, tym większa szansa na wczesne wykrycie błędów.

KROK 2) Napisz program testowy

W tej sekcji znajdziesz wskazówki dotyczące pisania Android program testowy za pomocą Android JUnit testy i RobotiumZałóżmy, że już opracowałeś Android program o nazwie HelloAndroid. Program ten posiada funkcje opisane poniżej.

  • Wyświetl na ekranie tekst „Witaj, świecie!”.
  • Wyświetl powitanieAndroid wiadomość wyświetlana po naciśnięciu przez użytkownika przycisku „Start”.

Zrzut ekranu poniżej przedstawia testowaną aplikację działającą na urządzeniu.

CześćAndroid aplikacja testowana, wyświetlająca tekst „Hello World” i przycisk Start

CześćAndroid aplikacja

Wymagania systemowe

  • Android platforma jest dostarczana z wstępnie zintegrowanym JUnit 3 ramy, czyli co to jest ActivityInstrumentationTestCase2 buduje na.
  • Aby utworzyć Android projekt testowy z EclipseTwoja maszyna potrzebuje sprawnego działania Android Instalacja zestawu SDK.
  • Zainstaluj aktualną wersję Android platformy SDK, a nie przypiętej starszej wersji.

Zrzuty ekranu w tym przewodniku wykorzystują Eclipse za pomocą wtyczki ADT, która była standardowym zestawem narzędzi, gdy przykład został napisany. Eclipse ADT nie jest już obsługiwany, więc na nowoczesnym komputerze trzeba by było pobieranie Android Studio zamiast tego ponownie użyj tego samego kodu testowego w Gradle moduł.

Dla Robotium framework testowy, pobierz Robotium biblioteka z Robotium strona projektu.

Tworzenie Android Projekt testowy

  • Kliknij Plik -> Nowy -> Inne
  • Dodaj Android -> Android Przetestuj projekt, jak pokazano na poniższym rysunku, a następnie wybierz Dalej

Eclipse Kreator nowego projektu z Android Wybrano projekt testowy

Stwórz nowy Android projekt testowy

Wpisz nazwę swojego projektu testowego. Zgodnie z konwencją nazewnictwa, projekt testowy powinien nazywać się „Hello”AndroidTest".

Eclipse dialog z projektem testowym o nazwie HelloAndroidPrzetestuj zgodnie z konwencją nazewnictwa

Dodaj nazwę projektu testowego zgodnie z konwencją nazewnictwa

Wybierz aplikację docelową do testowania. W tym przypadku jest to HelloAndroid, a następnie kliknij Zakończ.

Eclipse krok kreatora wybierający WitajAndroid jako docelowa aplikacja podlegająca testowi

Wybierz aplikację docelową do testowania

Utwórz zestawy testów

Na podstawie specyfikacji testów tworzysz teraz zestawy testów dla swojego programu testowego. Możesz wybierać spośród różnych Testowanie oprogramowania frameworki. W tym samouczku wykorzystano standardowe Android framework testowy ActivityInstrumentationTestCase2. Do testowania z Robotium, Dodaj Robotium plik biblioteki do libs katalog wewnątrz folderu Twojego projektu.

Przypadek testowy definiuje konfigurację używaną do uruchamiania wielu testów. Aby zdefiniować przypadek testowy, postępuj zgodnie ze strukturą programu poniżej.

  • Zaimplementuj podklasę TestCase.
  • Zdefiniuj zmienne instancji, które przechowują stan urządzenia.
  • Zainicjuj stan urządzenia, nadpisując setUp().
  • Posprzątaj po teście, nadpisując tearDown().

Poniższy diagram przedstawia tę strukturę w programie testowym, który zamierzasz napisać.

Struktura Robotium program testowy pokazujący konfigurację, metody testowania i rozrywanie

Struktura programu testowego

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

	

}

Dodawanie przypadków testowych

  • W tym samym pakiecie, w którym znajduje się zestaw testów, utwórz klasy TestCase.
  • Aby przetestować określoną aktywność, np. CześćAndroid, utwórz przypadek testowy rozszerzający ActivityInstrumentationTestCase2Android>.
  • W tej klasie tester uzyskuje testowaną aktywność za pomocą metody getActivity().
  • Utwórz test dla danej aktywności, dodając metodę o nazwie „test + oryginalna nazwa metody”.
  • W ramach metody testowej tester może użyć Android JUnit Funkcje porównujące wartość rzeczywistą z wartością oczekiwaną. Metody te przedstawiono poniżej.

Poniższa tabela przedstawia najczęściej stosowane w obu ramach metody asercji i interakcji.

Przykładowe metody Robotium Zajęcia solowe i Android framework testowy

Przykładowe metody Robotium i Android framework testowy

Powyższy zestaw testów sprawdza, czy interfejs graficzny aplikacji wyświetla tekst „Hello World!” i zawiera przycisk o nazwie „Start”.

KROK 3) Uruchom test

Po zakończeniu pisania programu testowego uruchom test, postępując zgodnie z poniższymi krokami.

  • Połącz Android podłącz urządzenie do komputera lub uruchom emulator, jeśli nie masz dostępu do żadnego rzeczywistego urządzenia.
  • W środowisku IDE kliknij prawym przyciskiem myszy projekt testowy i wybierz opcję Uruchom jako → Android Test jednostkowy.

Zrzut ekranu poniżej przedstawia uruchomienie testu z poziomu IDE.

Uruchomienie Robotium program testowy jako Android Test jednostkowy z IDE

Uruchamianie programu testowego

Oprócz uruchomienia testu z poziomu IDE, można go uruchomić z wiersza poleceń. W tym programie testowym pakiet testowy to com.example.helloandroid.testW terminalu Linux użyj następującego polecenia, aby uruchomić każdy test w danym pakiecie.

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

KROK 4) Uzyskaj wynik testu

Po wykonaniu testu należy zebrać jego wyniki.

W tym programie testowym wykonywane są cztery metody testowe. W poniższym przebiegu wszystkie przypadki testowe zakończyły się sukcesem.

Wynik testu pokazujący wszystkie cztery Robotium przypadki testowe przechodzące

Wynik testu, gdy wszystkie przypadki testowe zostaną zaliczone

Jeśli przypadek testowy się nie powiedzie, wyświetlone zostaną dane wyjściowe wskazujące, które przypadki testowe zakończyły się niepowodzeniem.

Wyjście z wynikami testu zawierające listę Robotium przypadki testowe, które się nie powiodły

Wynik testu w przypadku niepowodzenia przypadku testowego

Źródło Code Przykłady

W tym artykule zamieszczono przykłady kodu źródłowego, które pomogą Ci lepiej zrozumieć samouczek i szybciej przyswoić szczegóły techniczne.

Jeśli chcesz porównać Robotium z innymi opcjami w tej przestrzeni, zobacz testowanie aplikacji mobilnych przewodnik, ten Appium Tutorial i podsumowanie narzędzia do testowania aplikacji mobilnych.

FAQ

Robotium Wersja 5.6.3 pozostaje ostatnią opublikowaną wersją, a aktywny rozwój zakończył się lata temu. Framework nadal działa, a artefakt nadal znajduje się w Maven Central, ale nowe Android projekty zwykle wybierają Espresso, który Google utrzymuje.

Robotium jest strukturą typu „black-box”, która łączy się z widżetami w czasie wykonywania i wymaga niewielkiej znajomości kodu źródłowego. Espresso is GoogleNarzędzie typu white-box, które synchronizuje się z wątkiem interfejsu użytkownika i oczekuje dostępu do kodu aplikacji.

Robotium obsługuje jedną aplikację na raz, nie obsługuje niezawodnie Flasha ani treści internetowych poza WebView, nie oferuje wbudowanego nagrywania w pliku JAR z otwartym kodem źródłowym, a jego poleganie na przestarzałych klasach instrumentacji komplikuje nowoczesne Gradle buduje.

Ogłosić androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' w pliku kompilacji modułu lub usuń robotium-solo JAR najnowszych libs i odwołać się do niego jako do zależności pliku.

Tak. Robotium Testy to zwykłe testy instrumentalne, więc ten sam APK działa na emulatorze lub fizycznym urządzeniu. Do kontroli gestów, czujników i wydajności preferowany jest prawdziwy sprzęt, ponieważ w tym przypadku czas reakcji emulatora może się różnić.

Robotium Pasuje do scenariuszy funkcjonalnych, systemowych i akceptacji użytkownika na poziomie interfejsu użytkownika. Nie zastępuje testów jednostkowych, które działają szybciej na JVM, ani szerszego rodzaje testowania oprogramowania wydanie nadal potrzebne.

Uczenie maszynowe jest wykorzystywane do samonaprawiających się lokalizatorów, które są odporne na zmiany układu, do wizualnego porównywania, które sygnalizuje regresje renderowania, oraz do wykrywania niestabilnych testów, które klasyfikują ponowne uruchomienia. Narzędzia te redukują konieczność konserwacji, ale to człowiek nadal decyduje, które zachowanie ma znaczenie.

Drugi pilot GitHub może tworzyć szkielet metod konfiguracji Solo, tearDown i asercji z klasy aktywności. RevPrzejrzyj uważnie tę sugestię, ponieważ może ona powodować importowanie starszych pakietów lub twierdzeń, których aplikacja nigdy nie spełnia.

Podsumuj ten post następująco: