在 Device Farm 中创建测试运行 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Device Farm 中创建测试运行

你可以使用 Device Farm 控制台或 Device Farm API 来创建测试运行。 AWS CLI您也可以使用支持的插件,如适用于 Device Farm 的 Jenkins 或 Gradle 插件。有关插件的更多信息,请参阅 工具和插件。有关运行的信息,请参阅运行

先决条件

您在 Device Farm 中必须有一个项目。按照在 AWS Device Farm 中创建项目中的说明操作,然后返回此页。

创建测试运行(控制台)

  1. 通过以下网址登录 Device Farm 控制台: https://console.aws.amazon.com/devicefarm

  2. 在导航窗格中,选择移动设备测试,然后选择项目

  3. 如果您已具有项目,可以将您的测试上传到现有项目。否则,选择新建项目,输入项目名称,然后选择创建

  4. 打开您的项目,然后选择 Create a new run (创建新运行)

  5. 选择应用程序页面上,选择移动应用程序Web 应用程序

    选择 Device Farm 控制台中的应用程序。
  6. 上传您的应用程序文件。您也可以拖放文件或选择最近上传的文件。如果您要上传 iOS 应用程序,请确保选择 iOS device (iOS 设备),而不是模拟器。

  7. (可选)在 Run name (运行名称) 中输入名称。默认情况下,Device Farm 使用应用程序文件名。

  8. 选择下一步

  9. Configure (配置) 页面上,选择可用的测试套件之一。

    注意

    如果您没有任何可用的测试,请选择 Built-in: Fuzz (内置: 模糊) 来运行标准的内置测试套件。如果您选择了 Built-in: Fuzz (内置: 模糊) 并且出现了 Event count (事件计数)Event throttle (事件限制)Randomizer seed (随机程序种子) 框,则可以更改或保留值。

    有关可用测试套件的信息,请参阅在 AWS Device Farm 中使用测试类型

  10. 如果您没有选择内置: 模糊,请选择选择文件,然后浏览到并选择包含您的测试的文件。

  11. 对于您的执行环境,请选择在标准环境中运行测试自定义您的测试环境。有关更多信息,请参阅 测试环境

  12. 如果您使用的是标准测试环境,请跳到步骤 13。如果您使用的是包含默认测试规范 YAML 文件的自定义测试环境,请跳到步骤 13。

    1. 如果您要编辑自定义测试环境中的默认测试规范,请选择 Edit (编辑) 以更新默认 YAML 规范。

    2. 如果您更改了测试规范,请选择另存为新版本以更新测试规范。

  13. 如果您要配置视频录制或性能数据捕获选项,请选择 Advanced Configuration (高级配置)

    1. 选择启用视频记录以在测试期间启用视频记录。

    2. 选择启用应用程序性能数据捕获以启用从设备捕获性能数据。

    注意

    如果您有私有设备,还将显示特定于私有设备的配置

  14. 选择下一步

  15. Select devices (选择设备) 页面上,执行下列操作之一:

    • 要选择内置设备池以对其运行测试,请为 Device pool (设备池) 选择 Top Devices (主要设备)

    • 要创建您自己的设备池以对其运行测试,请按照创建设备池中的说明操作,然后返回到此页面。

    • 如果您在前面创建了自己的设备池,请为 Device pool (设备池) 选择您的设备池。

    有关更多信息,请参阅 AWS Device Farm 中的设备支持

  16. 选择 下一步

  17. Specify device state (指定设备状态) 页面上:

    • 要为 Device Farm 提供其他将在运行期间使用的数据,请在添加额外数据旁边选择选择文件,然后浏览到并选择包含这些数据的 .zip 文件。

    • 要安装 Device Farm 将在运行期间使用的其他应用程序,请在安装其他应用程序旁边选择选择文件,然后浏览到并选择包含该应用程序的 .apk 或 .ipa 文件。为您要安装的其他应用程序重复此操作。在上传应用程序之后,您可以拖放应用程序来更改应用程序的安装顺序。

    • 要指定是否将在运行期间启用 Wi-Fi、蓝牙、GPS 或 NFC,请在 Set radio states (设置电台) 旁边选中相应框。

    • 要为运行预设设备纬度和经度,请在 Device location (设备位置) 旁边输入坐标。

    • 要为运行预设设备区域设置,请在设备区域设置中选择区域设置。

  18. 选择下一步

  19. 当您到达检查和开始运行页面时,可以指定测试运行的执行超时值。如果您使用的是无限制测试槽,请确认选择 Run on unmetered slots (在非计量槽上运行)

  20. 输入值或使用滑块条来更改执行超时值。有关更多信息,请参阅 在 AWS Device Farm 中设置测试运行的执行超时。

  21. 选择 Confirm and start run (确认并启动运行)

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 资源名称(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 用户指南》中的使用预签名 URL 上传对象

  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,请使用 –-project-arn--name--type 参数运行 create-upload

    此示例将创建一个 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 并指定从步骤 1 获取的测试程序包上传的 ARN。

    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 会为每个支持的测试类型维护默认测试规范文件。接下来,您将下载默认测试规范,并使用它来创建自定义测试规范上传,以在自定义测试环境中运行测试。有关更多信息,请参阅 测试环境

  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

    响应中将包含预签名 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 JavaTest NG 测试规范:

    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 CLIschedule-run,请指定:

  • 步骤 1 获取的项目 ARN。

  • 步骤 2 获取的设备池 ARN。

  • 步骤 3 获取的应用程序上传 ARN。

  • 步骤 4 获取的测试程序包上传 ARN。

如果您要在自定义测试环境中运行测试,则还需要从步骤 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 中的测试报告中的说明操作。