Deutsch Englisch
Kostenlos starten Anmelden Registrieren
Sprache
Deutsch Englisch

Mobile App Testing

Appium

Testen Sie Ihre nativen Apps und Webanwendungen mit Appium auf den Geräten der Mobile Device Cloud

Mit Appium erstellen Sie automatisierte Tests für Ihre Android-, iOS- und Web-Anwendungen, ganz ohne dafür Änderungen an den Anwendungen vornehmen zu müssen.

Alle Selenium API-kompatiblen Programmiersprachen stehen Ihnen für die Entwicklung Ihrer Tests zur Verfügung.

Der Appium-Treiber bietet Ihnen die gewohnte Selenium-Umgebung auf unseren Mobilgeräten.

import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
import io.appium.java_client.remote.IOSMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.ScreenOrientation;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;

public class LocaliOSTest {

    private String accessKey = "<ACCESS_KEY>";
    protected IOSDriver<IOSElement> driver = null;
    DesiredCapabilities dc = new DesiredCapabilities();

    @Before
    public void setUp() throws MalformedURLException {
        dc.setCapability("testName", "Quick Start iOS Native Demo");
        dc.setCapability("accessKey", accessKey);
        dc.setCapability("deviceQuery", "@os='ios' and @category='PHONE'");
        dc.setCapability(MobileCapabilityType.APP, "cloud:com.experitest.ExperiBank");
        dc.setCapability(IOSMobileCapabilityType.BUNDLE_ID, "com.experitest.ExperiBank");
        driver = new IOSDriver<>(new URL("https://mobiledevicecloud-test.t-systems-mms.eu/wd/hub"), dc);
    }

    @Test
    public void quickStartiOSNativeDemo() {
        driver.rotate(ScreenOrientation.PORTRAIT);
        driver.findElement(By.xpath("//*[@id='usernameTextField']")).sendKeys("company");
        driver.hideKeyboard();
        driver.findElement(By.xpath("//*[@id='passwordTextField']")).sendKeys("company");
        driver.findElement(By.xpath("//*[@id='loginButton']")).click();
        driver.findElement(By.xpath("//*[@id='makePaymentButton']")).click();
        driver.findElement(By.xpath("//*[@id='phoneTextField']")).sendKeys("0541234567");
        driver.findElement(By.xpath("//*[@id='nameTextField']")).sendKeys("Jon Snow");
        driver.findElement(By.xpath("//*[@id='amountTextField']")).sendKeys("50");
        driver.findElement(By.xpath("//*[@id='countryButton']")).click();
        driver.findElement(By.xpath("//*[@id='Switzerland']")).click();
        driver.findElement(By.xpath("//*[@id='sendPaymentButton']")).click();
        driver.findElement(By.xpath("//*[@id='Yes']")).click();
    }

    @After
    public void tearDown() {
        System.out.println("Report URL: "+ driver.getCapabilities().getCapability("reportUrl"));
        driver.quit();
    }
}

Erste Schritte mit Appium

1.

Binden Sie Appium in Ihr Test-Framework ein

2.

Konfigurieren Sie die Verbindung zu unserer Mobile Device Cloud API

3.

Installieren Sie mit Appium Ihre Anwendungen

4.

Steuern Sie Ihre Apps mit Appium

1.
Binden Sie Appium in Ihr Test-Framework ein

Suchen Sie in der Liste der Appium-Clients nach Ihrer gewünschten Entwicklungssprache.

Folgen Sie den Anweisungen des Repositories, um den Client einzubinden.

2.
Konfigurieren Sie die Verbindung zu unserer Mobile Device Cloud API

Initialisieren Sie vor Ihren Tests einen Appium-Treiber, mit dem Sie später Elemente Ihrer App ansteuern und automatisieren können.

