Vorbereiten von Appium-Tests für den Upload

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie eine Migration in Betracht ziehen können.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Die Schritte zum Vorbereiten einer App und ihrer Testsammlung für den Upload variieren je nach Testframework. In diesem Leitfaden wird beschrieben, wie Sie Appium-Tests mit Java mit JUnit für den Upload in App Center vorbereiten. Anleitungen zum Erstellen von Appium-Tests finden Sie in der Appium-Dokumentation.

Beachten Sie die folgenden Einschränkungen für die Appium-Unterstützung:

Hinweis

WebView-Kontext, Chrome-Webtreiber und Chrome-Browsertests mit browserName Funktionen werden unterstützt!

  • Keine Unterstützung für TestNG (nur JUnit-Tests werden unterstützt).
  • Keine Unterstützung für Android 4.2 oder früher. Keine Unterstützung für veraltete UIAutomator-Treiber.
  • Keine Unterstützung für iOS 9.2.1 oder früher. Keine Unterstützung für veraltete UIAutomation iOS-Treiber.
  • Keine Unterstützung für JUnit @Category attribute. (Kann stattdessen Einschließen/Ausschließen verwenden)
  • Die Maven-Version muss mindestens 3.3.9 sein.
  • Die aktuelle Appium-Version ist 1.22.0. Es wird regelmäßig mit neuen Releases aktualisiert.
  • JUnit 4.9 – 4.12 wird unterstützt. JUnit 5 wird nicht unterstützt.
  • Tests müssen genau auf eine App abzielen. (MobileCapabilityType.FULL_RESET wird unterstützt)

Hinweis

In einigen Fällen können Tests in App Center weiterhin funktionieren, wenn nicht unterstützte Tools oder Features verwendet werden. Diese nicht unterstützte Funktionalität ist jedoch in zukünftigen Updates nicht qa'd und kann ohne Warnung unterbrochen werden.

Voraussetzungen

Tests werden mit Maven Surefire ausgeführt, sodass Tests bestimmte Namenskonventionen befolgen müssen:

"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".

Bevor Sie versuchen, den App Center-Test hochzuladen, stellen Sie sicher, dass die lokale Ausführung von Tests auf Ihrem Computer mithilfe von Maven funktioniert:

➜  AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest)  Time elapsed: 0.594 sec  <<< ERROR!
...

Wenn Sie die Tests nicht lokal über die Befehlszeile ausführen können, funktionieren Tests auch nicht in App Center Test.

1. Änderungen am Buildsystem

Schritt 1: Hinzufügen von Abhängigkeiten

Sie müssen eine Abhängigkeit für die Appium-Testerweiterungen hinzufügen:

<dependency>
    <groupId>com.microsoft.appcenter</groupId>
    <artifactId>appium-test-extension</artifactId>
    <version>1.6</version>
</dependency>

Dieser Code stellt sicher, dass die erweiterten Android- und iOS-Treiber zur Kompilierzeit verfügbar sind. Die erweiterten Treiber werden in erster Linie bereitgestellt, um das label Feature zu aktivieren. Weitere Informationen zum Feature finden Sie unter label Schritt 4.

Schritt 2: Hinzufügen eines Uploadprofils

Kopieren Sie diesen Codeausschnitt in das pom.xml<profiles> -Tag. Wenn kein Abschnitt in Ihrem Pom vorhanden ist <profiles> , erstellen Sie einen. Wenn das Profil aktiviert wird, werden Ihre Testklassen und alle Abhängigkeiten in den Ordner verpackt, der target/upload in Test hochgeladen werden kann.

2. Änderungen an den Tests

Schritt 1: Hinzufügen von Importen

Importieren Sie diese Pakete in Ihre Testklassen:

import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;

Schritt 2: Instanziieren des TestWatchers

Fügen Sie diese Deklaration in jede Ihrer Testklassen ein:

    @Rule
    public TestWatcher watcher = Factory.createWatcher();

