Appium – darmowe narzędzie open-source do automatyzacji testów aplikacji mobilnych

W ostatnich latach cały czas rośnie popularność aplikacji mobilnych. Spowodowała ona bardzo duży wzrost nowych aplikacji pojawiających się na rynku. Ludzie coraz częściej korzystają ze swoich smartfonów na rzecz komputerów – w końcu to telefony mamy zawsze przy sobie i możemy ich użyć w każdej chwili. W świecie testerskim testowanie aplikacji mobilnych różni się od testowania aplikacji webowych. Dlatego też pojawiło się sporo nowych narzędzi do testowania aplikacji mobilnych oraz do automatyzowania testów. Jednym z takich narzędzi jest Appium, o którym chciałbym dzisiaj trochę opowiedzieć.

Appium, narzędzie open-source do automatyzacji

Zaczynając od samego początku – Appium jest jednym z najpopularniejszych narzędzi do automatyzacji testów aplikacji na urządzeniach mobilnych.

Appium jest rozwiązaniem:

– open-source, które służy do zautomatyzowania aplikacji natywnych, webowych i hybrydowych na platformach Android oraz iOS,|
– „wieloplatformowym”, a więc umożliwia pisanie testów przy użyciu tego samego API,
– wykorzystującym bibliotekę WebDriver, która rozszerzona została o dodatkowe funkcje przydatne w kontekście testu automatyzacji mobilnej.

Filozofią Appium jest brak konieczności ponownej kompilacji aplikacji w celu automatyzacji. Nie ma też ograniczenia do jednego języka programowania. Co więcej, nie musimy odkrywać koła na nowo, jeżeli chodzi o API automatyzacji. A to wszystko dzięki rozwiązaniu, które jest open-source.

Architektura Appium

Architektura Appium jest bardzo prosta. Przede wszystkim, warto zaznaczyć, że Appium jest architekturą klient-serwer. Klient łączy się z serwerem Appium w postaci obiektu JSON przez protokół HTTP. Następnie, serwer tworzy sesję, zwracając tym samym klientowi indywidualny numer sesji (ID), który jest aktywny przez czas działania serwera. Następnie uruchamiane są testy, które będą wykonywane w ramach utworzonej sesji.

Źródło: Packt

Instalacja appium

Instalacja narzędzia jest niezwykle prosta. Możemy zrobić to na dwa sposoby:

  1. Instalację możemy wykonać poprzez menadżera npm wykonując poniższą komendę:
    npm install -g appium
  2. Możemy też pobrać wersję do zainstalowania z interfejsem GUI.

Rozpoczęcie pisania testów automatycznych z użyciem Appium

Aby rozpocząć pisanie testów automatycznych z użyciem Appium potrzebujemy szeregu narzędzi. Poniżej lista, wraz z ustawieniami:

  1. Java – instalujemy i ustawiamy JAVA_HOME,
  2. Android SDK – pobieramy i ustawiamy ANDROID_HOME,
  3. Appium – instalujemy i uruchamiamy,
  4. IDE np. Eclipse razem z maven i testng – instalujemy i uruchamiamy,
  5. Urządzenie (lub emulator/symulator) z systemem Android/iOS – rzeczywiste urządzenie podłączamy do komputera poprzez kabel USB lub WIFI. Sprawdzamy widoczność poprzez adb devices.
  6. Aplikacja do przetestowania.

Appium uruchamiamy na hoście 0.0.0.0 oraz domyślnym porcie 4723.

W Eclipse tworzymy nowy projekt. Zaczynamy od skonfigurowania połączenia z serwerem Appium.

Konfigurację przygotowujemy osobno dla Androida i osobno dla iOS. Podczas konfiguracji będą nam potrzebne informacje o urządzeniu, na którym mają uruchamiać się nasze testy.

Przy przypadku Androida korzystamy z UiAutomator2 Driver. Przykładowa konfiguracja wygląda następująco:

capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Emulator");
capabilities.setCapability("device", "emulator-5554");
capabilities.setCapability("platformVersion", 8.0.0);
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("automationName", "uiautomator2");
capabilities.setCapability("appPackage", "pl.itcraft.application");
capabilities.setCapability("appActivity", "pl.itcraft.application.activity.LauncherActivity");

W przypadku iOS korzystamy z XCUITest. Przykładowa konfiguracja poniżej:

capabilities.setCapability("deviceName", "iPhone X");
capabilities.setCapability("platformVersion", "12.0");
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("automationName", "XCUITest");
capabilities.setCapability("app", app.getAbsolutePath());

Na końcu inicjalizujemy Drivera dla Androida:

driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);

oraz iOS:

driver = new IOSDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);

W projekcie użyjemy Page Object Model oraz Page Factory.

Page Object Model jest to wzorzec, w którym każdy ekran aplikacji ma odzwierciedlenie jako osobna klasa. W ramach danej klasy dodajemy elementy oraz metody, które wykonują operacje na elementach.

Page Factory wykorzystamy jako wsparcie dla wzorca Page Object przy zainicjalizowaniu elementów oraz do przypisywania lokalizatorów Androida oraz iOS do jednej zmiennej.

Na przykład dla ekranu logowania dodajemy w klasie loginScreen.java

@iOSFindBy(accessibility = "login")
@AndroidFindBy(id = "loginInput")
MobileElement loginInput;

@iOSFindBy(accessibility = "pass")
@AndroidFindBy(id = "passInput")
MobileElement passwordInput;

@iOSFindBy(accessibility = "loginButton")
@AndroidFindBy(id = "loginBtn")
MobileElement loginButton;

public void loginApp(String login, String password){
  loginInput.sendKeys(login);
  passwordInput.sendKeys(password);
  loginButton.click;
}

Test zaczynamy od adnotacji @Test z biblioteki TestNG. Następnie przy wykorzystaniu napisanej metody tworzymy test, dodając na końcu sprawdzenie czy na pewno zostaliśmy zalogowani – robimy to sprawdzając treść komunikatu. Tak napisany test zostanie wykonany dla aplikacji z systemem zarówno Android jak i iOS.

@Test
public void firstTest(){
  loginScreen.loginApp(“test”,”test”);
  baseScreen.checkSuccessfulLogin();
}

Podsumowanie

Do zalet Appium należy na pewno to, że jest darmowe, open-source’owe i wieloplatformowe. Przede wszystkim jednak plusem jest to, że Appium – przy zastosowaniu page object oraz page factory – pozwala nam mieć jeden kod testów, napisany w jednym z kilku popularnych języków np. Java, C#. Kod ten wykonuje testy na Androidzie i na iOS.

Dużym plusem jest również popularność Appium, a co za tym idzie, dostępność materiałów informacyjnych na temat samego narzędzia oraz społeczność, która ją tworzy.

Rate this post
Łukasz Górski, QA Engineer

Łukasz pracuje w itCraft od 5 lat zajmując się jakością oprogramowania. Na co dzień w pracy zajmuje się testami manualnymi, automatycznymi oraz nadzorowaniem procesów testerskich. Zdecydowanie większa część jego kariery to testy aplikacji mobilnych. Czas wolny spędza aktywnie: biega, jeździ na rowerze i ćwiczy na siłowni.