Accelerazione dei test basati su Appium in Device Farm grazie alle funzionalità desiderate - AWS Device Farm

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accelerazione dei test basati su Appium in Device Farm grazie alle funzionalità desiderate

Quando usi Appium, potresti scoprire che la suite di test in modalità standard è molto lenta. Questo perché Device Farm applica le impostazioni predefinite e non fa ipotesi su come si desidera utilizzare l'ambiente Appium. Sebbene queste impostazioni predefinite siano basate sulle migliori pratiche del settore, potrebbero non essere applicabili alla vostra situazione. Per ottimizzare i parametri del server Appium, puoi regolare le funzionalità Appium predefinite nelle specifiche del test. Ad esempio, quanto segue imposta la usePrebuildWDA funzionalità true in una suite di test iOS per accelerare l'ora di avvio iniziale:

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 &

Le funzionalità di Appium devono essere una struttura tra virgolette e derivata da shell escape. JSON

Le seguenti funzionalità di Appium sono fonti comuni di miglioramento delle prestazioni:

noReset e fullReset

Queste due funzionalità, che si escludono a vicenda, descrivono il comportamento di Appium al termine di ogni sessione. Quando noReset è impostato sutrue, il server Appium non rimuove i dati dall'applicazione al termine di una sessione Appium, in effetti non esegue alcuna pulizia. fullResetdisinstalla e cancella tutti i dati dell'applicazione dal dispositivo dopo la chiusura della sessione. Per ulteriori informazioni, consulta Reset Strategies nella documentazione di Appium.

ignoreUnimportantViews(Solo Android)

Indica ad Appium di comprimere la gerarchia dell'interfaccia utente Android solo nelle viste pertinenti per il test, velocizzando la ricerca di determinati elementi. Tuttavia, ciò può interrompere alcune suite di test XPath basate su di esse perché la gerarchia del layout dell'interfaccia utente è stata modificata.

skipUnlock(Solo Android)

Informa Appium che al momento non è impostato alcun PIN codice, il che velocizza i test dopo un evento di screen off o un altro evento di blocco.

webDriverAgentUrl(solo iOS)

Indica ad Appium di presumere che una dipendenza iOS essenziale sia già in esecuzione e disponibile per accettare HTTP richieste al momento specificato. webDriverAgent URL Se webDriverAgent non è già attivo e funzionante, Appium può impiegare del tempo all'inizio di una suite di test per avviare la. webDriverAgent Se lo avvii webDriverAgent da solo e lo fai http://localhost:8100 quando avvii Appium, puoi avviare la tua suite di test più velocemente. webDriverAgentUrl Nota che questa funzionalità non dovrebbe mai essere utilizzata insieme alla useNewWDA funzionalità.

È possibile utilizzare il codice seguente per iniziare webDriverAgent dal file delle specifiche di test sulla porta locale del dispositivo8100, quindi inoltrarlo alla porta locale dell'host di test 8100 (ciò consente webDriverAgentUrl di impostare il valore suhttp://localhost:8100). Questo codice deve essere eseguito durante la fase di installazione dopo aver definito qualsiasi codice per la configurazione di Appium e delle variabili di webDriverAgent ambiente:

# 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 &

Quindi, puoi aggiungere il seguente codice al file delle specifiche di test per assicurarti che webDriverAgent sia avviato correttamente. Questo codice dovrebbe essere eseguito alla fine della fase di pre-test dopo aver verificato che Appium sia stato avviato correttamente:

# 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;

Per ulteriori informazioni sulle funzionalità supportate da Appium, consulta Appium Desired Capabilities nella documentazione di Appium.

Per ulteriori modi per estendere la suite di test e ottimizzare i test, consulta. Estensione degli ambienti di test personalizzati in Device Farm