View a markdown version of this page

Accélérer les Appium-based tests dans Device Farm grâce aux fonctionnalités souhaitées - AWS Device Farm

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accélérer les Appium-based tests dans Device Farm grâce aux fonctionnalités souhaitées

Lorsque vous utilisez Appium, vous constaterez peut-être que la suite de tests en mode standard est très lente. En effet, Device Farm applique les paramètres par défaut et ne fait aucune supposition quant à la manière dont vous souhaitez utiliser l'environnement Appium. Bien que ces valeurs par défaut soient basées sur les meilleures pratiques du secteur, elles peuvent ne pas s'appliquer à votre situation. Pour affiner les paramètres du serveur Appium, vous pouvez ajuster les fonctionnalités Appium par défaut dans votre spécification de test. Par exemple, ce qui suit définit la usePrebuildWDA capacité d'trueune suite de tests iOS pour accélérer l'heure de démarrage initiale :

phases: pre_test: - # ... Start up Appium - >- appium --log-timestamp --default-capabilities "{\"usePrebuiltWDA\": true, \"derivedDataPath\":\"$DEVICEFARM_WDA_DERIVED_DATA_PATH\", \"deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \"platformName\":\"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \"app\":\"$DEVICEFARM_APP_PATH\", \"automationName\":\"XCUITest\", \"udid\":\"$DEVICEFARM_DEVICE_UDID_FOR_APPIUM\", \"platformVersion\":\"$DEVICEFARM_DEVICE_OS_VERSION\"}" >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &

Les fonctionnalités d'Appium doivent être une structure JSON entre guillemets et échappée au shell.

Les fonctionnalités Appium suivantes sont des sources courantes d'amélioration des performances :

noReset et fullReset

Ces deux fonctionnalités, qui s'excluent mutuellement, décrivent le comportement d'Appium une fois chaque session terminée. Lorsque noReset cette option est définie surtrue, le serveur Appium ne supprime pas les données de votre application lorsqu'une session Appium se termine, n'effectuant aucun nettoyage. fullResetdésinstalle et efface toutes les données d'application de l'appareil après la fermeture de la session. Pour plus d'informations, consultez Reset Strategies dans la documentation Appium.

ignoreUnimportantViews(Android uniquement)

Demande à Appium de compresser la hiérarchie de l'interface utilisateur Android uniquement dans les vues pertinentes pour le test, accélérant ainsi la recherche de certains éléments. Cependant, cela peut interrompre certaines suites de XPath-based tests car la hiérarchie de la disposition de l'interface utilisateur a été modifiée.

skipUnlock(Android uniquement)

Informe Appium qu'aucun code PIN n'est actuellement défini, ce qui accélère les tests après un événement de désactivation de l'écran ou un autre événement de verrouillage.

webDriverAgentUrl(iOS uniquement)

Demande à Appium de supposer qu'une dépendance iOS essentielle est déjà en cours d'exécution et disponible pour accepter les requêtes HTTP à l'URL spécifiée. webDriverAgent S'il webDriverAgent n'est pas déjà opérationnel, Appium peut prendre un certain temps au début d'une suite de tests pour démarrer le. webDriverAgent Si vous le démarrez webDriverAgent vous-même et que vous le configurez webDriverAgentUrl au http://localhost:8100 démarrage d'Appium, vous pouvez démarrer votre suite de tests plus rapidement. Notez que cette fonctionnalité ne doit jamais être utilisée en même temps que la useNewWDA capacité.

Vous pouvez utiliser le code suivant pour commencer à webDriverAgent partir de votre fichier de spécifications de test sur le port local de l'appareil8100, puis le transférer vers le port local de l'hôte de test 8100 (cela vous permet webDriverAgentUrl de définir la valeur surhttp://localhost:8100). Ce code doit être exécuté pendant la phase d'installation une fois que tout code de configuration de l'Appium et des variables d'webDriverAgentenvironnement a été défini :

# Start WebDriverAgent and iProxy - >- xcodebuild test-without-building -project /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -derivedDataPath $DEVICEFARM_WDA_DERIVED_DATA_PATH -destination id=$DEVICEFARM_DEVICE_UDID_FOR_APPIUM IPHONEOS_DEPLOYMENT_TARGET=$DEVICEFARM_DEVICE_OS_VERSION GCC_TREAT_WARNINGS_AS_ERRORS=0 COMPILER_INDEX_STORE_ENABLE=NO >> $DEVICEFARM_LOG_DIR/webdriveragent_log.txt 2>&1 & iproxy 8100 8100 >> $DEVICEFARM_LOG_DIR/iproxy_log.txt 2>&1 &

Vous pouvez ensuite ajouter le code suivant à votre fichier de spécifications de test pour vous assurer qu'webDriverAgentil a bien démarré. Ce code doit être exécuté à la fin de la phase de pré-test après s'être assuré qu'Appium a bien démarré :

# Wait for WebDriverAgent to start - >- start_wda_timeout=0; while [ true ]; do if [ $start_wda_timeout -gt 60 ]; then echo "WebDriverAgent server never started in 60 seconds."; exit 1; fi; grep -i "ServerURLHere" $DEVICEFARM_LOG_DIR/webdriveragent_log.txt >> /dev/null 2>&1; if [ $? -eq 0 ]; then echo "WebDriverAgent REST http interface listener started"; break; else echo "Waiting for WebDriverAgent server to start. Sleeping for 1 seconds"; sleep 1; start_wda_timeout=$((start_wda_timeout+1)); fi; done;

Pour plus d'informations sur les fonctionnalités prises en charge par Appium, consultez la section Capacités souhaitées d'Appium dans la documentation Appium.

Pour découvrir d'autres moyens d'étendre votre suite de tests et d'optimiser vos tests, consultezExtension des environnements de test personnalisés dans Device Farm.