Device Farm의 사용자 지정 테스트 환경 확장 - AWS Device Farm

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

Device Farm의 사용자 지정 테스트 환경 확장

Device Farm 사용자 지정 모드를 사용하면 테스트 세트 이상의 것을 실행할 수 있습니다. 이 섹션에서는 테스트 스위트를 확장하고 테스트를 최적화하는 방법에 대해 알아봅니다.

PIN 설정

일부 응용 프로그램에서는 장치에서 PIN을 설정해야 합니다. Device Farm은 기본적으로 장치에서 PIN을 설정하는 것을 지원하지 않습니다. 그러나 다음과 같은 주의 사항에서 이 문제가 발생할 수 있습니다.

  • 기기에서 Android 8 이상을 실행 중이어야 합니다.

  • 테스트가 완료된 후 PIN을 제거해야 합니다.

테스트에서 PIN을 설정하려면pre_testpost_test다음과 같이 PIN을 설정하고 제거하는 단계:

phases: pre_test: - # ... among your pre_test commands - DEVICE_PIN_CODE="1234" - adb shell locksettings set-pin "$DEVICE_PIN_CODE" post_test: - # ... Among your post_test commands - adb shell locksettings clear --old "$DEVICE_PIN_CODE"

테스트 스위트가 시작되면 PIN 1234가 설정됩니다. 테스트 스위트가 종료되면 PIN이 제거됩니다.

주의

테스트가 완료된 후 장치에서 PIN을 제거하지 않으면 장치와 계정이 격리됩니다.

서버 기능을 통해 Appium 기반 테스트 속도 향상

Appium을 사용할 때 표준 모드 테스트 스위트가 매우 느릴 수 있습니다. 이는 Device Farm이 기본 설정을 적용하고 Appium 환경을 사용하는 방법에 대해 가정하지 않기 때문입니다. 이러한 기본값은 업계 모범 사례를 기반으로 작성되지만 상황에 적용되지 않을 수 있습니다. Appium 서버의 매개 변수를 미세 조정하려면 테스트 사양에서 기본 Appium Driver 기능을 조정할 수 있습니다. 예를 들어 다음 에서는usePrebuildWDA에 대한 기능trueiOS 테스트 스위트에서 초기 시작 시간을 단축합니다.

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의 동작을 설명합니다. 일시noReset다음의 경우 이 로 설정됩니다.trueAppium 세션이 끝날 때 Appium 서버는 응용 프로그램에서 데이터를 제거하지 않으므로 효과적으로 정리 작업을 수행하지 않습니다.fullReset세션이 종료된 후 장치에서 모든 응용 프로그램 데이터를 제거하고 지웁니다. 자세한 내용은 단원을 참조하십시오.전략 재설정Appium 설명서를 참조하십시오.

ignoreUnimportantViews(안드로이드만 해당)

Appium에 Android UI 계층 구조만 압축하도록 지시합니다.관련테스트에 대한 뷰로 특정 요소 조회 속도를 높입니다. 그러나 UI 레이아웃의 계층 구조가 변경되었기 때문에 일부 XPath 기반 테스트 스위트가 중단될 수 있습니다.

skipUnlock(안드로이드만 해당)

Appium에 현재 설정된 PIN 코드가 없다는 것을 알립니다. 이 코드는 스크린 오프 이벤트 또는 기타 잠금 이벤트 후 테스트 속도를 높입니다.

Appium 이 지원하는 기능에 대한 자세한 내용은 다음 () 을 참조하십시오.Appium 원하는 기능Appium 설명서를 참조하십시오.

테스트 실행 후 웹후크 및 기타 API 사용

모든 테스트 스위트가 완료된 후 Device Farm에서 웹훅을 호출하도록 할 수 있습니다.curl. 이 작업을 수행하는 프로세스는 대상 및 형식에 따라 다릅니다. 특정 웹훅에 대해서는 해당 웹훅에 대한 설명서를 참조하십시오. 다음 예제에서는 테스트 스위트가 Slack 웹훅을 완료할 때마다 메시지를 게시합니다.

