기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
원하는 기능을 통해 Device Farm의 Appium 기반 테스트 속도 향상
Appium을 사용할 때 표준 모드 테스트 스위트가 매우 느릴 수 있습니다. 이는 Device Farm이 기본 설정을 적용하고 Appium 환경 사용 방법에 대해 어떠한 가정도 하지 않기 때문입니다. 이러한 기본값은 업계 모범 사례를 기반으로 구축되었지만 사용 상황에 따라 적용되지 않을 수 있습니다. Appium 서버의 파라미터를 미세 조정하려면 테스트 사양에서 기본 Appium 기능을 조정할 수 있습니다. 예를 들어 다음은 iOS 테스트 스위트에서 초기 시작 시간을 단축하기 위해 usePrebuildWDA
기능을 true
로 설정합니다.
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 &
Appium 기능은 쉘에서 이스케이프되고 인용된 JSON 구조여야 합니다.
다음과 같은 Appium 기능은 성능 향상의 일반적인 출처입니다.
noReset
및fullReset
-
상호 배타적인 이 두 기능은 각 세션이 완료된 후 Appium의 동작을 설명합니다.
noReset
을true
로 설정하면 Appium 세션이 종료될 때 Appium 서버가 애플리케이션에서 데이터를 제거하지 않으므로 사실상 어떤 정리 작업도 수행하지 않습니다.fullReset
은 세션이 종료된 후 장치에서 모든 애플리케이션 데이터를 제거하고 지웁니다. 자세한 내용은 Appium 설명서의 재설정 전략을 참조하세요. ignoreUnimportantViews
(Android만 해당)-
Appium에 Android UI 계층 구조를 테스트와 관련된 뷰로만 압축하여 특정 요소 조회 속도를 높이도록 지시합니다. 그러나 UI 레이아웃의 계층 구조가 변경되었기 때문에 일부 XPath기반 테스트 제품군이 중단될 수 있습니다.
skipUnlock
(Android만 해당)-
Appium에 현재 설정된 PIN 코드가 없음을 알립니다. 이 코드는 화면 끄기 이벤트 또는 기타 잠금 이벤트 후 테스트 속도를 높입니다.
webDriverAgentUrl
(iOS만 해당)-
필수 iOS 종속성인 가 이미 실행 중
webDriverAgent
이고 지정된 에서 HTTP 요청을 수락할 수 있다고 가정하도록 Appium에 지시합니다URL. 아직webDriverAgent
가 실행되지 않은 경우 Appium의 테스트 스위트 초기에webDriverAgent
를 시작하는 데 시간이 걸릴 수 있습니다. Appium을 시작할 때webDriverAgent
를 직접 시작하고webDriverAgentUrl
을http://localhost:8100
로 설정하면 테스트 스위트를 더 빠르게 부팅할 수 있습니다. 참고로 이 기능을useNewWDA
기능과 함께 사용해서는 안 됩니다.다음 코드를 사용하여 디바이스의 로컬 포트
8100
에 있는 테스트 사양 파일에서webDriverAgent
를 시작한 다음 테스트 호스트의 로컬 포트8100
로 전달할 수 있습니다(이렇게 하면webDriverAgentUrl
값을http://localhost:8100
로 설정할 수 있음). 이 코드는 Appium 및webDriverAgent
환경 변수를 설정하기 위한 코드를 정의한 후 설치 단계에서 실행해야 합니다.# 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 &
그런 다음 테스트 사양 파일에 다음 코드를 추가하여
webDriverAgent
가 성공적으로 시작되었는지 확인할 수 있습니다. 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;
Appium이 지원하는 기능에 대한 자세한 내용은 Appium 설명서의 Appium 필요한 기능
테스트 제품군을 확장하고 테스트를 최적화하는 자세한 방법은 섹션을 참조하세요Device Farm의 사용자 지정 테스트 환경 확장.