Der Treiber benötigt zwei Informationen:

  • Den privaten Access Key zu Ihrem Projekt in der Mobile Device Cloud - diesen müssen Sie aus Ihrem Konto kopieren
  • Die URL zum Appium-Server der Mobile Device Cloud - diese ist immer gleich und muss von Ihnen nicht angepasst werden (https://mobiledevicecloud-test.t-systems-mms.eu/wd/hub)
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("accessKey", "<ACCESS_KEY>");
IOSDriver<IOSElement> driver = new IOSDriver<>(new URL("https://mobiledevicecloud-test.t-systems-mms.eu/wd/hub"), dc);

Am besten ist es, den Treiber in der setup() Methode Ihrer Tests aufzubauen und in der teardown() Methode zu schließen.

Orientieren Sie sich am Beispiel oben.

3.
Installieren Sie mit Appium Ihre Anwendungen

Laden Sie Ihre App in der Mobile Device Cloud hoch und geben Sie dem Appium-Treiber die Bundle-ID Ihrer App mit, um sie automatisch zu starten.

dc.setCapability(MobileCapabilityType.APP, "cloud:<BUNDLE_ID>");

4.
Steuern Sie Ihre Apps mit Appium

Verwenden Sie die Methoden des Appium-Treibers, um Ihre App zu automatisieren:

findElement(...)
sendKeys(...)
hideKeyboard()
rotate(...)
...
Appium + Jetpack Compose

Testen Sie Ihre Android Jetpack Compose App mit Appium auf den Geräten der Mobile Device Cloud

Für den Test einer Jetpack Compose App mit Appium muss der entsprechende Espresso Treiber verwendet werden.

Folgende Beschreibung zeigt Ihnen das Vorgehen:

import io.appium.java_client.AppiumBy;
import io.appium.java_client.android.AndroidDriver;
import org.junit.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;

public class EspressoTest {

    private final String CLOUD_ACCESS_KEY = "<ACCESS_KEY>";
    private final String APP_PATH = "cloud:<APP_BUNDLE_ID>";
    private final String ESPRESSO_SERVER= "<ESPRESSO_SERVER_UNIQUE_NAME>";
    protected AndroidDriver driver = null;
    private final DesiredCapabilities dc = new DesiredCapabilities();

    @Before
    public void setUp() throws MalformedURLException {
        dc.setCapability("accessKey", CLOUD_ACCESS_KEY);
        dc.setCapability("app", APP_PATH);
        dc.setCapability("espressoServerUniqueName", ESPRESSO_SERVER);

        dc.setCapability("platformName", "Android");
        dc.setCapability("automationName", "Espresso");
        dc.setCapability("deviceQuery", "@os='android' and @category='PHONE'");
        dc.setCapability("testName", "Quick Start Espresso Demo");
        dc.setCapability("appium:appiumVersion", "2.0.0.beta.23");

        driver = new AndroidDriver(new URL("https://mobiledevicecloud.t-systems-mms.eu/wd/hub"), dc);
        driver.setSetting("driver", "compose");
    }

    @Test
    public void quickStartEspressoDemo() {
        WebElement text = driver.findElement(AppiumBy.tagName("myTextTag"));
        Assert.assertEquals("Hello Espresso!", text.getText());
        driver.findElement(AppiumBy.tagName("myButtonTag")).click();

        driver.findElement(AppiumBy.tagName("myInputTag")).sendKeys("Mobile Device Cloud");
        driver.hideKeyboard();
        driver.findElement(AppiumBy.tagName("myInputButtonTag")).click();

        WebElement keywords = driver.findElement(AppiumBy.tagName("myKeywordsTag"));
        Assert.assertEquals("Mobile Device Cloud", keywords.getText());
    }

    @After
    public void tearDown() {
        System.out.println("Report URL: "+ driver.getCapabilities().getCapability("reportUrl"));
        driver.quit();
    }
}

Erste Schritte mit Appium + Jetpack Compose

1.

Demo-Projekt herunterladen

2.

Espresso-Treiber installieren

3.

Fehlende Informationen ergänzen

4.

Setup ausführen

5.

Apps hochladen

6.

Tests starten

1.
Demo-Projekt herunterladen

Laden Sie unser Demo Projekt herunter und importieren Sie es in Ihre IDE für einen reibungslosen Start.

2.
Espresso-Treiber installieren

Neben Ihrer zu testenden App wird für Espresso Tests zusätzlich eine Server App benötigt. Diese wird automatisch vom Espresso-Treiber für Appium gebaut. Dafür müssen Sie einen lokalen Appium-Server installieren. Laden Sie sich Node.js und NPM herunter und installieren Sie es.

Anschließend installieren Sie Appium 2 und den Espresso-Treiber im Terminal über die folgenden Befehle:

npm install -g appium@next
appium driver install espresso

Starten Sie nun den Appium-Server mit dem Kommando:

appium

Es sollten nun die Meldungen erscheinen, dass:

  • Appium 2 gestartet wurde
  • Der Espresso-Treiber geladen wurde
  • Die REST-Schnittstelle verfügbar ist
Mobile Device Cloud

3.
Fehlende Informationen ergänzen

Öffnen Sie die EspressoSetup.java Datei. In dieser Datei sind zwei Platzhalter, die Sie füllen müssen:

<LOCAL_APPIUM_SERVER>: Die URL zur REST-Schnittstelle Ihres lokalen Appium-Servers. Diese wird beim starten des Servers im Terminal angezeigt. (z.B. http://0.0.0.0:4723)

<APK_PATH>: Der Pfad zur APK-Datei ihrer App, die Sie vorher mit Android Studio generiert haben. (Build → Build APK)

4.
Setup ausführen

Fahren Sie einen Emulator in Android Studio hoch oder verbinden Sie ein echtes Android Gerät mit Ihrem Computer.

Starten Sie die EspressoSetup.java Datei entweder im Run oder im Debug Modus. Das Setup ist abgeschlossen, wenn die Tests erfolgreich durchgelaufen sind.

Während des Setups werden einige Informationen im Terminal des Appium Servers ausgegeben. Darunter auch die Zeile:

"Installing Espresso Test Server apk from the target device ..." mit einem Pfad zur Espresso-Server-APK. Kopieren Sie diese APK zusammen mit der APK Ihrer App in einen gemeinsamen Order, um Sie später wiederzufinden.

HINWEIS: Der Espresso-Server hängt stark von Ihrer App ab. Deswegen muss er immer mithilfe des Setups neu gebaut werden, wenn sich Abhängigkeiten in Ihrer App ändern.

Mobile Device Cloud

5.
Apps hochladen

Laden Sie Ihre App und den Espresso-Server hoch in die Mobile Device Cloud.

Vergeben Sie dem Espresso-Server einen Unique Name.

6.
Tests starten

Füllen Sie die Platzhalter in der Datei MdcEspressoTest.java mit Ihren Daten.

Starten Sie die Tests im Run oder Debug Modus. Diese werden nun in der Mobile Device Cloud ausgeführt.

Anhand der Beispiele können Sie eigene Tests implementieren!

XCUITest

1. Remote-Debugging

Mithilfe von Remote-Debugging können Sie Ihre XCUI Tests in der Mobile Device Cloud wie auf einem lokalen Gerät ausführen. Laden Sie sich dafür den Remote-Debugging-Client herunter:

  • für MacOS

und öffnen ein Terminal im Ordner des Clients.

Leihen Sie ein Gerät in der Mobile Device Cloud aus und klicken Sie auf Tools → Remote Debugging. Kopieren Sie den angezeigten Befehl in das Terminal und führen Sie ihn aus. Jetzt wird das Gerät in XCode wie ein lokales Gerät angezeigt und kann auch so verwendet werden.

Eine ausführliche Anleitung finden sie hier.

2. REST-Schnittstelle

Eine weitere Möglichkeit, XCUI Tests auszuführen, ist über unsere REST-Schnittstelle.

Dafür generieren Sie eine .ipa-Datei für Ihre zu testende App und ein ZIP-Archiv für Ihre Tests. Die genauen Schritte finden Sie hier.

Übergeben Sie die beiden Dateien an unsere API:

curl --request POST \
  --url https://mobiledevicecloud.t-systems-mms.eu/api/v1/test-run/execute-test-run \
  --header 'Authorization: Bearer <accesskey>' \
  --header 'content-type: multipart/form-data' \
  --form 'executionType=xcuitest' \
  --form 'runningType=coverage' \
  --form 'testApp=@<Pfad zur Test-App>' \
  --form 'app=@<Pfad zur App>' \
  --form-string "deviceQueries=@os='ios'"

Eine Dokumentation der Schnittstelle finden Sie hier.

Espresso

1. Remote-Debugging

Mithilfe von Remote-Debugging können Sie Ihre Espresso Tests in der Mobile Device Cloud wie auf einem lokalen Gerät ausführen. Laden Sie sich dafür den Remote-Debugging-Client herunter:

  • für Windows
  • für MacOS

und öffnen ein Terminal im Ordner des Clients.

Leihen Sie ein Gerät in der Mobile Device Cloud aus und klicken Sie auf Tools → Remote Debugging. Kopieren Sie den angezeigten Befehl in das Terminal und führen Sie ihn aus. Jetzt wird das Gerät in Android Studio wie ein lokales Gerät angezeigt und kann auch so verwendet werden.

Eine ausführliche Anleitung finden sie hier.

2. REST-Schnittstelle

Eine weitere Möglichkeit, Espresso Tests auszuführen, ist über unsere REST-Schnittstelle.

Dafür generieren Sie eine APK-Datei für Ihre zu testende App und eine APK-Datei für Ihre Tests. Die genauen Schritte finden Sie hier.

Übergeben Sie die beiden APKs an unsere API:

curl --request POST \
  --url https://mobiledevicecloud.t-systems-mms.eu/api/v1/test-run/execute-test-run \
  --header 'Authorization: Bearer <accesskey>' \
  --header 'content-type: multipart/form-data' \
  --form 'executionType=espresso' \
  --form 'runningType=coverage' \
  --form 'testApp=@<Pfad zur Test-App>' \
  --form 'app=@<Pfad zur App>' \
  --form-string "deviceQueries=@os='android'"

Eine Dokumentation der Schnittstelle finden Sie hier.

TestCafe

Testen Sie Ihre Webanwendungen oder Browser-Apps mit TestCafe auf allen Browsern der Mobile Device Cloud

Die Mobile Device Cloud bietet für das Test-Tool Testcafe ein Plugin an, mit dem Sie Ihre TestCafe Tests auf allen Desktop- und Mobile-Browsern der Mobile Device Cloud ausführen lassen können.

import { Selector } from 'testcafe';

fixture('Getting Started with TestCafe')
    .page('https://devexpress.github.io/testcafe/example');

test('My first test', async t => {
    await t
        .typeText('#developer-name', 'MDC User')
        .click('#submit-button')
        .expect(Selector('#article-header').innerText).eql('Thank you, MDC User!');
});

Erste Schritte mit TestCafe

1.

Kontakt aufnehmen

2.

Plugin einrichten

3.

Tests starten

1.
Kontakt aufnehmen

Das Plugin zur Nutzung von TestCafe mit den Geräten der Mobile Device Cloud ist noch experimentell.

Kontaktieren Sie uns, um Zugriff auf das Plugin zu erhalten und mit TestCafe zu arbeiten.

2.
Plugin einrichten

Wir unterstützen Sie bei der Installation der nötigen Pakete und konfigurieren diese mit Ihnen.

3.
Tests starten

Schreiben Sie Ihre Tests mit JavaScript in der gewohnten TestCafe-Umgebung.

Mit nur einem Befehl führen Sie die Tests auf einem Gerät der Mobile Device Cloud aus:

Mobile Device Cloud
Tosca

Die Mobile Device Cloud unterstützt Tosca.

Eine Dokumentation der Nutzung erfolgt demnächst.

Selenium

Die Mobile Device Cloud unterstützt Selenium.

Eine Dokumentation der Nutzung erfolgt demnächst.