在 Device Farm 中建立測試執行 - AWS Device Farm

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Device Farm 中建立測試執行

您可以使用 Device Farm 主控台 AWS CLI或 Device Farm API 來建立測試執行。您也可以使用支援的外掛程式,例如 Device Farm 的 Jenkins 或 Gradle 外掛程式。如需外掛程式的詳細資訊,請參閱 工具和外掛程式。如需執行的詳細資訊,請參閱執行

先決條件

您必須在 Device Farm 中擁有專案。請遵循在 AWS Device Farm 中建立專案中的指示,然後返回此頁面。

建立測試執行 (主控台)

  1. 登入 Device Farm 主控台,網址為 https://https://console.aws.amazon.com/devicefarm

  2. 在導覽窗格中,選擇行動裝置測試,然後選擇專案

  3. 如果您已有專案,則可以將您的測試上傳至其中。否則,請選擇新增專案,輸入專案名稱,然後選擇建立

  4. 開啟您的專案,然後選擇建立執行

  5. (選用) 在執行設定下,於執行名稱區段中,輸入執行的名稱。如果未提供名稱,則 Device Farm 主控台預設會命名您的執行 'My Device Farm run'。

  6. (選用) 在執行設定下,在任務逾時區段中,您可以指定測試執行的執行逾時。如果您使用的是無限制的測試槽,請確認已在 Billing 方法下選取 Unmetered

  7. 執行設定下,於執行類型區段中,選取您的執行類型。如果您沒有準備好進行測試的應用程式,或者您正在測試 Android 應用程式 (.apk),請選取 Android 應用程式。如果您要測試 iOS (.ipa) 應用程式,請選取 iOS 應用程式。如果您想要測試 Web 應用程式,請選取 Web 應用程式。

  8. 選取應用程式下,在應用程式選取選項區段中,如果您沒有可供測試的應用程式,請選擇選取 Device Farm 提供的範例應用程式。如果您要使用自己的應用程式,請選取上傳自己的應用程式,然後選擇您的應用程式檔案。如果您上傳的是 iOS 應用程式,請務必選擇 iOS device (iOS 裝置),而非模擬器。

  9. 設定測試下,選擇其中一個可用的測試架構。

    注意

    如果沒有任何可用的測試,請選擇 Built-in: Fuzz (內建:Fuzz),以執行標準內建測試套件。如果您選擇 Built-in: Fuzz (內建:Fuzz),且出現 Event count (事件計數)Event throttle (事件調節)Randomizer seed (亂數種子) 方塊,則可變更或保留值。

    如需可用測試套件的詳細資訊,請參閱AWS Device Farm 中的測試架構和內建測試

  10. 如果您未選擇內建:模糊,請選取選取測試套件下的選擇檔案。瀏覽並選擇包含測試的檔案。

  11. 針對您的測試環境,選擇在我們的標準環境中執行您的測試,或在自訂環境中執行您的測試。如需詳細資訊,請參閱在 AWS Device Farm 中測試環境

  12. 如果您使用的是自訂測試環境,您可以選擇執行下列動作:

    1. 如果您想要在自訂測試環境中編輯預設測試規格,請選擇 Edit (編輯) 來更新預設 YAML 規格。

    2. 如果您變更測試規格,請選擇另存為新檔來更新。

  13. 選取裝置下,執行下列其中一項操作:

    • 若要選擇內建的裝置集區來對其執行測試,請對於 Device pool (裝置集區),選擇 Top Devices (熱門裝置)

    • 若要建立您自己的裝置集區來對其執行測試,請依照建立裝置集區中的指示,然後返回此頁面。

    • 如果您先前已建立自己的裝置集區,請對於 Device pool (裝置集區),選擇您的裝置集區。

    • 選取手動選取裝置,然後選擇您要執行的目標裝置。此組態將不會儲存。

    如需詳細資訊,請參閱AWS Device Farm 中的裝置支援

  14. (選用) 若要新增其他組態,請開啟其他組態下拉式清單。在本節中,您可以執行下列任何動作:

    • 若要提供其他資料供 Device Farm 在執行期間使用,請在新增額外資料旁選擇選擇檔案,然後瀏覽並選擇包含資料的 .zip 檔案。

    • 若要在執行期間安裝 Device Farm 的其他應用程式,請在安裝其他應用程式旁選擇選擇檔案,然後瀏覽並選擇包含應用程式的 .apk 或 .ipa 檔案。對於其他您要安裝的應用程式重複此動作。您可以在上傳應用程式之後,藉由拖放它們來變更安裝順序。

    • 若要指定執行期間是否啟用 Wi-Fi、藍牙、GPS 或 NFC,請在 Set radio states (設定無線電狀態) 旁選取適當的方塊。

    • 若要預設執行的裝置經緯度,請在 Device location (裝置位置) 旁輸入座標。

    • 若要預設執行的裝置地區設定,請在裝置地區設定中選擇地區設定。

    • 選取啟用影片錄製以在測試期間錄製影片。

    • 選取啟用應用程式效能資料擷取,以從裝置擷取效能資料。

    注意

    設定裝置無線電狀態和地區設定目前僅適用於 Android 原生測試的選項。

    注意

    如果您有私有裝置,也會顯示私有裝置特定的組態。

  15. 在頁面底部,選擇建立執行以排程執行。