phases: post_test: - curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests on '$DEVICEFARM_DEVICE_NAME' have finished!"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Slack에서 Webhook 사용에 대한 자세한 정보는 다음 () 을 참조하십시오.웹훅을 사용하여 첫 번째 Slack 메시지 보내기에서 Slack API 참조입니다.

사용에 국한되지 않습니다.curl를 호출하려면 Webhook. 테스트 패키지에는 Device Farm 실행 환경과 호환되는 한 추가 스크립트 및 도구가 포함될 수 있습니다. 예를 들어 테스트 패키지에는 다른 API에 요청하는 보조 스크립트가 포함될 수 있습니다. 필요한 패키지가 테스트 스위트의 요구 사항과 함께 설치되어 있는지 확인합니다. 테스트 세트가 완료된 후 실행되는 스크립트를 추가하려면 테스트 패키지에 스크립트를 포함하고 테스트 사양에 다음을 추가합니다.

phases: post_test: - python post_test.py
참고

테스트 패키지에 사용된 API 키 또는 기타 인증 토큰을 유지하는 것은 사용자의 책임입니다. 모든 형태의 보안 자격 증명을 소스 제어에서 벗어나고, 가능한 가장 적은 권한을 가진 자격 증명을 사용하고, 가능할 때마다 취소 가능한 짧은 토큰을 사용하는 것이 좋습니다. 보안 요구 사항을 확인하려면 사용하는 타사 API에 대한 설명서를 참조하십시오.

사용을 계획하는 경우AWS서비스는 테스트 실행 스위트의 일부로, 테스트 세트 외부에서 생성되고 테스트 패키지에 포함된 IAM 임시 자격 증명을 사용해야 합니다. 이러한 자격 증명은 가장 적은 권한과 가능한 가장 짧은 수명을 가져야 합니다. 임시 자격 증명 생성에 대한 자세한 내용은 단원을 참조하십시오.임시 보안 자격 증명 요청IAM 사용 설명서.

테스트 패키지에 추가 파일 추가

추가 구성 파일 또는 추가 테스트 데이터로 테스트의 일부로 추가 파일을 사용할 수 있습니다. 업로드하기 전에 테스트 패키지에 이러한 추가 파일을 추가할 수 있습니다.AWS Device Farm를 클릭한 다음 사용자 정의 환경 모드에서 액세스합니다. 기본적으로 모든 테스트 패키지 업로드 형식 (ZIP, IPA, APK, JAR 등) 은 표준 ZIP 작업을 지원하는 패키지 아카이브 형식입니다.

파일을 업로드하기 전에 테스트 아카이브에 파일을 추가할 수 있습니다.AWS Device Farm다음 명령을 사용합니다.

$ zip zip-with-dependencies.zip extra_file

추가 파일 디렉토리의 경우:

$ zip -r zip-with-dependencies.zip extra_files/

이러한 명령은 IPA 파일을 제외한 모든 테스트 패키지 업로드 형식에 대해 예상대로 작동합니다. IPA 파일의 경우, 특히 XCuitEsts와 함께 사용하는 경우, 어떻게 인해 추가 파일을 약간 다른 위치에 두는 것이 좋습니다AWS Device FarmiOS 테스트 패키지를 사임합니다. iOS 테스트를 빌드할 때 테스트 응용 프로그램 디렉토리는 이름이 지정된 다른 디렉토리 안에 위치합니다.Payload.

예를 들어, 다음과 같은 iOS 테스트 디렉토리가 표시되는 방식입니다.

