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 tests basés sur Appium 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. Cela est dû au fait que Device Farm applique les paramètres par défaut et ne fait aucune hypothèse 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 vos spécifications de test. Par exemple, ce qui suit définit la usePrebuildWDA
fonctionnalité d'true
une suite de tests iOS afin d'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 entre guillemets échappée au shell. JSON
Les fonctionnalités Appium suivantes sont des sources courantes d'amélioration des performances :
noReset
etfullReset
-
Ces deux fonctionnalités, qui s'excluent mutuellement, décrivent le comportement d'Appium une fois chaque session terminée. Lorsqu'il
noReset
est défini surtrue
, le serveur Appium ne supprime pas les données de votre application lorsqu'une session Appium se termine, n'effectuant en fait aucun nettoyage.fullReset
dé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 Strategiesdans la documentation d'Appium. ignoreUnimportantViews
(Android uniquement)-
Demande à Appium de compresser la hiérarchie de l'interface utilisateur Android uniquement pour les vues pertinentes pour le test, ce qui accélère la recherche de certains éléments. Cependant, cela peut perturber certaines suites de tests XPath basées sur des données car la hiérarchie de la disposition de l'interface utilisateur a été modifiée.
skipUnlock
(Android uniquement)-
Informe Appium qu'aucun PIN code n'est actuellement défini, ce qui accélère les tests après un événement de fermeture d'é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 HTTP demandes à la date spécifiée.
webDriverAgent
URL S'ilwebDriverAgent
n'est pas déjà opérationnel, Appium peut mettre un certain temps au début d'une suite de tests pour démarrer le.webDriverAgent
Si vous démarrezwebDriverAgent
vous-même et que vous le configurezwebDriverAgentUrl
auhttp://localhost:8100
moment du démarrage d'Appium, vous pouvez démarrer votre suite de tests plus rapidement. Notez que cette fonctionnalité ne doit jamais être utilisée conjointement avec lauseNewWDA
fonctionnalité.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 test8100
(cela vous permetwebDriverAgentUrl
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 d'Appium et des variables d'webDriverAgent
environnement 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 que le
webDriverAgent
démarrage est réussi. Ce code doit être exécuté à la fin de la phase de pré-test après avoir vérifié le bon démarrage d'Appium :# 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
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.