Device Farm 會在裝置可用時立即啟動執行,通常在幾分鐘內。在測試執行期間,Device Farm 主控台會在執行資料表 Device Farm scheduled a job. 中顯示待處理圖示。執行中的每個裝置也會以待定圖示開頭,然後在 Device Farm progress indicator. 測試開始時切換到執行中圖示。當每個測試完成時,裝置名稱旁會顯示測試結果圖示。完成所有測試後,執行旁的待定圖示會變更為測試結果圖示。

如果您想要停止測試執行,請參閱 在 AWS Device Farm 中停止執行

建立測試執行 (AWS CLI)

您可以使用 AWS CLI 來建立測試執行。

步驟 1:選擇專案

您必須將測試執行與 Device Farm 專案建立關聯。

  1. 若要列出 Device Farm 專案,請執行 list-projects。如果您沒有專案,請參閱在 AWS Device Farm 中建立專案

    範例:

    aws devicefarm list-projects

    回應包含 Device Farm 專案的清單。

    { "projects": [ { "name": "MyProject", "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "created": 1503612890.057 } ] }
  2. 選擇要與測試執行建立關聯的專案,並記下其 Amazon Resource Name (ARN)。

步驟 2:選擇裝置集區

您必須選擇要與測試執行建立關聯的裝置集區。

  1. 若要檢視裝置集區,請執行 list-device-pools 並指定專案 ARN。

    範例:

    aws devicefarm list-device-pools --arn arn:MyProjectARN

    回應包含內建的 Device Farm 裝置集區,例如 Top Devices,以及先前為此專案建立的任何裝置集區:

    { "devicePools": [ { "rules": [ { "attribute": "ARN", "operator": "IN", "value": "[\"arn:aws:devicefarm:us-west-2::device:example1\",\"arn:aws:devicefarm:us-west-2::device:example2\",\"arn:aws:devicefarm:us-west-2::device:example3\"]" } ], "type": "CURATED", "name": "Top Devices", "arn": "arn:aws:devicefarm:us-west-2::devicepool:example", "description": "Top devices" }, { "rules": [ { "attribute": "PLATFORM", "operator": "EQUALS", "value": "\"ANDROID\"" } ], "type": "PRIVATE", "name": "MyAndroidDevices", "arn": "arn:aws:devicefarm:us-west-2:605403973111:devicepool:example2" } ] }
  2. 選擇裝置集區,並記下其 ARN。

    您也可以建立裝置集區,然後返回此步驟。如需詳細資訊,請參閱建立裝置集區 (AWS CLI)

步驟 3:上傳您的應用程式檔案

若要建立上傳請求並取得 Amazon Simple Storage Service (Amazon S3) 預先簽章的上傳 URL,您需要:

  • 您的專案 ARN。

  • 您的應用程式檔案名稱。

  • 上傳的類型。

如需詳細資訊,請參閱create-upload

  1. 若要上傳檔案,請搭配 –-project-arn--name--type 參數執行 create-upload

    此範例會建立 Android 應用程式的上傳:

    aws devicefarm create-upload -–project-arn arn:MyProjectArn -–name MyAndroid.apk -–type ANDROID_APP

    回應包含您的應用程式上傳 ARN 和預先簽章的 URL。

    { "upload": { "status": "INITIALIZED", "name": "MyAndroid.apk", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "ANDROID_APP", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  2. 記下應用程式上傳 ARN 和預先簽章的 URL。

  3. 使用 Amazon S3 預先簽章的 URL 上傳您的應用程式檔案。此範例會使用 curl 來上傳 Android .apk 檔案:

    curl -T MyAndroid.apk "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"

    如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用預先簽章URLs 上傳物件

  4. 若要檢查應用程式的上傳狀態,請執行 get-upload,並指定上傳的應用程式 ARN。

    aws devicefarm get-upload –-arn arn:MyAppUploadARN

    等到回應中的狀態為 SUCCEEDED,然後再上傳您的測試指令碼套件。

    { "upload": { "status": "SUCCEEDED", "name": "MyAndroid.apk", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "ANDROID_APP", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

步驟 4:上傳您的測試指令碼套件

接下來,您會上傳您的測試指令碼套件。

  1. 若要建立您的上傳請求並取得 Amazon S3 預先簽章的上傳 URL,create-upload請使用 –-project-arn--name--type 參數執行 。

    此範例會建立 Appium Java TestNG 測試套件上傳:

    aws devicefarm create-upload –-project-arn arn:MyProjectARN -–name MyTests.zip –-type APPIUM_JAVA_TESTNG_TEST_PACKAGE

    回應包含您的測試套件上傳 ARN 和預先簽章的 URL。

    { "upload": { "status": "INITIALIZED", "name": "MyTests.zip", "created": 1535738627.195, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  2. 記下測試套件上傳的 ARN 和預先簽章的 URL。

  3. 使用 Amazon S3 預先簽章的 URL 上傳您的測試指令碼套件檔案。此範例會使用 curl 來上傳壓縮的 Appium TestNG 指令碼檔案:

    curl -T MyTests.zip "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
  4. 若要檢查測試指令碼套件上傳的狀態,請執行 get-upload,並指定測試套件上傳的 ARN,其來自步驟 1。

    aws devicefarm get-upload –-arn arn:MyTestsUploadARN

    等到回應中的狀態為 SUCCEEDED,然後再繼續下一步 (選用步驟)。

    { "upload": { "status": "SUCCEEDED", "name": "MyTests.zip", "created": 1535738627.195, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

步驟 5:(選用) 上傳您的自訂測試規格

如果您是在標準測試環境中執行測試,則可跳過此步驟。

Device Farm 會維護每個支援測試類型的預設測試規格檔案。接著,您會下載預設測試規格,並將其用來建立自訂測試規格,以在自訂測試環境中執行您的測試。如需詳細資訊,請參閱在 AWS Device Farm 中測試環境

  1. 若要尋找預設測試規格的上傳 ARN,請執行 list-uploads 並指定專案 ARN。

    aws devicefarm list-uploads --arn arn:MyProjectARN

    回應會包含每個預設測試規格的項目:

    { "uploads": [ { { "status": "SUCCEEDED", "name": "Default TestSpec for Android Appium Java TestNG", "created": 1529498177.474, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } } ] }
  2. 從清單中選擇您的預設測試規格。請記下上傳 ARN。

  3. 執行 get-upload 並指定上傳 ARN,即可下載預設測試規格。

    範例:

    aws devicefarm get-upload –-arn arn:MyDefaultTestSpecARN

    回應包含預先簽章的 presigned URL,其中您可以下載預設測試規格。

  4. 此範例會使用 curl 來下載預設測試規格,並將其儲存為 MyTestSpec.yml

    curl "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL" > MyTestSpec.yml
  5. 您可以編輯預設測試規格,以符合您的測試要求,然後在未來測試執行中使用您已修改的測試規格。請跳過此步驟以使用預設測試規格,如同在自訂測試環境中一般。

  6. 若要建立自訂測試規格的上傳,請執行 create-upload,並指定測試規格名稱、測試規格類型和專案 ARN。

    此範例會建立 Appium Java TestNG 自訂測試規格的上傳:

    aws devicefarm create-upload --name MyTestSpec.yml --type APPIUM_JAVA_TESTNG_TEST_SPEC --project-arn arn:MyProjectARN

    回應包含測試規格上傳 ARN 和預先簽章的 URL:

    { "upload": { "status": "INITIALIZED", "category": "PRIVATE", "name": "MyTestSpec.yml", "created": 1535751101.221, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  7. 記下測試規格上傳的 ARN 和預先簽章的 URL。

  8. 使用 Amazon S3 預先簽章的 URL 上傳您的測試規格檔案。此範例會使用 curl 來上傳 Appium JavaTestNG 測試規格:

    curl -T MyTestSpec.yml "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
  9. 若要檢查測試規格上傳的狀態,請執行 get-upload,並指定上傳 ARN。

    aws devicefarm get-upload –-arn arn:MyTestSpecUploadARN

    等到回應中的狀態變成 SUCCEEDED,再排定測試執行。

    { "upload": { "status": "SUCCEEDED", "name": "MyTestSpec.yml", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

    若要更新自訂測試規格,請執行 update-upload,並指定測試規格的上傳 ARN。如需詳細資訊,請參閱update-upload

步驟 6:排程測試執行

若要使用 排程測試執行 AWS CLI,請執行 schedule-run,指定:

如果您是在自訂測試環境中執行測試,則也需要來自步驟 5 的測試規格 ARN。

在標準測試環境中排定執行
  • 執行 schedule-run,並指定專案 ARN、裝置集區 ARN、應用程式上傳 ARN,以及測試套件資訊。

    範例:

    aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN

    回應包含一個執行 ARN,您可以用來檢查測試執行的狀態。

    { "run": { "status": "SCHEDULING", "appUpload": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345appEXAMPLE", "name": "MyTestRun", "radios": { "gps": true, "wifi": true, "nfc": true, "bluetooth": true }, "created": 1535756712.946, "totalJobs": 179, "completedJobs": 0, "platform": "ANDROID_APP", "result": "PENDING", "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-12345devicepoolEXAMPLE", "jobTimeoutMinutes": 150, "billingMethod": "METERED", "type": "APPIUM_JAVA_TESTNG", "testSpecArn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345specEXAMPLE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE", "counters": { "skipped": 0, "warned": 0, "failed": 0, "stopped": 0, "passed": 0, "errored": 0, "total": 0 } } }

    如需詳細資訊,請參閱schedule-run

在自訂測試環境中排定執行
  • 此處步驟與標準測試環境的步驟幾乎相同,但 --test 參數中需加入額外的 testSpecArn 屬性。

    範例:

    aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test testSpecArn=arn:MyTestSpecUploadARN,type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN
檢查測試執行的狀態
  • 執行 get-run 命令並指定執行 ARN:

    aws devicefarm get-run --arn arn:aws:devicefarm:us-west-2:111122223333:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE

如需詳細資訊,請參閱get-run。如需搭配 使用 Device Farm 的詳細資訊 AWS CLI,請參閱 AWS CLI 參考

建立測試執行 (API)

步驟與 AWS CLI 章節中所述的步驟相同。請參閱 建立測試執行 (AWS CLI)

您需要此資訊,才能呼叫 ScheduleRun API:

注意

如果您是在自訂測試環境中執行測試,則也需要您的測試規格上傳 ARN。如需詳細資訊,請參閱步驟 5:(選用) 上傳您的自訂測試規格CreateUpload

如需使用 Device Farm API 的詳細資訊,請參閱 自動化Device Farm

後續步驟

在 Device Farm 主控台中,時鐘圖示 Device Farm scheduled a job. 會變更為結果圖示,例如在執行完成 The test succeeded. 時成功。測試一完成,執行的報告就會出現。如需詳細資訊,請參閱AWS Device Farm 中的報告

若要使用報告,請依照在 Device Farm 中檢視測試報告中的指示。