Schritt 3: Aktualisieren der Treiberdeklaration

Ersetzen Sie Ihre Deklaration von AndroidDriver<MobileElement> durch EnhancedAndroidDriver<MobileElement> oder IOSDriver<MobileElement> durch EnhancedIOSDriver<MobileElement>

    private static EnhancedAndroidDriver<MobileElement> driver;

Schritt 4: Aktualisieren der Treiberinstanziierungen

Ersetzen Sie die Art und Weise, wie Sie Ihren Treiber instanziieren , so dass Zeilen in Form von:

    driver = new AndroidDriver<MobileElement>(url, capabilities);

... werden geändert in:

    driver = Factory.createAndroidDriver(url, capabilities);

Wenn Sie diese Treiber verwenden, können Sie Ihre Tests weiterhin lokal ohne zusätzliche Änderungen ausführen, aber Sie können Testschritte in Ihrer Testausführung mit driver.label("text")"bezeichnen". Der Text und ein Screenshot vom Gerät werden im Testbericht in App Center angezeigt.

Es wird empfohlen, die @After -Methode aufzurufendriver.label, die einen Screenshot des Endgültigen Zustands der App erstellt. Eine Beispielmethode @After für einen Test könnte wie der folgende Code aussehen:

    @After
    public void TearDown(){
        driver.label("Stopping App");
        driver.quit();
    }

3. Hochladen in App Center-Test

Schritte zum Hochladen eines Tests:

  1. Generieren Sie einen App Center-Testuploadbefehl mithilfe der Anweisungen beim Starten eines Testlaufs.

  2. Packen Sie Ihre Testklassen und alle Abhängigkeiten in den target/upload Ordner:

    mvn -DskipTests -P prepare-for-upload package
    
  3. Führen Sie den Upload-Befehl aus:

    appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk  --test-series "main" --locale "en_US" --build-dir target/upload
    

4. Problembehandlung bei der Leistung

Tests auf Geräten in App Center werden etwas langsamer ausgeführt als auf einem lokalen Gerät. Normalerweise wird die langsamere Ausführung überwiegen, indem mehr Geräte verfügbar sind, wodurch parallele Testläufe möglich sind.

Es gibt drei Standard Quellen langsamerer Testläufe: Erneutes Signieren, Erneutes Installieren und Netzwerktasks.

Erneutes Signieren (unter iOS)

Vor der Installation auf dem iOS-Gerät durchläuft Ihre App einen Prozess, der als erneutes Signieren bezeichnet wird. Dieser Prozess ist erforderlich, damit das Bereitstellungsprofil mit dem Gerät in der Cloud übereinstimmt. Das erneute Signieren dauert einige Zeit, in der Regel ca. 1-2 Minuten. In seltenen Fällen führt das erneute Signieren auch zu Leistungseinbußen, da neu signierte Apps zwischengespeichert werden. Der zeitaufwändige Prozess wird nur einmal pro Binärdatei ausgeführt.

Wenn Ihr Continuous Delivery-Setup die IPA-Version vor dem Erstellen und Testen aktualisiert, ist die Binärdatei für jeden Test unterschiedlich, und die Strafe für die erneute Signatur tritt häufiger auf.

Neuinstallation

In einer Cloud für gemeinsam genutzte Geräte ist es wichtig, sicherzustellen, dass Geräte zwischen jedem Test bereinigt werden. Der nächste Kunde, der das Gerät verwendet, kann eine Person aus einem anderen organization sein. In App Center Test wird die App nach Abschluss des Testlaufs automatisch deinstalliert.

Es ist möglich, auszulassen MobileCapabilityType.FULL_RESET und auf festzulegen MobileCapabilityType.NO_RESETtrue , um die Testausführung zu beschleunigen. Weitere Informationen finden Sie unter Zurücksetzungsstrategien .

Netzwerkaufgaben

Lokale Netzwerkaufgaben sind schneller, da der Server näher und dedizierter für den Remotehost ist.