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:
Generare un comando di caricamento test di App Center usando le istruzioni all'avvio di un'esecuzione di test.
Comprimere le classi di test e tutte le dipendenze nella
target/upload
cartella :mvn -DskipTests -P prepare-for-upload package
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.