Preparazione dei test di Appium per il caricamento

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

I passaggi per preparare un'app e il relativo gruppo di test per il caricamento variano a seconda del framework di test. Questa guida illustra come preparare i test di Appium usando Java con JUnit per il caricamento in App Center. Per indicazioni sulla creazione di test di Appium, vedere la documentazione di Appium.

Si notino le limitazioni seguenti per il supporto di Appium:

Nota

Sono supportati il contesto WebView, i test del browser Chrome e del driver Web Chrome con browserName funzionalità.

  • Nessun supporto per TestNG (sono supportati solo i test JUnit).
  • Nessun supporto per Android 4.2 o versioni precedenti. Nessun supporto per il driver UIAutomator deprecato.
  • Nessun supporto per iOS 9.2.1 o versioni precedenti. Nessun supporto per il driver iOS uiautomation deprecato.
  • Nessun supporto per JUnit @Category attribute. (Può usare invece Includi/Escludi )
  • La versione di Maven deve essere almeno 3.3.9.
  • La versione corrente di Appium è 1.22.0. Viene aggiornato regolarmente con le nuove versioni.
  • JUnit 4.9 - 4.12 è supportato; non supportiamo JUnit 5.
  • I test devono essere destinati esattamente a un'app. (MobileCapabilityType.FULL_RESET è supportato)

Nota

In alcuni casi, i test possono comunque funzionare in App Center se usano strumenti o funzionalità non supportati. Tuttavia, tale funzionalità non supportata non è qa'd negli aggiornamenti futuri e potrebbe interrompersi senza preavviso.

Prerequisiti

I test verranno eseguiti usando Maven Surefire, che richiede test per seguire determinate convenzioni di denominazione:

"**/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".

Prima di tentare di caricare nel test di App Center, assicurarsi che l'esecuzione di test in locale nel computer con Maven funzioni:

➜  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!
...

Se non è possibile eseguire i test usando la riga di comando in locale, i test non funzioneranno anche nel test di App Center.

1. Modifiche al sistema di compilazione

Passaggio 1 - Aggiungere una dipendenza

Sarà necessario aggiungere una dipendenza per le estensioni di test di Appium:

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

Questo codice garantisce che i driver Android e iOS avanzati siano disponibili in fase di compilazione. I driver avanzati vengono forniti principalmente per abilitare la label funzionalità. Per altri dettagli sulla label funzionalità, vedere Il passaggio 4.

Passaggio 2- Aggiungere un profilo di caricamento

Copiare questo frammento di pom.xml codice nel <profiles> tag . Se non c'è alcuna <profiles> sezione nel pom, crearne una. Il profilo, quando attivato, comprimerà le classi di test e tutte le dipendenze nella target/upload cartella, pronto per essere caricato in Test.

2. Modifiche ai test

Passaggio 1 - Aggiungere importazioni

Importare questi pacchetti nelle classi di test:

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

Passaggio 2 - Creare un'istanza di TestWatcher

Inserire questa dichiarazione in ognuna delle classi di test:

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

Passaggio 3 - Aggiornare la dichiarazione del driver

Sostituire la dichiarazione di AndroidDriver<MobileElement> con EnhancedAndroidDriver<MobileElement> o IOSDriver<MobileElement> con EnhancedIOSDriver<MobileElement>

    private static EnhancedAndroidDriver<MobileElement> driver;

Passaggio 4 - Aggiornare le istanze del driver

Sostituire il modo in cui si crea un'istanza del driver, in modo che le linee sotto forma di:

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

... vengono modificati in:

    driver = Factory.createAndroidDriver(url, capabilities);

L'uso di questi driver consentirà comunque di eseguire i test in locale senza modifiche aggiuntive, ma consente di "etichettare" i passaggi di test nell'esecuzione del test usando driver.label("text"). Il testo e uno screenshot del dispositivo saranno visibili nel report di test in App Center.

È consigliabile chiamare driver.label nel @After metodo , che acquisisce uno screenshot dello stato finale dell'app. Un metodo di esempio @After per un test può essere simile al codice seguente:

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

3. Caricare nel test di App Center

Passaggi per caricare un test:

  1. Generare un comando di caricamento test di App Center usando le istruzioni all'avvio di un'esecuzione di test.

  2. Comprimere le classi di test e tutte le dipendenze nella target/upload cartella :

    mvn -DskipTests -P prepare-for-upload package
    
  3. Eseguire il comando upload:

    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. Risoluzione dei problemi di prestazioni

I test nei dispositivi in App Center verranno eseguiti leggermente più lentamente rispetto a quelli in un dispositivo locale. In genere, l'esecuzione più lenta supera la disponibilità di più dispositivi, consentendo esecuzioni di test parallele.

Esistono tre principali origini di esecuzioni di test più lente: firma, reinstallazione e attività di rete.

Ripetere la firma (in iOS)

Prima di essere installato nel dispositivo iOS, l'app passa attraverso un processo denominato ri-firma. Questo processo è necessario per rendere il profilo di provisioning corrispondente al dispositivo nel cloud. La rifirmazione richiede tempo, in genere circa 1-2 minuti. Raramente, la rifirmazione causa anche una riduzione delle prestazioni perché le app firmate di nuovo vengono memorizzate nella cache. Il processo che richiede molto tempo verrà eseguito una sola volta per ogni file binario.

Se la configurazione del recapito continuo aggiorna la versione IPA prima della compilazione e del test, il file binario sarà diverso per ogni test e la penalità di rifirmazione si verificherà più spesso.

Reinstallazione

In un cloud di dispositivi condivisi è importante garantire che i dispositivi vengano puliti tra ogni test. Il cliente successivo che usa il dispositivo potrebbe essere un utente di un'altra organizzazione. In Test di App Center l'app viene disinstallata automaticamente dopo il completamento dell'esecuzione del test.

È possibile omettere MobileCapabilityType.FULL_RESET e impostare su MobileCapabilityType.NO_RESET per true velocizzare l'esecuzione dei test. Per informazioni dettagliate , vedere Strategie di reimpostazione .

Attività di rete

Le attività di rete locale sono più veloci perché il server è più vicino e più dedicato all'host remoto.