$ tree . └── Payload └── ADFiOSReferenceAppUITests-Runner.app ├── ADFiOSReferenceAppUITests-Runner ├── Frameworks │ ├── XCTAutomationSupport.framework │ │ ├── Info.plist │ │ ├── XCTAutomationSupport │ │ ├── _CodeSignature │ │ │ └── CodeResources │ │ └── version.plist │ └── XCTest.framework │ ├── Info.plist │ ├── XCTest │ ├── _CodeSignature │ │ └── CodeResources │ ├── en.lproj │ │ └── InfoPlist.strings │ └── version.plist ├── Info.plist ├── PkgInfo ├── PlugIns │ ├── ADFiOSReferenceAppUITests.xctest │ │ ├── ADFiOSReferenceAppUITests │ │ ├── Info.plist │ │ └── _CodeSignature │ │ └── CodeResources │ └── ADFiOSReferenceAppUITests.xctest.dSYM │ └── Contents │ ├── Info.plist │ └── Resources │ └── DWARF │ └── ADFiOSReferenceAppUITests ├── _CodeSignature │ └── CodeResources └── embedded.mobileprovision

이러한 XCuiTest 패키지의 경우 다음으로 끝나는 디렉토리에 추가 파일을 추가하십시오..app의 내부Payload디렉터리. 예를 들어 다음 명령은 이 테스트 패키지에 파일을 추가하는 방법을 보여 줍니다.

$ mv extra_file Payload/*.app/ $ zip -r my_xcui_tests.ipa Payload/

테스트 패키지에 파일을 추가하면 에서 약간 다른 상호 작용 동작을 기대할 수 있습니다.AWS Device Farm업로드 형식을 기반으로 합니다. 업로드에서 ZIP 파일 확장자를 사용한 경우AWS Device Farm테스트 전에 업로드의 압축을 자동으로 풀고 압축이 풀린 파일은$장치팜_테스트_패키지_경로환경 변수. (즉, 라는 파일을 추가한 경우엑스트라_파일첫 번째 예에서와 같이 아카이브의 루트에 위치합니다.$장치팜_테스트_패키지_경로/엑스트라_파일테스트 중).

보다 실용적인 예제를 사용하려면 다음을 포함하려는 Appium TestNG 사용자라면testng.xml파일을 테스트하는 경우 다음 명령을 사용하여 아카이브에 포함시킬 수 있습니다.

$ zip zip-with-dependencies.zip testng.xml

그런 다음 사용자 정의 환경 모드에서 테스트 명령을 다음과 같이 변경할 수 있습니다.

java -D appium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH org.testng.TestNG -testjar *-tests.jar -d $DEVICEFARM_LOG_DIR/test-output $DEVICEFARM_TEST_PACKAGE_PATH/testng.xml

테스트 패키지 업로드 확장자가 ZIP (예: APK, IPA 또는 JAR 파일) 이 아닌 경우 업로드된 패키지 파일 자체는$장치팜_테스트_패키지_경로. 이러한 파일은 여전히 아카이브 형식 파일이므로 파일 압축을 해제하여 내에서 추가 파일에 액세스할 수 있습니다. 예를 들어 다음 명령은 테스트 패키지 내용 (APK, IPA 또는 JAR 파일의 경우) 의 압축을 풉니다./tmp디렉토리:

unzip $DEVICEFARM_TEST_PACKAGE_PATH -d /tmp

APK 또는 JAR 파일의 경우 추가 파일의 압축이 해제됩니다./tmp디렉터리 (예:/tmp/엑스트라_파일). 앞에서 설명한 것처럼 IPA 파일의 경우, 추가 파일은 폴더에서 끝나는 약간 다른 위치에 있습니다..app, 그 안에 있는Payload디렉터리. 예를 들어 위의 IPA 예제를 기반으로 파일이 해당 위치에서 찾을 수 있습니다./TMP/페이로드/애드파이오레퍼런스응용 프로그램-러너.App/EXTRA_파일(다음과 같이 참조 가능/TMP/페이로드/ *.app/엑스트라_파일).