원하는 기능을 통해 Device Farm의 Appium 기반 테스트 속도 향상 - AWS Device Farm

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

원하는 기능을 통해 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 기능은 성능 향상의 일반적인 출처입니다.

noResetfullReset

상호 배타적인 이 두 기능은 각 세션이 완료된 후 Appium의 동작을 설명합니다. noResettrue로 설정하면 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를 직접 시작하고 webDriverAgentUrlhttp://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의 사용자 지정 테스트 환경 확장.